release: Storybook v0.2.0 - Major syntax and features update
BREAKING CHANGES: - Relationship syntax now requires blocks for all participants - Removed self/other perspective blocks from relationships - Replaced 'guard' keyword with 'if' for behavior tree decorators Language Features: - Add tree-sitter grammar with improved if/condition disambiguation - Add comprehensive tutorial and reference documentation - Add SBIR v0.2.0 binary format specification - Add resource linking system for behaviors and schedules - Add year-long schedule patterns (day, season, recurrence) - Add behavior tree enhancements (named nodes, decorators) Documentation: - Complete tutorial series (9 chapters) with baker family examples - Complete reference documentation for all language features - SBIR v0.2.0 specification with binary format details - Added locations and institutions documentation Examples: - Convert all examples to baker family scenario - Add comprehensive working examples Tooling: - Zed extension with LSP integration - Tree-sitter grammar for syntax highlighting - Build scripts and development tools Version Updates: - Main package: 0.1.0 → 0.2.0 - Tree-sitter grammar: 0.1.0 → 0.2.0 - Zed extension: 0.1.0 → 0.2.0 - Storybook editor: 0.1.0 → 0.2.0
This commit is contained in:
89
storybook-editor/assets/Storybook.sublime-syntax
Normal file
89
storybook-editor/assets/Storybook.sublime-syntax
Normal file
@@ -0,0 +1,89 @@
|
||||
%YAML 1.2
|
||||
---
|
||||
name: Storybook
|
||||
file_extensions:
|
||||
- sb
|
||||
- storybook
|
||||
scope: source.storybook
|
||||
|
||||
contexts:
|
||||
main:
|
||||
# Comments
|
||||
- match: '//!.*$'
|
||||
scope: comment.line.documentation.storybook
|
||||
- match: '//.*$'
|
||||
scope: comment.line.double-slash.storybook
|
||||
|
||||
# Prose blocks
|
||||
- match: '^(\s*)(---\w*)$'
|
||||
captures:
|
||||
2: keyword.control.prose.storybook
|
||||
push: prose_block
|
||||
|
||||
# Declaration keywords
|
||||
- match: '\b(species|character|behavior|template|use|from)\b'
|
||||
scope: keyword.declaration.storybook
|
||||
|
||||
# Control flow keywords
|
||||
- match: '\b(for|where|if|else|match|with)\b'
|
||||
scope: keyword.control.storybook
|
||||
|
||||
# Boolean literals
|
||||
- match: '\b(true|false)\b'
|
||||
scope: constant.language.boolean.storybook
|
||||
|
||||
# Numeric literals
|
||||
- match: '\b\d+(\.\d+)?\b'
|
||||
scope: constant.numeric.storybook
|
||||
|
||||
# Time/Duration literals
|
||||
- match: '\b\d+[hms]\b'
|
||||
scope: constant.numeric.time.storybook
|
||||
|
||||
# String literals
|
||||
- match: '"'
|
||||
scope: punctuation.definition.string.begin.storybook
|
||||
push: double_quoted_string
|
||||
|
||||
# Field names (before colon)
|
||||
- match: '^\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*(:)'
|
||||
captures:
|
||||
1: variable.other.member.storybook
|
||||
2: punctuation.separator.storybook
|
||||
|
||||
# Range operator
|
||||
- match: '\.\.'
|
||||
scope: keyword.operator.range.storybook
|
||||
|
||||
# Operators
|
||||
- match: '[+\-*/%<>=!&|]'
|
||||
scope: keyword.operator.storybook
|
||||
|
||||
# Punctuation
|
||||
- match: '[{}()\[\],;]'
|
||||
scope: punctuation.storybook
|
||||
|
||||
# Type names and identifiers (capitalized)
|
||||
- match: '\b[A-Z][a-zA-Z0-9_]*\b'
|
||||
scope: entity.name.type.storybook
|
||||
|
||||
# Regular identifiers
|
||||
- match: '\b[a-z_][a-zA-Z0-9_]*\b'
|
||||
scope: variable.other.storybook
|
||||
|
||||
prose_block:
|
||||
- meta_scope: string.unquoted.prose.storybook
|
||||
- match: '^(\s*)(---)$'
|
||||
captures:
|
||||
2: keyword.control.prose.storybook
|
||||
pop: true
|
||||
- match: '.*$'
|
||||
scope: string.unquoted.prose.storybook
|
||||
|
||||
double_quoted_string:
|
||||
- meta_scope: string.quoted.double.storybook
|
||||
- match: '\\.'
|
||||
scope: constant.character.escape.storybook
|
||||
- match: '"'
|
||||
scope: punctuation.definition.string.end.storybook
|
||||
pop: true
|
||||
Reference in New Issue
Block a user