mirror of
https://github.com/ivuorinen/tree-sitter-shellspec.git
synced 2026-02-10 01:50:27 +00:00
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:
41
.serena/memories/code_style_conventions.md
Normal file
41
.serena/memories/code_style_conventions.md
Normal 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_`
|
||||
Reference in New Issue
Block a user