runnableExamples: correctly handle multiline string litterals (#14492)
* runnableExamples: correctly handle multiline string litterals * address comments: improve doc comments + variable namings
This commit is contained in:
parent
0db148163b
commit
0a27cca4b5
5 changed files with 168 additions and 5 deletions
|
|
@ -198,6 +198,8 @@ function main() {
|
|||
title="low[T: Ordinal | enum | range](x: T): T"><wbr />low<span class="attachedType"></span></a></li>
|
||||
<li><a class="reference" href="#low2%2CT"
|
||||
title="low2[T: Ordinal | enum | range](x: T): T"><wbr />low2<span class="attachedType"></span></a></li>
|
||||
<li><a class="reference" href="#tripleStrLitTest"
|
||||
title="tripleStrLitTest()"><wbr />triple<wbr />Str<wbr />Lit<wbr />Test<span class="attachedType"></span></a></li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
|
@ -594,6 +596,49 @@ the c printf. etc.
|
|||
<p><strong class="examples_text">Example:</strong></p>
|
||||
<pre class="listing"><span class="Keyword">discard</span><span class="Whitespace"> </span><span class="StringLit">"in low2"</span></pre>
|
||||
|
||||
</dd>
|
||||
<a id="tripleStrLitTest"></a>
|
||||
<dt><pre><span class="Keyword">proc</span> <a href="#tripleStrLitTest"><span class="Identifier">tripleStrLitTest</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
|
||||
<dd>
|
||||
|
||||
|
||||
<p><strong class="examples_text">Example:</strong></p>
|
||||
<pre class="listing"><span class="Comment">## mullitline string litterals are tricky as their indentation can span</span><span class="Whitespace">
|
||||
</span><span class="Comment">## below that of the runnableExamples</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s1a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">"""
|
||||
should appear at indent 0
|
||||
at indent 2
|
||||
at indent 0
|
||||
"""</span><span class="Whitespace">
|
||||
</span><span class="Comment"># make sure this works too</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s1b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">"""start at same line
|
||||
at indent 2
|
||||
at indent 0
|
||||
"""</span><span class="Whitespace"> </span><span class="Comment"># comment after</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s2</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">"""sandwich """</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s3</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">""""""</span><span class="Whitespace">
|
||||
</span><span class="Keyword">when</span><span class="Whitespace"> </span><span class="Identifier">false</span><span class="Punctuation">:</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s5</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">"""
|
||||
in s5 """</span><span class="Whitespace">
|
||||
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s3b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">[</span><span class="LongStringLit">"""
|
||||
%!? #[...] # inside a multiline ...
|
||||
"""</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="StringLit">"foo"</span><span class="Punctuation">]</span><span class="Whitespace">
|
||||
|
||||
</span><span class="Comment">## make sure handles trailing spaces</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s4</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">"""
|
||||
"""</span><span class="Whitespace">
|
||||
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s5</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">""" x
|
||||
"""</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s6</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">""" ""
|
||||
"""</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s7</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="LongStringLit">""""""""""</span><span class="Whitespace">
|
||||
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">s8</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">[</span><span class="LongStringLit">""""""""""</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="LongStringLit">"""
|
||||
"""</span><span class="Whitespace"> </span><span class="Punctuation">]</span><span class="Whitespace">
|
||||
</span><span class="Keyword">discard</span><span class="Whitespace">
|
||||
</span><span class="Comment"># should be in</span></pre>
|
||||
|
||||
</dd>
|
||||
|
||||
</dl></div>
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ c_printf testproject.html#c_printf,cstring testproject: c_printf(frmt: cstring):
|
|||
c_nonexistant testproject.html#c_nonexistant,cstring testproject: c_nonexistant(frmt: cstring): cint
|
||||
low testproject.html#low,T testproject: low[T: Ordinal | enum | range](x: T): T
|
||||
low2 testproject.html#low2,T testproject: low2[T: Ordinal | enum | range](x: T): T
|
||||
tripleStrLitTest testproject.html#tripleStrLitTest testproject: tripleStrLitTest()
|
||||
bar testproject.html#bar.m testproject: bar(): untyped
|
||||
z16 testproject.html#z16.m testproject: z16()
|
||||
z18 testproject.html#z18.m testproject: z18(): int
|
||||
|
|
|
|||
|
|
@ -213,6 +213,10 @@ function main() {
|
|||
<li><a class="reference external"
|
||||
data-doc-search-tag="testproject: testNimDocTrailingExample()" href="testproject.html#testNimDocTrailingExample.t">testproject: testNimDocTrailingExample()</a></li>
|
||||
</ul></dd>
|
||||
<dt><a name="tripleStrLitTest" href="#tripleStrLitTest"><span>tripleStrLitTest:</span></a></dt><dd><ul class="simple">
|
||||
<li><a class="reference external"
|
||||
data-doc-search-tag="testproject: tripleStrLitTest()" href="testproject.html#tripleStrLitTest">testproject: tripleStrLitTest()</a></li>
|
||||
</ul></dd>
|
||||
<dt><a name="z1" href="#z1"><span>z1:</span></a></dt><dd><ul class="simple">
|
||||
<li><a class="reference external"
|
||||
data-doc-search-tag="testproject: z1(): Foo" href="testproject.html#z1">testproject: z1(): Foo</a></li>
|
||||
|
|
|
|||
|
|
@ -207,6 +207,46 @@ when true: # tests RST inside comments
|
|||
runnableExamples:
|
||||
discard "in low2"
|
||||
|
||||
when true: # multiline string litterals
|
||||
proc tripleStrLitTest*() =
|
||||
runnableExamples:
|
||||
## mullitline string litterals are tricky as their indentation can span
|
||||
## below that of the runnableExamples
|
||||
let s1a = """
|
||||
should appear at indent 0
|
||||
at indent 2
|
||||
at indent 0
|
||||
"""
|
||||
# make sure this works too
|
||||
let s1b = """start at same line
|
||||
at indent 2
|
||||
at indent 0
|
||||
""" # comment after
|
||||
let s2 = """sandwich """
|
||||
let s3 = """"""
|
||||
when false:
|
||||
let s5 = """
|
||||
in s5 """
|
||||
|
||||
let s3b = ["""
|
||||
%!? #[...] # inside a multiline ...
|
||||
""", "foo"]
|
||||
|
||||
## make sure handles trailing spaces
|
||||
let s4 = """
|
||||
"""
|
||||
|
||||
let s5 = """ x
|
||||
"""
|
||||
let s6 = """ ""
|
||||
"""
|
||||
let s7 = """"""""""
|
||||
let s8 = ["""""""""", """
|
||||
""" ]
|
||||
discard
|
||||
# should be in
|
||||
# should be out
|
||||
|
||||
when true: # (most) macros
|
||||
macro bar*(): untyped =
|
||||
result = newStmtList()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue