Ошибка подсветки синтаксиса YAML в редакторе Ace для строки без кавычек, начинающейся с цифры - PullRequest
0 голосов
/ 04 ноября 2018

Я использую редактор 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 и подобных ситуаций, как на этом изображении. Это очень смущает моих пользователей:

enter image description here

Вопрос

  • Как сделать так, чтобы редактор ace делал подсветку этого синтаксиса так, чтобы отображалась раскраска только одним цветом в качестве полного значения?

1 Ответ

0 голосов
/ 04 ноября 2018

Это исправлено как ошибка ... но, похоже, jsdeliver не позволяет легко получить ссылки для более новых версий. Я использовал v1.2.6, а последний v1.4.1

Изменение

<script src="https://cdn.jsdelivr.net/g/ace@1.2.6(min/ace.js+min/theme-cobalt.js+noconflict/mode-yaml.js)"></script>

для

<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/ace.js" integrity="sha256-kCykSp9wgrszaIBZpbagWbvnsHKXo4noDEi6ra6Y43w=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/theme-cobalt.js" integrity="sha256-OEJvWvZJvQ8cFFLk43d1UF5DHqWdikG1n8CJQSP70TA=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.1/mode-yaml.js" integrity="sha256-95xNUgbfIXvRXJezV53+JM5HPO6PnJ+wZ7/GwdesKAE=" crossorigin="anonymous"></script>

сделал трюк:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...