codnar 0.1.76 → 0.1.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ChangeLog CHANGED
@@ -1,5 +1,6 @@
1
1
  2012-04-13 Oren Ben-Kiki <github-oren@ben-kiki.org>
2
2
 
3
+ * Further mangle the "Module" structure comment.
3
4
  * Handle Haddock structured module comments.
4
5
 
5
6
  2012-03-25 Oren Ben-Kiki <github-oren@ben-kiki.org>
@@ -683,7 +683,7 @@ number of Git commits by running <code>rake version</code>.
683
683
  </tr>
684
684
  </table>
685
685
  <pre class='ruby code syntax'>
686
- <span class="Type">VERSION</span> = <span class="Special">&quot;</span><span class="Constant">0.1.76</span><span class="Special">&quot;</span>
686
+ <span class="Type">VERSION</span> = <span class="Special">&quot;</span><span class="Constant">0.1.77</span><span class="Special">&quot;</span>
687
687
 
688
688
  end
689
689
  </pre>
@@ -3377,6 +3377,27 @@ Convert Haddoc to HTML.
3377
3377
  <pre class='ruby code syntax'>
3378
3378
  <span class="PreProc">class</span> <span class="Type">Haddock</span>
3379
3379
 
3380
+ </pre>
3381
+ <table class='layout'>
3382
+ <tr>
3383
+ <td class='indentation'>
3384
+ <pre> </pre>
3385
+ </td>
3386
+ <td class='html'>
3387
+ <div class='rdoc comment markup'>
3388
+ <p>
3389
+ The cache used for speeding up recomputing the same syntax highlighting
3390
+ HTML.
3391
+ </p>
3392
+ </div>
3393
+ </td>
3394
+ </tr>
3395
+ </table>
3396
+ <pre class='ruby code syntax'>
3397
+ <span class="Identifier">@cache</span> = <span class="Type">Cache</span>.new(<span class="Special">&quot;</span><span class="Constant">.codnar-cache</span><span class="Special">&quot;</span>) <span class="Statement">do</span> |<span class="Identifier">data</span>|
3398
+ <span class="Type">Haddock</span>.uncached_to_html(data.haddock)
3399
+ <span class="Statement">end</span>
3400
+
3380
3401
  </pre>
3381
3402
  <table class='layout'>
3382
3403
  <tr>
@@ -3393,7 +3414,7 @@ Process a Haddock String and return the resulting HTML.
3393
3414
  </tr>
3394
3415
  </table>
3395
3416
  <pre class='ruby code syntax'>
3396
- <span class="PreProc">def</span> <span class="Constant">self</span>.<span class="Identifier">to_html</span>(haddock)
3417
+ <span class="PreProc">def</span> <span class="Constant">self</span>.<span class="Identifier">uncached_to_html</span>(haddock)
3397
3418
  with_temporary_directory <span class="Statement">do</span> |<span class="Identifier">path</span>|
3398
3419
  write_temporary_file(path, haddock)
3399
3420
  run_haddock(path)
@@ -3402,6 +3423,30 @@ Process a Haddock String and return the resulting HTML.
3402
3423
  <span class="Statement">end</span>
3403
3424
  <span class="PreProc">end</span>
3404
3425
 
3426
+ </pre>
3427
+ <table class='layout'>
3428
+ <tr>
3429
+ <td class='indentation'>
3430
+ <pre> </pre>
3431
+ </td>
3432
+ <td class='html'>
3433
+ <div class='rdoc comment markup'>
3434
+ <p>
3435
+ Since Haddock is as slow as molasses to start up, we cache the results of
3436
+ highlighting the syntax of each code fragment in a directory called
3437
+ <code>.codnar-cache</code>, which can appear at the current working
3438
+ directory or in any of its parents.
3439
+ </p>
3440
+ </div>
3441
+ </td>
3442
+ </tr>
3443
+ </table>
3444
+ <pre class='ruby code syntax'>
3445
+ <span class="PreProc">def</span> <span class="Constant">self</span>.<span class="Identifier">to_html</span>(haddock)
3446
+ data = { <span class="Special">&quot;</span><span class="Constant">haddock</span><span class="Special">&quot;</span> =&gt; haddock }
3447
+ <span class="Statement">return</span> <span class="Identifier">@cache</span>[data]
3448
+ <span class="PreProc">end</span>
3449
+
3405
3450
  <span class="Statement">protected</span>
