feat: implement complete tree-sitter-shellspec grammar with comprehensive testing

- Add full ShellSpec grammar extending tree-sitter-bash
- Support all ShellSpec constructs: Describe, Context, It, hooks, utilities
- Include Data block parsing with statements and argument styles
- Add 61 comprehensive test cases covering real-world patterns
- Implement optimized GitHub workflows with CI/CD automation
- Configure complete development tooling (linting, formatting, pre-commit)
- Add comprehensive documentation and contribution guidelines
- Optimize grammar conflicts to zero warnings
- Support editor integration for Neovim, VS Code, Emacs

Breaking Changes:
- Initial release, no previous API to break

BREAKING CHANGE: Initial implementation of tree-sitter-shellspec grammar

# Conflicts:
#	.github/workflows/codeql.yml
#	.github/workflows/pr-lint.yml
#	.pre-commit-config.yaml

# Conflicts:
#	.github/workflows/pr-lint.yml

# Conflicts:
#	.github/workflows/pr-lint.yml
This commit is contained in:
2025-09-12 18:18:08 +03:00
parent 12d20a17b4
commit c8ba576b4e
77 changed files with 433271 additions and 242 deletions

View File

@@ -0,0 +1,41 @@
# Code Style and Conventions
## EditorConfig Rules
All files follow `.editorconfig` specifications:
- **Charset**: UTF-8
- **Line endings**: LF (Unix style)
- **Indentation**: 2 spaces (no tabs except Makefiles)
- **Max line length**: 160 characters
- **Final newline**: Required
- **Trim trailing whitespace**: Yes (except .md files)
## JavaScript/Grammar Conventions
- Use 2-space indentation
- JSDoc comments for file headers
- TypeScript reference comments for tree-sitter DSL
- Semicolons and consistent formatting
- Descriptive field names in grammar rules
## Grammar Design Patterns
- Use `prec.right(1, seq(...))` for block structures
- Handle conflicts explicitly in the `conflicts` array
- Extend original bash rules with `choice(original, new_rules)`
- Use `field()` for semantic labeling of important parts
- Block patterns: `BlockType description statements End`
## File Organization
- `grammar.js`: Main grammar definition
- `src/`: Generated parser files (don't edit manually)
- Configuration files in root directory
- GitHub workflows in `.github/workflows/`
## Naming Conventions
- Snake_case for grammar rule names
- Descriptive names for block types and fields
- Prefix ShellSpec-specific rules with `shellspec_`