D14760: YAML: fix keys, add numbers and other improvements

Nibaldo González noreply at phabricator.kde.org
Sun Aug 12 10:43:34 BST 2018


nibags created this revision.
Restricted Application added projects: Kate, Frameworks.
Restricted Application added subscribers: kde-frameworks-devel, kwrite-devel.
nibags requested review of this revision.

REVISION SUMMARY
  Fix some reported bugs and update the syntax for YAML 1.2:
  
  - Fixes the end of a Key:
  
  BUG: 366586
  
  Any line of text before `:` is highlighted as Key, which is very general and gives rise to errors. As mentioned in the bug, in a line like the following, everything is considered as a Key, until the last `:`
  {image1}
  
  To fix this, it's necessary to add a space/end-line to the end of a Key `KEY:(?=\s|$)`. 
  The YAML documentation mentions: *Mappings use a colon and space (“: ”) to mark each key: value pair* [1].
  
  - Fix delimiter characters in a Key:
  
  BUG: 389636
  
  On the next line, it is highlighted as a Key: `{b:`
  
  Within hashes and lists, the characters `{`, `[` and `,` should not be highlighted as Keys, since these are delimiting characters that mark the start/end of an element.
  
  - Allow inline attributes in lists: `[key1: value, key2: value, ...]`
  
  Previously, when writing a key, the entire line was highlighted as a value, now the value ends with "," or "]" (in the example, `3, 2, !!ddfgdf` is Key and `sdsd 1, takeoff]}` is value).
  
  For this, the context "attribute-pre-inline" is separated in the contexts "list-attribute-pre-inline" and "hash-attribute-pre-inline"; and "attribute-inline" is separated in "list-attribute-inline" and "hash-attribute-inline". The only difference is that one ends with "}" and another with "]".
  
  - Highlight values in Key with multiple lines. That is, when ":" is the first character of a line.
  
  - Highlight references, aliases, strings, etc. in hashes. Before, the hashes only support content of the type `key: value`. This improves highlighting in keys with many lines.
  
  - Add mapping-key operator: `?`. In the current highlight, references, aliases, sequences and dash after "?" are not highlighted, that is corrected. This also applies to lists and hashes.
  
  In Keys, the operator "?" now it is highlighted with the "Operator" attribute.
  
  - Add escapes [2]. Single quote strings admit only one type of escape: `''`. Also, allow escapes in keys quoted. Ex: `"key\"a": value` or 'key''a': value`.
  
  - Add Integers [4] & Floats [5] [3] (the documentation shows the exact regular expressions).
  
  - Add booleans [7] & improves the detection of null (add missing null keywords) [6]. These are highlighted with "dsChar".
  
  NOTE: Booleans, null, integers & floats require specific delimiters to avoid incorrect highlighting (for example, not highlight numbers present in sentences or dates). For that reason I use several RegExpr instead of keywords or other rules.
  
  **References:**
  
  - [1] YAML Specs, Collections: http://yaml.org/spec/1.2/spec.html#id2759963
  - [2] YAML Specs, Escaped Characters: http://yaml.org/spec/1.2/spec.html#id2776092
  - [3] YAML Specs, Integer & Float: http://yaml.org/spec/1.2/spec.html#id2803828
  - [4] Integer Language-Independent Type for YAML™ Version 1.1: http://yaml.org/type/int.html
  - [5] Floating-Point Language-Independent Type for YAML™ Version 1.1: http://yaml.org/type/float.html
  - [6] Null Language-Independent Type for YAML™ Version 1.1: http://yaml.org/type/null.html
  - [7] Boolean Language-Independent Type for YAML™ Version 1.1: http://yaml.org/type/bool.html

REPOSITORY
  R216 Syntax Highlighting

BRANCH
  fix-yaml

REVISION DETAIL
  https://phabricator.kde.org/D14760

AFFECTED FILES
  autotests/folding/test.yaml.fold
  autotests/html/test.yaml.html
  autotests/input/test.yaml
  autotests/reference/test.yaml.ref
  data/syntax/yaml.xml

To: nibags
Cc: kwrite-devel, kde-frameworks-devel, michaelh, kevinapavew, ngraham, bruns, demsking, cullmann, sars, dhaumann
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kwrite-devel/attachments/20180812/d8d6ba14/attachment-0001.html>


More information about the KWrite-Devel mailing list