Я использую редактор ACE (http://ace.c9.io/) с этим кодом:
<script src="https://cdn.jsdelivr.net/g/ace@1.2.6(min/ace.js+min/theme-cobalt.js+noconflict/mode-yaml.js)"></script>
<script>
function tuneEditor( editor )
{
editor.setTheme( "ace/theme/cobalt" );
editor.getSession().setMode( "ace/mode/yaml" );
editor.setShowPrintMargin( false );
editor.setShowInvisibles( true );
editor.setReadOnly( true );
editor.focus();
}
var contactEditor = ace.edit( "contactEditor" );
tuneEditor( contactEditor );
</script>
Подсветка синтаксиса YAML в редакторе ACE хорошо работает при раскрашивании пары ключей без кавычек, например name: Alice
.
Тем не менее, если значение является строкой, , но начинается с числа, окрашивает часть значения как число, а часть как строку, вместо того, чтобы интерпретировать этот тип данных значения это строка.
Например: title: 123hello
будет содержать 123
в одном цвете и hello
в другом.
Источник истины
Согласно этой официальной странице: http://yaml.org/spec/1.2/spec.html#style/flow/plain:
Простые скаляры не должны начинаться с большинства индикаторов, так как это может привести к неоднозначности с другими конструкциями YAML.
Т.е .: единственное ограничение для "простого скаляра" (то есть: без кавычек) - не начинать с "индикаторов" (например, :
, |
и т. Д.). Здесь ничего не сказано, не начиная с цифр.
Если мы посмотрим на раздел «индикаторы» здесь http://yaml.org/spec/1.2/spec.html#indicator//, мы не увидим, что цифры считаются индикаторами.
Угроза юзабилити: смущает пользователей
Это особенно уродливо для идентификаторов sha1 и подобных ситуаций, как на этом изображении. Это очень смущает моих пользователей:
Вопрос
- Как сделать так, чтобы редактор ace делал подсветку этого синтаксиса так, чтобы отображалась раскраска только одним цветом в качестве полного значения?