Open
Description
(Continuation of #13 . See also #21 )
Problem
#16 added (block)
, but these don't "nest".
Preamble from #12 :
In order for
:help
to render as something other than fixed-width, hard-wrapped text, (e.g. for HTML format) the parser needs to give some basic hints about structure besides "line". Sometimes (often) the:help
source needs to be fixed (because it can't be reasonably parsed), but in other common cases it's probably reasonable for tree-sitter-vimdoc to provide some basic idea of:
Example of nested (indented) blocks
"Nested blocks" simply means blocks of text that have common indentation. In the following example,
- we can't parse the
Number 123...
block but if we can at least recognize that it is indented, then the HTML result can wrap that block in<pre>
so that it is readable. - the
*octal*
line doesn't share indentation so it should be parsed as(line)
(or possibly introduce a new(tags_heading)
node?). - it may be reasonable for us to require blank lines between these blocks.
The Number and String types are converted automatically, depending on how they
are used.
Conversion from a Number to a String is by making the ASCII representation of
the Number. Examples:
Number 123 --> String "123" ~
Number 0 --> String "0" ~
Number -1 --> String "-1" ~
*octal*
Conversion from a String to a Number is done by converting the first digits to
a number. Hexadecimal "0xf9", Octal "017" or "0o17", and Binary "0b10"
numbers are recognized. If the String doesn't start with digits, the result
is zero. Examples:
String "456" --> Number 456 ~
String "6bar" --> Number 6 ~
String "foo" --> Number 0 ~
String "0xf1" --> Number 241 ~
String "0100" --> Number 64 ~
String "0o100" --> Number 64 ~
String "0b101" --> Number 5 ~
String "-8" --> Number -8 ~
String "+8" --> Number 0 ~
To force conversion from String to Number, add zero to it: >
:echo "0100" + 0
< 64 ~
To avoid a leading zero to cause octal conversion, or for using a different
base, use |str2nr()|.