3406
3451
 
3407
3452
  </pre>
@@ -4055,7 +4100,7 @@ HTML.
4055
4100
  </tr>
4056
4101
  </table>
4057
4102
  <pre class='ruby code syntax'>
4058
- <span class="Identifier">@cache</span> = <span class="Type">Cache</span>.new(<span class="Special">&quot;</span><span class="Constant">.gvim-cache</span><span class="Special">&quot;</span>) <span class="Statement">do</span> |<span class="Identifier">data</span>|
4103
+ <span class="Identifier">@cache</span> = <span class="Type">Cache</span>.new(<span class="Special">&quot;</span><span class="Constant">.codnar-cache</span><span class="Special">&quot;</span>) <span class="Statement">do</span> |<span class="Identifier">data</span>|
4059
4104
  <span class="Type">GVim</span>.uncached_syntax_to_html(data.text, data.syntax, data.commands)
4060
4105
  <span class="Statement">end</span>
4061
4106
 
@@ -4115,8 +4160,8 @@ environment so there is no theoretical limit to what can be done here.
4115
4160
  <p>
4116
4161
  Since GVim is as slow as molasses to start up, we cache the results of
4117
4162
  highlighting the syntax of each code fragment in a directory called
4118
- <code>.gvim-cache</code>, which can appear at the current working directory
4119
- or in any of its parents.
4163
+ <code>.codnar-cache</code>, which can appear at the current working
4164
+ directory or in any of its parents.
4120
4165
  </p>
4121
4166
  </div>
4122
4167
  </td>
@@ -4203,6 +4248,7 @@ only command-line arguments.
4203
4248
  <span class="Identifier">ENV</span>[<span class="Special">&quot;</span><span class="Constant">DISPLAY</span><span class="Special">&quot;</span>] = <span class="Special">&quot;</span><span class="Constant">none</span><span class="Special">&quot;</span> <span class="Comment"># Otherwise the X11 server *does* affect the result.</span>
