mbolli/tempest-highlight-ron
Composer 安装命令:
composer require mbolli/tempest-highlight-ron
包简介
RON (Readable Object Notation) language support for tempest/highlight — parser-backed, role-aware highlighting of keys, values, numbers, literals, and structure.
README 文档
README
RON (Readable Object Notation) language support for tempest/highlight.
Unlike a regex grammar, this plugin tokenizes with the real RON parser
(mbolli/php-ron), so highlighting is byte-exact and
context-aware: keys are distinguished from values even though RON has no :/= separator,
and repeated-quote strings (''''' , ""a "quoted" phrase"") are spanned correctly.
Installation
composer require mbolli/tempest-highlight-ron
Usage
use Tempest\Highlight\Highlighter; use Mbolli\TempestHighlightRon\RonLanguage; $highlighter = new Highlighter(); $highlighter->addLanguage(new RonLanguage()); echo $highlighter->parse($ron, 'ron');
Registering the language as ron also highlights fenced ```ron blocks in markdown
rendered through tempest/highlight.
What gets highlighted
For example RON like:
users [ {id 100 name Ada roles [admin writer] active true} ] settings {retry {max 3} tags [llm json]}
| RON construct | Role | tempest token | CSS class |
|---|---|---|---|
{ } [ ] |
punctuation | PROPERTY |
hl-property |
| object keys (bare/quoted, elided or braced) | key | KEYWORD |
hl-keyword |
| string values (bare, quoted, repeated-quote) | string | VALUE |
hl-value |
numbers (100, -12.5e+2) |
number | NUMBER |
hl-number |
true / false / null |
literal | LITERAL |
hl-literal |
Because classification comes from the parser, 'true' (quoted) is a string, a key named
true is a key, and a bare 123 in key position stays a key — none are mis-coloured.
How it works
RonLanguage adds five Patterns on top of tempest's base language. Each delegates to
Mbolli\Ron\Ron::tokenize(), which returns role-aware source spans; the spans are handed to
tempest in PREG_OFFSET_CAPTURE shape. Tokenization is memoized per content string, so the
source is lexed once per parse regardless of how many patterns run. Ron::tokenize() is
lenient — malformed RON never throws, it just highlights as much as it can classify.
License
MIT
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-15