mbolli/tempest-highlight-ron 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

Latest Version on Packagist PHP Version Total Downloads PHPStan Level 10 License

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

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-15

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固