4204
4249
  command = [
4205
4250
  <span class="Special">&quot;</span><span class="Constant">gvim</span><span class="Special">&quot;</span>,
4251
+ <span class="Special">&quot;</span><span class="Constant">-s</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant">/dev/null</span><span class="Special">&quot;</span>, <span class="Comment"># Magic: avoids a sleep of 2 seconds in VIM startup!</span>
4206
4252
  <span class="Special">&quot;</span><span class="Constant">-f</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant">-X</span><span class="Special">&quot;</span>,
4207
4253
  <span class="Special">&quot;</span><span class="Constant">-u</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant">none</span><span class="Special">&quot;</span>,
4208
4254
  <span class="Special">&quot;</span><span class="Constant">-U</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant">none</span><span class="Special">&quot;</span>,
@@ -6352,7 +6398,7 @@ comments).
6352
6398
  <span class="Statement">return</span> {
6353
6399
  <span class="Special">&quot;</span><span class="Constant">syntax</span><span class="Special">&quot;</span> =&gt; {
6354
6400
  <span class="Special">&quot;</span><span class="Constant">patterns</span><span class="Special">&quot;</span> =&gt; {
6355
- <span class="Special">&quot;</span><span class="Constant">comment_</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">&quot;</span><span class="Constant">^(</span><span class="Special">\\</span><span class="Constant">s*)</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Constant">(?!!)</span><span class="Special">\\</span><span class="Constant">s?(.*)$</span><span class="Special">&quot;</span> },
6401
+ <span class="Special">&quot;</span><span class="Constant">comment_</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">'</span><span class="Constant">^(\s*)</span><span class="Special">'</span> + prefix + <span class="Special">'</span><span class="Constant">(?!!)</span><span class="Special">\\</span><span class="Constant">s?(.*)$</span><span class="Special">'</span> },
6356
6402
  },
6357
6403
  <span class="Special">&quot;</span><span class="Constant">states</span><span class="Special">&quot;</span> =&gt; {
6358
6404
  <span class="Special">&quot;</span><span class="Constant">start</span><span class="Special">&quot;</span> =&gt; {
@@ -6585,8 +6631,8 @@ Ruby coverage somehow barfs if we inline this. Go figure.
6585
6631
  <span class="Statement">return</span> {
6586
6632
  <span class="Special">&quot;</span><span class="Constant">syntax</span><span class="Special">&quot;</span> =&gt; {
6587
6633
  <span class="Special">&quot;</span><span class="Constant">patterns</span><span class="Special">&quot;</span> =&gt; {
6588
- <span class="Special">&quot;</span><span class="Constant">comment_start_</span><span class="Special">#{</span>start_prefix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">&quot;</span><span class="Constant">^(</span><span class="Special">\\</span><span class="Constant">s*)</span><span class="Special">#{</span>start_prefix<span class="Special">}</span><span class="Special">\\</span><span class="Constant">s?(.*)$</span><span class="Special">&quot;</span> },
6589
- <span class="Special">&quot;</span><span class="Constant">comment_continue_</span><span class="Special">#{</span>continue_prefix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">&quot;</span><span class="Constant">^(</span><span class="Special">\\</span><span class="Constant">s*)</span><span class="Special">#{</span>continue_prefix<span class="Special">}</span><span class="Special">\\</span><span class="Constant">s?(.*)$</span><span class="Special">&quot;</span> },
6634
+ <span class="Special">&quot;</span><span class="Constant">comment_start_</span><span class="Special">#{</span>start_prefix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">'</span><span class="Constant">^(\s*)</span><span class="Special">'</span> + start_prefix+ <span class="Special">'</span><span class="Constant">\s?(.*)$</span><span class="Special">'</span> },
6635
+ <span class="Special">&quot;</span><span class="Constant">comment_continue_</span><span class="Special">#{</span>continue_prefix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">'</span><span class="Constant">^(\s*)</span><span class="Special">'</span> + continue_prefix + <span class="Special">'</span><span class="Constant">\s?(.*)$</span><span class="Special">'</span> },
6590
6636
  },
6591
6637
  <span class="Special">&quot;</span><span class="Constant">states</span><span class="Special">&quot;</span> =&gt; {
6592
6638
  <span class="Special">&quot;</span><span class="Constant">start</span><span class="Special">&quot;</span> =&gt; {
@@ -6830,7 +6876,7 @@ need to escape special characters such as “*”.
6830
6876
  </tr>
6831
6877
  </table>
6832
6878
  <pre class='ruby code syntax'>
6833
- <span class="Statement">return</span> <span class="Type">Comments</span>.delimited_comments(<span class="Special">&quot;</span><span class="Constant">/</span><span class="Special">\\</span><span class="Constant">*</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant"> </span><span class="Special">\\</span><span class="Constant">*</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant"> </span><span class="Special">\\</span><span class="Constant">*/</span><span class="Special">&quot;</span>)
6879
+ <span class="Statement">return</span> <span class="Type">Comments</span>.delimited_comments(<span class="Special">'</span><span class="Constant">/\*</span><span class="Special">'</span>, <span class="Special">'</span><span class="Constant"> \*</span><span class="Special">'</span>, <span class="Special">'</span><span class="Constant"> \*/</span><span class="Special">'</span>)
6834
6880
  end
6835
6881
 
6836
6882
  </pre>
@@ -6854,6 +6900,27 @@ comments.
6854
6900
  <span class="Statement">return</span> <span class="Type">Comments</span>.delimited_comments(<span class="Special">&quot;</span><span class="Constant">&lt;!--</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant"> -</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant">--&gt;</span><span class="Special">&quot;</span>)
6855
6901
  <span class="Statement">end</span>
6856
6902
 
6903
+ </pre>
6904
+ <table class='layout'>
6905
+ <tr>
6906
+ <td class='indentation'>
6907
+ <pre></pre>
6908
+ </td>
6909
+ <td class='html'>
6910
+ <div class='rdoc comment markup'>
6911
+ <p>
6912
+ Classify delimited Elixir style comments. These start with `@doc
6913
+ “”“`, end with `”“”`, and have no prefix for the inner lines.
6914
+ </p>
6915
+ </div>
6916
+ </td>
6917
+ </tr>
6918
+ </table>
6919
+ <pre class='ruby code syntax'>
6920
+ <span class="Type">CLASSIFY_ELIXIR_COMMENTS</span> = <span class="Statement">lambda</span> <span class="Statement">do</span>
6921
+ <span class="Statement">return</span> <span class="Type">Comments</span>.delimited_comments(<span class="Special">'</span><span class="Constant">@[a-z]*doc\s+&quot;&quot;&quot;</span><span class="Special">'</span>, <span class="Constant">nil</span>, <span class="Special">'</span><span class="Constant">&quot;&quot;&quot;</span><span class="Special">'</span>)
6922
+ <span class="Statement">end</span>
6923
+
6857
6924
  </pre>
6858
6925
  <table class='layout'>
6859
6926
  <tr>
@@ -6877,10 +6944,10 @@ delimited start prefix, inner line prefix and final suffix (e.g., “/*”,
6877
6944
  <span class="Statement">return</span> {
6878
6945
  <span class="Special">&quot;</span><span class="Constant">syntax</span><span class="Special">&quot;</span> =&gt; {
6879
6946
  <span class="Special">&quot;</span><span class="Constant">patterns</span><span class="Special">&quot;</span> =&gt; {
6880
- <span class="Special">&quot;</span><span class="Constant">comment_prefix_</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">&quot;</span><span class="Constant">^(</span><span class="Special">\\</span><span class="Constant">s*)</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Constant">(?!!)</span><span class="Special">\\</span><span class="Constant">s?(.*)$</span><span class="Special">&quot;</span> },
6881
- <span class="Special">&quot;</span><span class="Constant">comment_inner_</span><span class="Special">#{</span>inner<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">&quot;</span><span class="Constant">^(</span><span class="Special">\\</span><span class="Constant">s*)</span><span class="Special">#{</span>inner<span class="Special">}</span><span class="Special">\\</span><span class="Constant">s?(.*)$</span><span class="Special">&quot;</span> },
6882
- <span class="Special">&quot;</span><span class="Constant">comment_suffix_</span><span class="Special">#{</span>suffix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">&quot;</span><span class="Constant">^(</span><span class="Special">\\</span><span class="Constant">s*)</span><span class="Special">#{</span>suffix<span class="Special">}</span><span class="Special">\\</span><span class="Constant">s*$</span><span class="Special">&quot;</span> },
6883
- <span class="Special">&quot;</span><span class="Constant">comment_line_</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Constant">_</span><span class="Special">#{</span>suffix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">&quot;</span><span class="Constant">^(</span><span class="Special">\\</span><span class="Constant">s*)</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Constant">(?!!)</span><span class="Special">\s</span><span class="Constant">?(.*?)</span><span class="Special">\s</span><span class="Constant">*</span><span class="Special">#{</span>suffix<span class="Special">}</span><span class="Special">\\</span><span class="Constant">s*$</span><span class="Special">&quot;</span> },
6947
+ <span class="Special">&quot;</span><span class="Constant">comment_prefix_</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">'</span><span class="Constant">^(\s*)</span><span class="Special">'</span> + prefix + <span class="Special">'</span><span class="Constant">(?!!)\s?(.*)$</span><span class="Special">'</span> },
6948
+ <span class="Special">&quot;</span><span class="Constant">comment_inner_</span><span class="Special">#{</span>inner<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; inner.nil? ? <span class="Special">&quot;</span><span class="Constant">^()(.*)$</span><span class="Special">&quot;</span> : <span class="Special">'</span><span class="Constant">^(\s*)</span><span class="Special">'</span> + inner + <span class="Special">'</span><span class="Constant">\s?(.*)$</span><span class="Special">'</span> },
6949
+ <span class="Special">&quot;</span><span class="Constant">comment_suffix_</span><span class="Special">#{</span>suffix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">'</span><span class="Constant">^(\s*)</span><span class="Special">'</span> + suffix + <span class="Special">'</span><span class="Constant">\s*$</span><span class="Special">'</span> },
6950
+ <span class="Special">&quot;</span><span class="Constant">comment_line_</span><span class="Special">#{</span>prefix<span class="Special">}</span><span class="Constant">_</span><span class="Special">#{</span>suffix<span class="Special">}</span><span class="Special">&quot;</span> =&gt; { <span class="Special">&quot;</span><span class="Constant">regexp</span><span class="Special">&quot;</span> =&gt; <span class="Special">'</span><span class="Constant">^(\s*)</span><span class="Special">'</span> + prefix + <span class="Special">'</span><span class="Constant">(?!!)\s?(.*?)\s*</span><span class="Special">'</span> + suffix + <span class="Special">'</span><span class="Constant">\s*$</span><span class="Special">'</span> },
6884
6951
  },
6885
6952
  <span class="Special">&quot;</span><span class="Constant">states</span><span class="Special">&quot;</span> =&gt; {
6886
6953
  <span class="Special">&quot;</span><span class="Constant">start</span><span class="Special">&quot;</span> =&gt; {
@@ -6987,6 +7054,10 @@ need to escape special characters such as “{” and “|”.
6987
7054
  check_any_comment([ <span class="Special">&quot;</span><span class="Constant">&lt;!--</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant"> -</span><span class="Special">&quot;</span>, <span class="Special">&quot;</span><span class="Constant">--&gt;</span><span class="Special">&quot;</span> ], <span class="Type">Codnar</span>::<span class="Type">Configuration</span>::<span class="Type">CLASSIFY_HTML_COMMENTS</span>.call)
6988
7055
  <span class="PreProc">end</span>
6989
7056
 
7057
+ <span class="PreProc">def</span> <span class="Identifier">test_delimited_comments</span>
7058
+ check_any_comment([ <span class="Special">'</span><span class="Constant">@doc &quot;&quot;&quot;</span><span class="Special">'</span>, <span class="Constant">nil</span>, <span class="Special">'</span><span class="Constant">&quot;&quot;&quot;</span><span class="Special">'</span> ], <span class="Type">Codnar</span>::<span class="Type">Configuration</span>::<span class="Type">CLASSIFY_ELIXIR_COMMENTS</span>.call)
7059
+ <span class="PreProc">end</span>
7060
+
6990
7061
  <span class="Statement">protected</span>
6991
7062
 
6992
7063
  </pre>
@@ -7036,21 +7107,21 @@ The “&lt;&lt;&lt;” will be replaced by the start comment prefix, the
7036
7107
 
7037
7108
  def check_any_comment(patterns, configuration)
7038
7109
  prefix, inner, suffix = patterns
7039
- check_split_file(ANY_COMMENT_CODE.gsub(&quot;<span class="Identifier">&lt;</span><span class="Error">&lt;</span><span class="Identifier">&lt;</span><span class="Constant">&quot;, prefix).gsub(&quot;</span><span class="Identifier">&gt;</span><span class="Error">&gt;&gt;</span>&quot;, suffix).gsub(&quot;<span class="Identifier">&lt;&gt;</span><span class="Constant">&quot;, inner),</span>
7040
- <span class="Constant"> Codnar::Configuration::CLASSIFY_SOURCE_CODE.call(&quot;</span><span class="Identifier">any</span><span class="Constant">&quot;),</span>
7041
- <span class="Constant"> Codnar::Configuration::FORMAT_PRE_COMMENTS,</span>
7042
- <span class="Constant"> configuration) do |path|</span>
7043
- <span class="Constant"> [ {</span>
7044
- <span class="Constant"> &quot;</span><span class="Type">name</span><span class="Constant">&quot; =&gt; path,</span>
7045
- <span class="Constant"> &quot;</span><span class="Identifier">locations</span><span class="Constant">&quot; =&gt; [ { &quot;</span><span class="Identifier">file</span><span class="Constant">&quot; =&gt; path, &quot;</span><span class="Identifier">line</span><span class="Constant">&quot; =&gt; 1 } ],</span>
7046
- <span class="Constant"> &quot;</span><span class="Identifier">containers</span><span class="Constant">&quot; =&gt; [],</span>
7047
- <span class="Constant"> &quot;</span><span class="Identifier">contained</span><span class="Constant">&quot; =&gt; [],</span>
7048
- <span class="Constant"> &quot;</span><span class="Identifier">html</span><span class="Constant">&quot; =&gt; ANY_COMMENT_HTML.gsub(&quot;</span><span class="Identifier">/--</span><span class="Constant">&quot;, prefix).gsub(&quot;</span><span class="Identifier">--/</span><span class="Constant">&quot;, suffix).gsub(&quot;</span><span class="Identifier"> -</span><span class="Constant">&quot;, inner),</span>
7049
- <span class="Constant"> } ]</span>
7050
- <span class="Constant"> end</span>
7051
- <span class="Constant"> end</span>
7110
+ check_split_file(ANY_COMMENT_CODE.gsub(&quot;<span class="Identifier">&lt;</span><span class="Error">&lt;</span><span class="Identifier">&lt;</span><span class="Constant">&quot;, prefix).gsub(&quot;</span><span class="Identifier">&gt;</span><span class="Error">&gt;&gt;</span>&quot;, suffix).gsub(inner ? &quot;<span class="Identifier">&lt;&gt;</span><span class="Constant">&quot; : &quot;</span><span class="Identifier">&lt;&gt;</span> &quot;, inner || &quot;&quot;),
7111
+ Codnar::Configuration::CLASSIFY_SOURCE_CODE.call(&quot;any&quot;),
7112
+ Codnar::Configuration::FORMAT_PRE_COMMENTS,
7113
+ configuration) do |path|
7114
+ [ {
7115
+ &quot;name&quot; =<span class="Error">&gt;</span> path,
7116
+ &quot;locations&quot; =<span class="Error">&gt;</span> [ { &quot;file&quot; =<span class="Error">&gt;</span> path, &quot;line&quot; =<span class="Error">&gt;</span> 1 } ],
7117
+ &quot;containers&quot; =<span class="Error">&gt;</span> [],
7118
+ &quot;contained&quot; =<span class="Error">&gt;</span> [],
7119
+ &quot;html&quot; =<span class="Error">&gt;</span> ANY_COMMENT_HTML,
7120
+ } ]
7121
+ end
7122
+ end
7052
7123
 
7053
- <span class="Constant">end</span>
7124
+ end
7054
7125
  </pre>
7055
7126
  </div>
7056
7127
  </div>
@@ -9927,7 +9998,6 @@ convenient list of all of Codnar's parts and dependencies:
9927
9998
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/version</span><span class="Special">&quot;</span>
9928
9999
 
9929
10000
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/coderay</span><span class="Special">&quot;</span>
9930
- <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/haddock</span><span class="Special">&quot;</span>
9931
10001
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/hash_extensions</span><span class="Special">&quot;</span>
9932
10002
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/markdown</span><span class="Special">&quot;</span>
9933
10003
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/rdoc</span><span class="Special">&quot;</span>
@@ -9939,6 +10009,7 @@ convenient list of all of Codnar's parts and dependencies:
9939
10009
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/graphviz</span><span class="Special">&quot;</span>
9940
10010
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/grouper</span><span class="Special">&quot;</span>
9941
10011
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/gvim</span><span class="Special">&quot;</span>
10012
+ <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/haddock</span><span class="Special">&quot;</span>
9942
10013
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/merger</span><span class="Special">&quot;</span>
9943
10014
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/split</span><span class="Special">&quot;</span>
9944
10015
  <span class="PreProc">require</span> <span class="Special">&quot;</span><span class="Constant">codnar/reader</span><span class="Special">&quot;</span>
@@ -22,7 +22,6 @@ require "olag/string_unindent"
22
22
  require "codnar/version"
23
23
 
24
24
  require "codnar/coderay"
25
- require "codnar/haddock"
26
25
  require "codnar/hash_extensions"
27
26
  require "codnar/markdown"
28
27
  require "codnar/rdoc"
@@ -34,6 +33,7 @@ require "codnar/formatter"
34
33
  require "codnar/graphviz"
35
34
  require "codnar/grouper"
36
35
  require "codnar/gvim"
36
+ require "codnar/haddock"
37
37
  require "codnar/merger"
38
38
  require "codnar/split"
39
39
  require "codnar/reader"
@@ -40,7 +40,7 @@ module Codnar
40
40
  return {
41
41
  "syntax" => {
42
42
  "patterns" => {
43
- "comment_#{prefix}" => { "regexp" => "^(\\s*)#{prefix}(?!!)\\s?(.*)$" },
43
+ "comment_#{prefix}" => { "regexp" => '^(\s*)' + prefix + '(?!!)\\s?(.*)$' },
44
44
  },
45
45
  "states" => {
46
46
  "start" => {
@@ -92,8 +92,8 @@ module Codnar
92
92
  return {
93
93
  "syntax" => {
94
94
  "patterns" => {
95
- "comment_start_#{start_prefix}" => { "regexp" => "^(\\s*)#{start_prefix}\\s?(.*)$" },
96
- "comment_continue_#{continue_prefix}" => { "regexp" => "^(\\s*)#{continue_prefix}\\s?(.*)$" },
95
+ "comment_start_#{start_prefix}" => { "regexp" => '^(\s*)' + start_prefix+ '\s?(.*)$' },
96
+ "comment_continue_#{continue_prefix}" => { "regexp" => '^(\s*)' + continue_prefix + '\s?(.*)$' },
97
97
  },
98
98
  "states" => {
99
99
  "start" => {
@@ -140,7 +140,7 @@ module Codnar
140
140
  CLASSIFY_C_COMMENTS = lambda do
141
141
  # Since the prefix/inner/suffix passed to the configuration are regexps,
142
142
  # we need to escape special characters such as "*".
143
- return Comments.delimited_comments("/\\*", " \\*", " \\*/")
143
+ return Comments.delimited_comments('/\*', ' \*', ' \*/')
144
144
  end
145
145
 
146
146
  # Classify delimited HTML ("<!--", " -", "-->") style comments.
@@ -148,6 +148,12 @@ module Codnar
148
148
  return Comments.delimited_comments("<!--", " -", "-->")
149
149
  end
150
150
 
151
+ # Classify delimited Elixir style comments. These start with `@doc """`,
152
+ # end with `"""`, and have no prefix for the inner lines.
153
+ CLASSIFY_ELIXIR_COMMENTS = lambda do
154
+ return Comments.delimited_comments('@[a-z]*doc\s+"""', nil, '"""')
155
+ end
156
+
151
157
  # Configuration for classifying lines to comments and code based on a
152
158
  # delimited start prefix, inner line prefix and final suffix (e.g., "/*", "
153
159
  # *", " */" for C-style comments or "<!--", " -", "-->" for HTML style
@@ -156,10 +162,10 @@ module Codnar
156
162
  return {
157
163
  "syntax" => {
158
164
  "patterns" => {
159
- "comment_prefix_#{prefix}" => { "regexp" => "^(\\s*)#{prefix}(?!!)\\s?(.*)$" },
160
- "comment_inner_#{inner}" => { "regexp" => "^(\\s*)#{inner}\\s?(.*)$" },
161
- "comment_suffix_#{suffix}" => { "regexp" => "^(\\s*)#{suffix}\\s*$" },
162
- "comment_line_#{prefix}_#{suffix}" => { "regexp" => "^(\\s*)#{prefix}(?!!)\s?(.*?)\s*#{suffix}\\s*$" },
165
+ "comment_prefix_#{prefix}" => { "regexp" => '^(\s*)' + prefix + '(?!!)\s?(.*)$' },
166
+ "comment_inner_#{inner}" => { "regexp" => inner.nil? ? "^()(.*)$" : '^(\s*)' + inner + '\s?(.*)$' },
167
+ "comment_suffix_#{suffix}" => { "regexp" => '^(\s*)' + suffix + '\s*$' },
168
+ "comment_line_#{prefix}_#{suffix}" => { "regexp" => '^(\s*)' + prefix + '(?!!)\s?(.*?)\s*' + suffix + '\s*$' },
163
169
  },
164
170
  "states" => {
165
171
  "start" => {
@@ -15,7 +15,7 @@ module Codnar
15
15
 
16
16
  # The cache used for speeding up recomputing the same syntax highlighting
17
17
  # HTML.
18
- @cache = Cache.new(".gvim-cache") do |data|
18
+ @cache = Cache.new(".codnar-cache") do |data|
19
19
  GVim.uncached_syntax_to_html(data.text, data.syntax, data.commands)
20
20
  end
21
21
 
@@ -43,7 +43,7 @@ module Codnar
43
43
  #
44
44
  # Since GVim is as slow as molasses to start up, we cache the results of
45
45
  # highlighting the syntax of each code fragment in a directory called
46
- # <tt>.gvim-cache</tt>, which can appear at the current working directory
46
+ # <tt>.codnar-cache</tt>, which can appear at the current working directory
47
47
  # or in any of its parents.
48
48
  def self.cached_syntax_to_html(text, syntax, commands = [])
49
49
  data = { "text" => text, "syntax" => syntax, "commands" => commands }
@@ -80,6 +80,7 @@ module Codnar
80
80
  ENV["DISPLAY"] = "none" # Otherwise the X11 server *does* affect the result.
81
81
  command = [
82
82
  "gvim",
83
+ "-s", "/dev/null", # Magic: avoids a sleep of 2 seconds in VIM startup!
83
84
  "-f", "-X",
84
85
  "-u", "none",
85
86
  "-U", "none",
@@ -3,8 +3,14 @@ module Codnar
3
3
  # Convert Haddoc to HTML.
4
4
  class Haddock
5
5
 
6
+ # The cache used for speeding up recomputing the same syntax highlighting
7
+ # HTML.
8
+ @cache = Cache.new(".codnar-cache") do |data|
9
+ Haddock.uncached_to_html(data.haddock)
10
+ end
11
+
6
12
  # Process a Haddock String and return the resulting HTML.
7
- def self.to_html(haddock)
13
+ def self.uncached_to_html(haddock)
8
14
  with_temporary_directory do |path|
9
15
  write_temporary_file(path, haddock)
10
16
  run_haddock(path)
@@ -13,6 +19,15 @@ module Codnar
13
19
  end
14
20
  end
15
21
 
22
+ # Since Haddock is as slow as molasses to start up, we cache the results of
23
+ # highlighting the syntax of each code fragment in a directory called
24
+ # <tt>.codnar-cache</tt>, which can appear at the current working
25
+ # directory or in any of its parents.
26
+ def self.to_html(haddock)
27
+ data = { "haddock" => haddock }
28
+ return @cache[data]
29
+ end
30
+
16
31
  protected
17
32
 
18
33
  # Run a block using a temporary directory, that is then removed. TODO: This
@@ -3,6 +3,6 @@ module Codnar
3
3
 
4
4
  # This version number. The third number is automatically updated to track the
5
5
  # number of Git commits by running <tt>rake version</tt>.
6
- VERSION = "0.1.76"
6
+ VERSION = "0.1.77"
7
7
 
8
8
  end
@@ -24,6 +24,10 @@ class TestSplitDelimitedCommentsConfigurations < Test::Unit::TestCase
24
24
  check_any_comment([ "<!--", " -", "-->" ], Codnar::Configuration::CLASSIFY_HTML_COMMENTS.call)
25
25
  end
26
26
 
27
+ def test_delimited_comments
28
+ check_any_comment([ '@doc """', nil, '"""' ], Codnar::Configuration::CLASSIFY_ELIXIR_COMMENTS.call)
29
+ end
30
+
27
31
  protected
28
32
 
29
33
  # The "<<<" will be replaced by the start comment prefix,
@@ -56,7 +60,7 @@ protected
56
60
 
57
61
  def check_any_comment(patterns, configuration)
58
62
  prefix, inner, suffix = patterns
59
- check_split_file(ANY_COMMENT_CODE.gsub("<<<", prefix).gsub(">>>", suffix).gsub("<>", inner),
63
+ check_split_file(ANY_COMMENT_CODE.gsub("<<<", prefix).gsub(">>>", suffix).gsub(inner ? "<>" : "<> ", inner || ""),
60
64
  Codnar::Configuration::CLASSIFY_SOURCE_CODE.call("any"),
61
65
  Codnar::Configuration::FORMAT_PRE_COMMENTS,
62
66
  configuration) do |path|
@@ -65,7 +69,7 @@ protected
65
69
  "locations" => [ { "file" => path, "line" => 1 } ],
66
70
  "containers" => [],
67
71
  "contained" => [],
68
- "html" => ANY_COMMENT_HTML.gsub("/--", prefix).gsub("--/", suffix).gsub(" -", inner),
72
+ "html" => ANY_COMMENT_HTML,
69
73
  } ]
70
74
  end
71
75
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codnar
3
3
  version: !ruby/object:Gem::Version
4
- hash: 131
4
+ hash: 129
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 76
10
- version: 0.1.76
9
+ - 77
10
+ version: 0.1.77
11
11
  platform: ruby
12
12
  authors:
13
13
  - Oren Ben-Kiki
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-04-13 00:00:00 Z
18
+ date: 2012-11-30 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: andand
@@ -323,7 +323,7 @@ licenses: []
323
323
  post_install_message:
324
324
  rdoc_options:
325
325
  - --title
326
- - Code Narrator 0.1.76
326
+ - Code Narrator 0.1.77
327
327
  - --main
328
328
  - README.rdoc
329
329
  - --line-numbers