mirror of
https://github.com/ivuorinen/tree-sitter-shellspec.git
synced 2026-01-26 11:43:59 +00:00
- 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
1.2 KiB
1.2 KiB
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
conflictsarray - 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 definitionsrc/: 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_