hikidoc 0.0.4 → 0.0.6
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/NEWS +30 -0
- data/NEWS.ja +30 -0
- data/README +1 -0
- data/README.ja +1 -0
- data/Rakefile +6 -82
- data/TextFormattingRules +4 -0
- data/TextFormattingRules.ja +4 -0
- data/hikidoc.gemspec +23 -0
- data/lib/hikidoc.rb +18 -7
- data/test/{test_hikidoc.rb → hikidoc_test.rb} +38 -3
- metadata +69 -57
- data/coverage/index.html +0 -100
- data/coverage/lib-hikidoc_rb.html +0 -1195
- data/test/run-test.rb +0 -13
metadata
CHANGED
@@ -1,81 +1,93 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: hikidoc
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Kazuhiko
|
8
|
+
- SHIBATA Hiroshi
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
date: 2013-02-26 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
17
21
|
type: :development
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version:
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rake
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
description: '''HikiDoc'' is a text-to-HTML conversion tool for web writers.'
|
43
|
+
email:
|
30
44
|
- kazuhiko@fdiary.net
|
31
|
-
|
45
|
+
- shibata.hiroshi@gmail.com
|
46
|
+
executables:
|
32
47
|
- hikidoc
|
33
48
|
extensions: []
|
34
|
-
|
35
49
|
extra_rdoc_files: []
|
36
|
-
|
37
|
-
|
50
|
+
files:
|
51
|
+
- .gitignore
|
38
52
|
- COPYING
|
53
|
+
- Gemfile
|
54
|
+
- NEWS
|
55
|
+
- NEWS.ja
|
39
56
|
- README
|
40
57
|
- README.ja
|
41
58
|
- Rakefile
|
42
59
|
- TextFormattingRules
|
43
60
|
- TextFormattingRules.ja
|
44
61
|
- bin/hikidoc
|
45
|
-
-
|
46
|
-
- coverage/lib-hikidoc_rb.html
|
62
|
+
- hikidoc.gemspec
|
47
63
|
- lib/hikidoc.rb
|
48
64
|
- setup.rb
|
49
|
-
- test/
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
65
|
+
- test/hikidoc_test.rb
|
66
|
+
homepage: https://github.com/hiki/hikidoc
|
67
|
+
licenses:
|
68
|
+
- MIT
|
69
|
+
metadata: {}
|
55
70
|
post_install_message:
|
56
|
-
rdoc_options:
|
57
|
-
|
58
|
-
- lib/hikidoc.rb
|
59
|
-
require_paths:
|
71
|
+
rdoc_options: []
|
72
|
+
require_paths:
|
60
73
|
- lib
|
61
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version:
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
version: "0"
|
72
|
-
version:
|
74
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
73
84
|
requirements: []
|
74
|
-
|
75
|
-
|
76
|
-
rubygems_version: 1.3.4
|
85
|
+
rubyforge_project:
|
86
|
+
rubygems_version: 2.0.0
|
77
87
|
signing_key:
|
78
|
-
specification_version:
|
79
|
-
summary:
|
80
|
-
|
81
|
-
|
88
|
+
specification_version: 4
|
89
|
+
summary: '''HikiDoc'' is a text-to-HTML conversion tool for web writers. HikiDoc allows
|
90
|
+
you to write using an easy-to-read, easy-to-write plain text format, then convert
|
91
|
+
it to structurally valid HTML (or XHTML).'
|
92
|
+
test_files:
|
93
|
+
- test/hikidoc_test.rb
|
data/coverage/index.html
DELETED
@@ -1,100 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
-
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
-
<head>
|
4
|
-
<title>
|
5
|
-
C0 code coverage information
|
6
|
-
</title>
|
7
|
-
<style type='text/css'>
|
8
|
-
body { background-color: rgb(240, 240, 245); }
|
9
|
-
</style>
|
10
|
-
<style type='text/css'>
|
11
|
-
span.cross-ref-title { font-size: 140%; } span.cross-ref a {
|
12
|
-
text-decoration: none; } span.cross-ref { background-color:#f3f7fa;
|
13
|
-
border: 1px dashed #333; margin: 1em; padding: 0.5em; overflow: hidden; }
|
14
|
-
a.crossref-toggle { text-decoration: none; } span.marked0 {
|
15
|
-
background-color: rgb(185, 210, 200); display: block; } span.marked1 {
|
16
|
-
background-color: rgb(190, 215, 205); display: block; } span.inferred0 {
|
17
|
-
background-color: rgb(175, 200, 200); display: block; } span.inferred1 {
|
18
|
-
background-color: rgb(180, 205, 205); display: block; } span.uncovered0 {
|
19
|
-
background-color: rgb(225, 110, 110); display: block; } span.uncovered1 {
|
20
|
-
background-color: rgb(235, 120, 120); display: block; } span.overview {
|
21
|
-
border-bottom: 8px solid black; } div.overview { border-bottom: 8px solid
|
22
|
-
black; } body { font-family: verdana, arial, helvetica; } div.footer {
|
23
|
-
font-size: 68%; margin-top: 1.5em; } h1, h2, h3, h4, h5, h6 {
|
24
|
-
margin-bottom: 0.5em; } h5 { margin-top: 0.5em; } .hidden { display: none;
|
25
|
-
} div.separator { height: 10px; } /* Commented out for better readability,
|
26
|
-
esp. on IE */ /* table tr td, table tr th { font-size: 68%; } td.value
|
27
|
-
table tr td { font-size: 11px; } */ table.percent_graph { height: 12px;
|
28
|
-
border: #808080 1px solid; empty-cells: show; } table.percent_graph
|
29
|
-
td.covered { height: 10px; background: #00f000; } table.percent_graph
|
30
|
-
td.uncovered { height: 10px; background: #e00000; } table.percent_graph
|
31
|
-
td.NA { height: 10px; background: #eaeaea; } table.report {
|
32
|
-
border-collapse: collapse; width: 100%; } table.report td.heading {
|
33
|
-
background: #dcecff; border: #d0d0d0 1px solid; font-weight: bold;
|
34
|
-
text-align: center; } table.report td.heading:hover { background: #c0ffc0;
|
35
|
-
} table.report td.text { border: #d0d0d0 1px solid; } table.report
|
36
|
-
td.value, table.report td.lines_total, table.report td.lines_code {
|
37
|
-
text-align: right; border: #d0d0d0 1px solid; } table.report tr.light {
|
38
|
-
background-color: rgb(240, 240, 245); } table.report tr.dark {
|
39
|
-
background-color: rgb(230, 230, 235); }
|
40
|
-
</style>
|
41
|
-
<script type='text/javascript'>
|
42
|
-
// <![CDATA[ function toggleCode( id ) { if ( document.getElementById )
|
43
|
-
elem = document.getElementById( id ); else if ( document.all ) elem =
|
44
|
-
eval( "document.all." + id ); else return false; elemStyle = elem.style;
|
45
|
-
if ( elemStyle.display != "block" ) { elemStyle.display = "block" } else {
|
46
|
-
elemStyle.display = "none" } return true; } // Make cross-references
|
47
|
-
hidden by default document.writeln( "<style
|
48
|
-
type=\"text/css\">span.cross-ref { display: none }</style>" ) // ]]>
|
49
|
-
</script>
|
50
|
-
</head>
|
51
|
-
<body>
|
52
|
-
<h3>
|
53
|
-
C0 code coverage information
|
54
|
-
</h3>
|
55
|
-
<p>
|
56
|
-
Generated on Tue Aug 12 00:32:09 +0900 2008 with
|
57
|
-
<a href='http://eigenclass.org/hiki/rcov'>
|
58
|
-
rcov 0.8.1.2
|
59
|
-
</a>
|
60
|
-
</p>
|
61
|
-
<hr />
|
62
|
-
<table class='report'> <thead> <tr> <td class='heading'> Name </td> <td
|
63
|
-
class='heading'> Total lines </td> <td class='heading'> Lines of code </td>
|
64
|
-
<td class='heading'> Total coverage </td> <td class='heading'> Code coverage
|
65
|
-
</td> </tr> </thead> <tbody> <tr class='light'> <td> TOTAL </td> <td
|
66
|
-
class='lines_total'> <tt> 902 </tt> </td> <td class='lines_code'> <tt> 721
|
67
|
-
</tt> </td> <td> <table cellspacing='0' align='right' cellpadding='0'> <tr>
|
68
|
-
<td> <tt class='coverage_total'> 90.2% </tt> </td> <td> <table
|
69
|
-
class='percent_graph' cellspacing='0' width='100' cellpadding='0'> <tr> <td
|
70
|
-
class='covered' width='90' /> <td class='uncovered' width='10' /> </tr>
|
71
|
-
</table> </td> </tr> </table> </td> <td> <table cellspacing='0'
|
72
|
-
align='right' cellpadding='0'> <tr> <td> <tt class='coverage_code'> 87.8%
|
73
|
-
</tt> </td> <td> <table class='percent_graph' cellspacing='0'
|
74
|
-
width='100' cellpadding='0'> <tr> <td class='covered' width='88' /> <td
|
75
|
-
class='uncovered' width='12' /> </tr> </table> </td> </tr> </table> </td>
|
76
|
-
</tr> <tr class='dark'> <td> <a href='lib-hikidoc_rb.html'> lib/hikidoc.rb
|
77
|
-
</a> </td> <td class='lines_total'> <tt> 902 </tt> </td> <td
|
78
|
-
class='lines_code'> <tt> 721 </tt> </td> <td> <table cellspacing='0'
|
79
|
-
align='right' cellpadding='0'> <tr> <td> <tt class='coverage_total'> 90.2%
|
80
|
-
</tt> </td> <td> <table class='percent_graph' cellspacing='0'
|
81
|
-
width='100' cellpadding='0'> <tr> <td class='covered' width='90' /> <td
|
82
|
-
class='uncovered' width='10' /> </tr> </table> </td> </tr> </table> </td>
|
83
|
-
<td> <table cellspacing='0' align='right' cellpadding='0'> <tr> <td> <tt
|
84
|
-
class='coverage_code'> 87.8% </tt> </td> <td> <table
|
85
|
-
class='percent_graph' cellspacing='0' width='100' cellpadding='0'> <tr> <td
|
86
|
-
class='covered' width='88' /> <td class='uncovered' width='12' /> </tr>
|
87
|
-
</table> </td> </tr> </table> </td> </tr> </tbody> </table>
|
88
|
-
<hr />
|
89
|
-
<p> Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'> rcov
|
90
|
-
code coverage analysis tool for Ruby </a> version 0.8.1.2. </p>
|
91
|
-
<p>
|
92
|
-
<a href='http://validator.w3.org/check/referer'>
|
93
|
-
<img src='http://www.w3.org/Icons/valid-xhtml11' height='31' alt='Valid XHTML 1.1!' width='88' />
|
94
|
-
</a>
|
95
|
-
<a href='http://jigsaw.w3.org/css-validator/check/referer'>
|
96
|
-
<img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px' />
|
97
|
-
</a>
|
98
|
-
</p>
|
99
|
-
</body>
|
100
|
-
</html>
|
@@ -1,1195 +0,0 @@
|
|
1
|
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
-
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
|
3
|
-
<head>
|
4
|
-
<title>
|
5
|
-
lib/hikidoc.rb - C0 code coverage information
|
6
|
-
</title>
|
7
|
-
<style type='text/css'>
|
8
|
-
body { background-color: rgb(240, 240, 245); }
|
9
|
-
</style>
|
10
|
-
<style type='text/css'>
|
11
|
-
span.cross-ref-title { font-size: 140%; } span.cross-ref a {
|
12
|
-
text-decoration: none; } span.cross-ref { background-color:#f3f7fa;
|
13
|
-
border: 1px dashed #333; margin: 1em; padding: 0.5em; overflow: hidden; }
|
14
|
-
a.crossref-toggle { text-decoration: none; } span.marked0 {
|
15
|
-
background-color: rgb(185, 210, 200); display: block; } span.marked1 {
|
16
|
-
background-color: rgb(190, 215, 205); display: block; } span.inferred0 {
|
17
|
-
background-color: rgb(175, 200, 200); display: block; } span.inferred1 {
|
18
|
-
background-color: rgb(180, 205, 205); display: block; } span.uncovered0 {
|
19
|
-
background-color: rgb(225, 110, 110); display: block; } span.uncovered1 {
|
20
|
-
background-color: rgb(235, 120, 120); display: block; } span.overview {
|
21
|
-
border-bottom: 8px solid black; } div.overview { border-bottom: 8px solid
|
22
|
-
black; } body { font-family: verdana, arial, helvetica; } div.footer {
|
23
|
-
font-size: 68%; margin-top: 1.5em; } h1, h2, h3, h4, h5, h6 {
|
24
|
-
margin-bottom: 0.5em; } h5 { margin-top: 0.5em; } .hidden { display: none;
|
25
|
-
} div.separator { height: 10px; } /* Commented out for better readability,
|
26
|
-
esp. on IE */ /* table tr td, table tr th { font-size: 68%; } td.value
|
27
|
-
table tr td { font-size: 11px; } */ table.percent_graph { height: 12px;
|
28
|
-
border: #808080 1px solid; empty-cells: show; } table.percent_graph
|
29
|
-
td.covered { height: 10px; background: #00f000; } table.percent_graph
|
30
|
-
td.uncovered { height: 10px; background: #e00000; } table.percent_graph
|
31
|
-
td.NA { height: 10px; background: #eaeaea; } table.report {
|
32
|
-
border-collapse: collapse; width: 100%; } table.report td.heading {
|
33
|
-
background: #dcecff; border: #d0d0d0 1px solid; font-weight: bold;
|
34
|
-
text-align: center; } table.report td.heading:hover { background: #c0ffc0;
|
35
|
-
} table.report td.text { border: #d0d0d0 1px solid; } table.report
|
36
|
-
td.value, table.report td.lines_total, table.report td.lines_code {
|
37
|
-
text-align: right; border: #d0d0d0 1px solid; } table.report tr.light {
|
38
|
-
background-color: rgb(240, 240, 245); } table.report tr.dark {
|
39
|
-
background-color: rgb(230, 230, 235); }
|
40
|
-
</style>
|
41
|
-
<script type='text/javascript'>
|
42
|
-
// <![CDATA[ function toggleCode( id ) { if ( document.getElementById )
|
43
|
-
elem = document.getElementById( id ); else if ( document.all ) elem =
|
44
|
-
eval( "document.all." + id ); else return false; elemStyle = elem.style;
|
45
|
-
if ( elemStyle.display != "block" ) { elemStyle.display = "block" } else {
|
46
|
-
elemStyle.display = "none" } return true; } // Make cross-references
|
47
|
-
hidden by default document.writeln( "<style
|
48
|
-
type=\"text/css\">span.cross-ref { display: none }</style>" ) // ]]>
|
49
|
-
</script>
|
50
|
-
<style type='text/css'>
|
51
|
-
span.run0 { background-color: rgb(178, 204, 255); display: block; }
|
52
|
-
span.run1 { background-color: rgb(178, 206, 255); display: block; }
|
53
|
-
span.run2 { background-color: rgb(178, 209, 255); display: block; }
|
54
|
-
span.run3 { background-color: rgb(178, 211, 255); display: block; }
|
55
|
-
span.run4 { background-color: rgb(178, 214, 255); display: block; }
|
56
|
-
span.run5 { background-color: rgb(178, 218, 255); display: block; }
|
57
|
-
span.run6 { background-color: rgb(178, 220, 255); display: block; }
|
58
|
-
span.run7 { background-color: rgb(178, 223, 255); display: block; }
|
59
|
-
span.run8 { background-color: rgb(178, 225, 255); display: block; }
|
60
|
-
span.run9 { background-color: rgb(178, 228, 255); display: block; }
|
61
|
-
span.run10 { background-color: rgb(178, 232, 255); display: block; }
|
62
|
-
span.run11 { background-color: rgb(178, 234, 255); display: block; }
|
63
|
-
span.run12 { background-color: rgb(178, 237, 255); display: block; }
|
64
|
-
span.run13 { background-color: rgb(178, 239, 255); display: block; }
|
65
|
-
span.run14 { background-color: rgb(178, 242, 255); display: block; }
|
66
|
-
span.run15 { background-color: rgb(178, 246, 255); display: block; }
|
67
|
-
span.run16 { background-color: rgb(178, 248, 255); display: block; }
|
68
|
-
span.run17 { background-color: rgb(178, 251, 255); display: block; }
|
69
|
-
span.run18 { background-color: rgb(178, 253, 255); display: block; }
|
70
|
-
span.run19 { background-color: rgb(178, 255, 253); display: block; }
|
71
|
-
span.run20 { background-color: rgb(178, 255, 249); display: block; }
|
72
|
-
span.run21 { background-color: rgb(178, 255, 247); display: block; }
|
73
|
-
span.run22 { background-color: rgb(178, 255, 244); display: block; }
|
74
|
-
span.run23 { background-color: rgb(178, 255, 242); display: block; }
|
75
|
-
span.run24 { background-color: rgb(178, 255, 239); display: block; }
|
76
|
-
span.run25 { background-color: rgb(178, 255, 235); display: block; }
|
77
|
-
span.run26 { background-color: rgb(178, 255, 233); display: block; }
|
78
|
-
span.run27 { background-color: rgb(178, 255, 230); display: block; }
|
79
|
-
span.run28 { background-color: rgb(178, 255, 228); display: block; }
|
80
|
-
span.run29 { background-color: rgb(178, 255, 225); display: block; }
|
81
|
-
span.run30 { background-color: rgb(178, 255, 221); display: block; }
|
82
|
-
span.run31 { background-color: rgb(178, 255, 219); display: block; }
|
83
|
-
span.run32 { background-color: rgb(178, 255, 216); display: block; }
|
84
|
-
span.run33 { background-color: rgb(178, 255, 214); display: block; }
|
85
|
-
span.run34 { background-color: rgb(178, 255, 211); display: block; }
|
86
|
-
span.run35 { background-color: rgb(178, 255, 207); display: block; }
|
87
|
-
span.run36 { background-color: rgb(178, 255, 205); display: block; }
|
88
|
-
span.run37 { background-color: rgb(178, 255, 202); display: block; }
|
89
|
-
span.run38 { background-color: rgb(178, 255, 200); display: block; }
|
90
|
-
span.run39 { background-color: rgb(178, 255, 197); display: block; }
|
91
|
-
span.run40 { background-color: rgb(178, 255, 193); display: block; }
|
92
|
-
span.run41 { background-color: rgb(178, 255, 191); display: block; }
|
93
|
-
span.run42 { background-color: rgb(178, 255, 188); display: block; }
|
94
|
-
span.run43 { background-color: rgb(178, 255, 186); display: block; }
|
95
|
-
span.run44 { background-color: rgb(178, 255, 183); display: block; }
|
96
|
-
span.run45 { background-color: rgb(178, 255, 179); display: block; }
|
97
|
-
span.run46 { background-color: rgb(179, 255, 178); display: block; }
|
98
|
-
span.run47 { background-color: rgb(182, 255, 178); display: block; }
|
99
|
-
span.run48 { background-color: rgb(184, 255, 178); display: block; }
|
100
|
-
span.run49 { background-color: rgb(187, 255, 178); display: block; }
|
101
|
-
span.run50 { background-color: rgb(191, 255, 178); display: block; }
|
102
|
-
span.run51 { background-color: rgb(193, 255, 178); display: block; }
|
103
|
-
span.run52 { background-color: rgb(196, 255, 178); display: block; }
|
104
|
-
span.run53 { background-color: rgb(198, 255, 178); display: block; }
|
105
|
-
span.run54 { background-color: rgb(201, 255, 178); display: block; }
|
106
|
-
span.run55 { background-color: rgb(205, 255, 178); display: block; }
|
107
|
-
span.run56 { background-color: rgb(207, 255, 178); display: block; }
|
108
|
-
span.run57 { background-color: rgb(210, 255, 178); display: block; }
|
109
|
-
span.run58 { background-color: rgb(212, 255, 178); display: block; }
|
110
|
-
span.run59 { background-color: rgb(215, 255, 178); display: block; }
|
111
|
-
span.run60 { background-color: rgb(219, 255, 178); display: block; }
|
112
|
-
span.run61 { background-color: rgb(221, 255, 178); display: block; }
|
113
|
-
span.run62 { background-color: rgb(224, 255, 178); display: block; }
|
114
|
-
span.run63 { background-color: rgb(226, 255, 178); display: block; }
|
115
|
-
span.run64 { background-color: rgb(229, 255, 178); display: block; }
|
116
|
-
span.run65 { background-color: rgb(233, 255, 178); display: block; }
|
117
|
-
span.run66 { background-color: rgb(235, 255, 178); display: block; }
|
118
|
-
span.run67 { background-color: rgb(238, 255, 178); display: block; }
|
119
|
-
span.run68 { background-color: rgb(240, 255, 178); display: block; }
|
120
|
-
span.run69 { background-color: rgb(243, 255, 178); display: block; }
|
121
|
-
span.run70 { background-color: rgb(247, 255, 178); display: block; }
|
122
|
-
span.run71 { background-color: rgb(249, 255, 178); display: block; }
|
123
|
-
span.run72 { background-color: rgb(252, 255, 178); display: block; }
|
124
|
-
span.run73 { background-color: rgb(255, 255, 178); display: block; }
|
125
|
-
span.run74 { background-color: rgb(255, 252, 178); display: block; }
|
126
|
-
span.run75 { background-color: rgb(255, 248, 178); display: block; }
|
127
|
-
span.run76 { background-color: rgb(255, 246, 178); display: block; }
|
128
|
-
span.run77 { background-color: rgb(255, 243, 178); display: block; }
|
129
|
-
span.run78 { background-color: rgb(255, 240, 178); display: block; }
|
130
|
-
span.run79 { background-color: rgb(255, 238, 178); display: block; }
|
131
|
-
span.run80 { background-color: rgb(255, 234, 178); display: block; }
|
132
|
-
span.run81 { background-color: rgb(255, 232, 178); display: block; }
|
133
|
-
span.run82 { background-color: rgb(255, 229, 178); display: block; }
|
134
|
-
span.run83 { background-color: rgb(255, 226, 178); display: block; }
|
135
|
-
span.run84 { background-color: rgb(255, 224, 178); display: block; }
|
136
|
-
span.run85 { background-color: rgb(255, 220, 178); display: block; }
|
137
|
-
span.run86 { background-color: rgb(255, 218, 178); display: block; }
|
138
|
-
span.run87 { background-color: rgb(255, 215, 178); display: block; }
|
139
|
-
span.run88 { background-color: rgb(255, 212, 178); display: block; }
|
140
|
-
span.run89 { background-color: rgb(255, 210, 178); display: block; }
|
141
|
-
span.run90 { background-color: rgb(255, 206, 178); display: block; }
|
142
|
-
span.run91 { background-color: rgb(255, 204, 178); display: block; }
|
143
|
-
span.run92 { background-color: rgb(255, 201, 178); display: block; }
|
144
|
-
span.run93 { background-color: rgb(255, 198, 178); display: block; }
|
145
|
-
span.run94 { background-color: rgb(255, 196, 178); display: block; }
|
146
|
-
span.run95 { background-color: rgb(255, 192, 178); display: block; }
|
147
|
-
span.run96 { background-color: rgb(255, 189, 178); display: block; }
|
148
|
-
span.run97 { background-color: rgb(255, 187, 178); display: block; }
|
149
|
-
span.run98 { background-color: rgb(255, 184, 178); display: block; }
|
150
|
-
span.run99 { background-color: rgb(255, 182, 178); display: block; }
|
151
|
-
span.run100 { background-color: rgb(255, 178, 178); display: block; }
|
152
|
-
</style>
|
153
|
-
</head>
|
154
|
-
<body>
|
155
|
-
<h3>
|
156
|
-
C0 code coverage information
|
157
|
-
</h3>
|
158
|
-
<p>
|
159
|
-
Generated on Tue Aug 12 00:32:09 +0900 2008 with
|
160
|
-
<a href='http://eigenclass.org/hiki/rcov'>
|
161
|
-
rcov 0.8.1.2
|
162
|
-
</a>
|
163
|
-
</p>
|
164
|
-
<hr />
|
165
|
-
<pre><span class='marked0'>Code reported as executed by Ruby looks like
|
166
|
-
this... </span><span class='marked1'>and this: this line is also marked as
|
167
|
-
covered. </span><span class='inferred0'>Lines considered as run by rcov, but
|
168
|
-
not reported by Ruby, look like this, </span><span class='inferred1'>and
|
169
|
-
this: these lines were inferred by rcov (using simple heuristics).
|
170
|
-
</span><span class='uncovered0'>Finally, here's a line marked as not
|
171
|
-
executed. </span></pre>
|
172
|
-
<table class='report'> <thead> <tr> <td class='heading'> Name </td> <td
|
173
|
-
class='heading'> Total lines </td> <td class='heading'> Lines of code </td>
|
174
|
-
<td class='heading'> Total coverage </td> <td class='heading'> Code coverage
|
175
|
-
</td> </tr> </thead> <tbody> <tr class='light'> <td> <a
|
176
|
-
href='lib-hikidoc_rb.html'> lib/hikidoc.rb </a> </td> <td
|
177
|
-
class='lines_total'> <tt> 902 </tt> </td> <td class='lines_code'> <tt> 721
|
178
|
-
</tt> </td> <td> <table cellspacing='0' align='right' cellpadding='0'> <tr>
|
179
|
-
<td> <tt class='coverage_total'> 90.2% </tt> </td> <td> <table
|
180
|
-
class='percent_graph' cellspacing='0' width='100' cellpadding='0'> <tr> <td
|
181
|
-
class='covered' width='90' /> <td class='uncovered' width='10' /> </tr>
|
182
|
-
</table> </td> </tr> </table> </td> <td> <table cellspacing='0'
|
183
|
-
align='right' cellpadding='0'> <tr> <td> <tt class='coverage_code'> 87.8%
|
184
|
-
</tt> </td> <td> <table class='percent_graph' cellspacing='0'
|
185
|
-
width='100' cellpadding='0'> <tr> <td class='covered' width='88' /> <td
|
186
|
-
class='uncovered' width='12' /> </tr> </table> </td> </tr> </table> </td>
|
187
|
-
</tr> </tbody> </table><pre><span class="inferred1"><a name="line1"></a> 1 #
|
188
|
-
Copyright (c) 2005, Kazuhiko <kazuhiko@fdiary.net> </span><span
|
189
|
-
class="inferred0"><a name="line2"></a> 2 # Copyright (c) 2007 Minero Aoki
|
190
|
-
</span><span class="inferred1"><a name="line3"></a> 3 # All rights reserved.
|
191
|
-
</span><span class="inferred0"><a name="line4"></a> 4 # </span><span
|
192
|
-
class="inferred1"><a name="line5"></a> 5 # Redistribution and use in source
|
193
|
-
and binary forms, with or without </span><span class="inferred0"><a
|
194
|
-
name="line6"></a> 6 # modification, are permitted provided that the
|
195
|
-
following conditions are </span><span class="inferred1"><a name="line7"></a>
|
196
|
-
7 # met: </span><span class="inferred0"><a name="line8"></a> 8 #
|
197
|
-
</span><span class="inferred1"><a name="line9"></a> 9 # * Redistributions of
|
198
|
-
source code must retain the above copyright </span><span
|
199
|
-
class="inferred0"><a name="line10"></a> 10 # notice, this list of conditions
|
200
|
-
and the following disclaimer. </span><span class="inferred1"><a
|
201
|
-
name="line11"></a> 11 # * Redistributions in binary form must reproduce the
|
202
|
-
above </span><span class="inferred0"><a name="line12"></a> 12 # copyright
|
203
|
-
notice, this list of conditions and the following </span><span
|
204
|
-
class="inferred1"><a name="line13"></a> 13 # disclaimer in the documentation
|
205
|
-
and/or other materials provided </span><span class="inferred0"><a
|
206
|
-
name="line14"></a> 14 # with the distribution. </span><span
|
207
|
-
class="inferred1"><a name="line15"></a> 15 # * Neither the name of the
|
208
|
-
HikiDoc nor the names of its </span><span class="inferred0"><a
|
209
|
-
name="line16"></a> 16 # contributors may be used to endorse or promote
|
210
|
-
products derived </span><span class="inferred1"><a name="line17"></a> 17 #
|
211
|
-
from this software without specific prior written permission. </span><span
|
212
|
-
class="inferred0"><a name="line18"></a> 18 # </span><span
|
213
|
-
class="inferred1"><a name="line19"></a> 19 # THIS SOFTWARE IS PROVIDED BY
|
214
|
-
THE COPYRIGHT HOLDERS AND CONTRIBUTORS </span><span class="inferred0"><a
|
215
|
-
name="line20"></a> 20 # "AS IS" AND ANY EXPRESS OR IMPLIED
|
216
|
-
WARRANTIES, INCLUDING, BUT NOT </span><span class="inferred1"><a
|
217
|
-
name="line21"></a> 21 # LIMITED TO, THE IMPLIED WARRANTIES OF
|
218
|
-
MERCHANTABILITY AND FITNESS FOR </span><span class="inferred0"><a
|
219
|
-
name="line22"></a> 22 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
|
220
|
-
SHALL THE COPYRIGHT </span><span class="inferred1"><a name="line23"></a> 23
|
221
|
-
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
222
|
-
</span><span class="inferred0"><a name="line24"></a> 24 # SPECIAL,
|
223
|
-
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT </span><span
|
224
|
-
class="inferred1"><a name="line25"></a> 25 # LIMITED TO, PROCUREMENT OF
|
225
|
-
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, </span><span class="inferred0"><a
|
226
|
-
name="line26"></a> 26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
227
|
-
CAUSED AND ON ANY </span><span class="inferred1"><a name="line27"></a> 27 #
|
228
|
-
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
229
|
-
</span><span class="inferred0"><a name="line28"></a> 28 # (INCLUDING
|
230
|
-
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE </span><span
|
231
|
-
class="inferred1"><a name="line29"></a> 29 # OF THIS SOFTWARE, EVEN IF
|
232
|
-
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </span><span class="inferred0"><a
|
233
|
-
name="line30"></a> 30 </span><span class="marked1"><a name="line31"></a> 31
|
234
|
-
require "stringio" </span><span class="marked0"><a
|
235
|
-
name="line32"></a> 32 require "strscan" </span><span
|
236
|
-
class="marked1"><a name="line33"></a> 33 require "uri"
|
237
|
-
</span><span class="marked0"><a name="line34"></a> 34 begin </span><span
|
238
|
-
class="marked1"><a name="line35"></a> 35 require
|
239
|
-
"syntax/convertors/html" </span><span class="uncovered0"><a
|
240
|
-
name="line36"></a> 36 rescue LoadError </span><span class="uncovered1"><a
|
241
|
-
name="line37"></a> 37 end </span><span class="inferred0"><a
|
242
|
-
name="line38"></a> 38 </span><span class="marked1"><a name="line39"></a> 39
|
243
|
-
class HikiDoc </span><span class="marked0"><a name="line40"></a> 40 VERSION
|
244
|
-
= "0.0.2" # FIXME </span><span class="inferred1"><a
|
245
|
-
name="line41"></a> 41 </span><span class="marked0"><a name="line42"></a> 42
|
246
|
-
class Error < StandardError </span><span class="inferred1"><a
|
247
|
-
name="line43"></a> 43 end </span><span class="inferred0"><a
|
248
|
-
name="line44"></a> 44 </span><span class="marked1"><a name="line45"></a> 45
|
249
|
-
class UnexpectedError < Error </span><span class="inferred0"><a
|
250
|
-
name="line46"></a> 46 end </span><span class="inferred1"><a
|
251
|
-
name="line47"></a> 47 </span><span class="marked0"><a name="line48"></a> 48
|
252
|
-
def HikiDoc.to_html(src, options = {}) </span><span class="uncovered1"><a
|
253
|
-
name="line49"></a> 49 new(HTMLOutput.new(">"),
|
254
|
-
options).compile(src) </span><span class="uncovered0"><a name="line50"></a>
|
255
|
-
50 end </span><span class="inferred1"><a name="line51"></a> 51 </span><span
|
256
|
-
class="marked0"><a name="line52"></a> 52 def HikiDoc.to_xhtml(src, options =
|
257
|
-
{}) </span><span class="marked1"><a name="line53"></a> 53
|
258
|
-
new(HTMLOutput.new(" />"), options).compile(src) </span><span
|
259
|
-
class="inferred0"><a name="line54"></a> 54 end </span><span
|
260
|
-
class="inferred1"><a name="line55"></a> 55 </span><span class="marked0"><a
|
261
|
-
name="line56"></a> 56 def initialize(output, options = {}) </span><span
|
262
|
-
class="marked1"><a name="line57"></a> 57 @output = output </span><span
|
263
|
-
class="marked0"><a name="line58"></a> 58 @options =
|
264
|
-
default_options.merge(options) </span><span class="marked1"><a
|
265
|
-
name="line59"></a> 59 @header_re = nil </span><span class="marked0"><a
|
266
|
-
name="line60"></a> 60 @level = options[:level] || 1 </span><span
|
267
|
-
class="marked1"><a name="line61"></a> 61 @plugin_syntax =
|
268
|
-
options[:plugin_syntax] || method(:valid_plugin_syntax?) </span><span
|
269
|
-
class="inferred0"><a name="line62"></a> 62 end </span><span
|
270
|
-
class="inferred1"><a name="line63"></a> 63 </span><span class="marked0"><a
|
271
|
-
name="line64"></a> 64 def compile(src) </span><span class="marked1"><a
|
272
|
-
name="line65"></a> 65 @output.reset </span><span class="marked0"><a
|
273
|
-
name="line66"></a> 66 escape_plugin_blocks(src) {|escaped| </span><span
|
274
|
-
class="marked1"><a name="line67"></a> 67 compile_blocks escaped </span><span
|
275
|
-
class="marked0"><a name="line68"></a> 68 @output.finish </span><span
|
276
|
-
class="inferred1"><a name="line69"></a> 69 } </span><span
|
277
|
-
class="inferred0"><a name="line70"></a> 70 end </span><span
|
278
|
-
class="inferred1"><a name="line71"></a> 71 </span><span class="inferred0"><a
|
279
|
-
name="line72"></a> 72 # for backward compatibility </span><span
|
280
|
-
class="marked1"><a name="line73"></a> 73 def to_html </span><span
|
281
|
-
class="uncovered0"><a name="line74"></a> 74 $stderr.puts("warning:
|
282
|
-
HikiDoc#to_html is deprecated. Please use HikiDoc.to_html or
|
283
|
-
HikiDoc.to_xhtml instead.") </span><span class="uncovered1"><a
|
284
|
-
name="line75"></a> 75 self.class.to_html(@output, @options) </span><span
|
285
|
-
class="uncovered0"><a name="line76"></a> 76 end </span><span
|
286
|
-
class="inferred1"><a name="line77"></a> 77 </span><span class="marked0"><a
|
287
|
-
name="line78"></a> 78 private </span><span class="inferred1"><a
|
288
|
-
name="line79"></a> 79 </span><span class="marked0"><a name="line80"></a> 80
|
289
|
-
def default_options </span><span class="inferred1"><a name="line81"></a> 81
|
290
|
-
{ </span><span class="inferred0"><a name="line82"></a> 82
|
291
|
-
:allow_bracket_inline_image => true, </span><span class="inferred1"><a
|
292
|
-
name="line83"></a> 83 :use_wiki_name => true, </span><span
|
293
|
-
class="marked0"><a name="line84"></a> 84 :use_not_wiki_name => true,
|
294
|
-
</span><span class="marked1"><a name="line85"></a> 85 } </span><span
|
295
|
-
class="inferred0"><a name="line86"></a> 86 end </span><span
|
296
|
-
class="inferred1"><a name="line87"></a> 87 </span><span class="inferred0"><a
|
297
|
-
name="line88"></a> 88 # </span><span class="inferred1"><a name="line89"></a>
|
298
|
-
89 # Plugin </span><span class="inferred0"><a name="line90"></a> 90 #
|
299
|
-
</span><span class="inferred1"><a name="line91"></a> 91 </span><span
|
300
|
-
class="marked0"><a name="line92"></a> 92 def valid_plugin_syntax?(code)
|
301
|
-
</span><span class="marked1"><a name="line93"></a> 93 /['"]/ !~
|
302
|
-
code.gsub(/'(?:[^\\']+|\\.)*'|"(?:[^\\"]+|\\.)*"/m,
|
303
|
-
"") </span><span class="inferred0"><a name="line94"></a> 94 end
|
304
|
-
</span><span class="inferred1"><a name="line95"></a> 95 </span><span
|
305
|
-
class="marked0"><a name="line96"></a> 96 def escape_plugin_blocks(text)
|
306
|
-
</span><span class="marked1"><a name="line97"></a> 97 s =
|
307
|
-
StringScanner.new(text) </span><span class="marked0"><a name="line98"></a>
|
308
|
-
98 buf = "" </span><span class="marked1"><a name="line99"></a> 99
|
309
|
-
@plugin_blocks = [] </span><span class="marked0"><a name="line100"></a>100
|
310
|
-
while chunk = s.scan_until(/\{\{/) </span><span class="marked1"><a
|
311
|
-
name="line101"></a>101 tail = chunk[-2, 2] </span><span class="marked0"><a
|
312
|
-
name="line102"></a>102 chunk[-2, 2] = "" </span><span
|
313
|
-
class="marked1"><a name="line103"></a>103 buf << chunk </span><span
|
314
|
-
class="inferred0"><a name="line104"></a>104 # plugin </span><span
|
315
|
-
class="marked1"><a name="line105"></a>105 if block = extract_plugin_block(s)
|
316
|
-
</span><span class="marked0"><a name="line106"></a>106 @plugin_blocks.push
|
317
|
-
block </span><span class="marked1"><a name="line107"></a>107 buf <<
|
318
|
-
"\0#{@plugin_blocks.size - 1}\0" </span><span class="inferred0"><a
|
319
|
-
name="line108"></a>108 else </span><span class="marked1"><a
|
320
|
-
name="line109"></a>109 buf << "{{" </span><span
|
321
|
-
class="inferred0"><a name="line110"></a>110 end </span><span
|
322
|
-
class="inferred1"><a name="line111"></a>111 end </span><span
|
323
|
-
class="marked0"><a name="line112"></a>112 buf << s.rest </span><span
|
324
|
-
class="marked1"><a name="line113"></a>113 yield(buf) </span><span
|
325
|
-
class="inferred0"><a name="line114"></a>114 end </span><span
|
326
|
-
class="inferred1"><a name="line115"></a>115 </span><span class="marked0"><a
|
327
|
-
name="line116"></a>116 def restore_plugin_block(str) </span><span
|
328
|
-
class="marked1"><a name="line117"></a>117 str.gsub(/\0(\d+)\0/) {
|
329
|
-
</span><span class="marked0"><a name="line118"></a>118 "{{" +
|
330
|
-
plugin_block($1.to_i) + "}}" </span><span class="inferred1"><a
|
331
|
-
name="line119"></a>119 } </span><span class="inferred0"><a
|
332
|
-
name="line120"></a>120 end </span><span class="inferred1"><a
|
333
|
-
name="line121"></a>121 </span><span class="marked0"><a
|
334
|
-
name="line122"></a>122 def evaluate_plugin_block(str, buf = nil)
|
335
|
-
</span><span class="marked1"><a name="line123"></a>123 buf ||=
|
336
|
-
@output.container </span><span class="marked0"><a name="line124"></a>124
|
337
|
-
str.split(/(\0\d+\0)/).each do |s| </span><span class="marked1"><a
|
338
|
-
name="line125"></a>125 if s[0, 1] == "\0" and s[-1, 1] ==
|
339
|
-
"\0" </span><span class="marked0"><a name="line126"></a>126 buf
|
340
|
-
<< @output.inline_plugin(plugin_block(s[1..-2].to_i)) </span><span
|
341
|
-
class="inferred1"><a name="line127"></a>127 else </span><span
|
342
|
-
class="marked0"><a name="line128"></a>128 buf << @output.text(s)
|
343
|
-
</span><span class="inferred1"><a name="line129"></a>129 end </span><span
|
344
|
-
class="inferred0"><a name="line130"></a>130 end </span><span
|
345
|
-
class="marked1"><a name="line131"></a>131 buf </span><span
|
346
|
-
class="inferred0"><a name="line132"></a>132 end </span><span
|
347
|
-
class="inferred1"><a name="line133"></a>133 </span><span class="marked0"><a
|
348
|
-
name="line134"></a>134 def plugin_block(id) </span><span class="marked1"><a
|
349
|
-
name="line135"></a>135 @plugin_blocks[id] or raise UnexpectedError,
|
350
|
-
"must not happen: #{id.inspect}" </span><span class="inferred0"><a
|
351
|
-
name="line136"></a>136 end </span><span class="inferred1"><a
|
352
|
-
name="line137"></a>137 </span><span class="marked0"><a
|
353
|
-
name="line138"></a>138 def extract_plugin_block(s) </span><span
|
354
|
-
class="marked1"><a name="line139"></a>139 pos = s.pos </span><span
|
355
|
-
class="marked0"><a name="line140"></a>140 buf = "" </span><span
|
356
|
-
class="marked1"><a name="line141"></a>141 while chunk = s.scan_until(/\}\}/)
|
357
|
-
</span><span class="marked0"><a name="line142"></a>142 buf << chunk
|
358
|
-
</span><span class="marked1"><a name="line143"></a>143
|
359
|
-
buf.chomp!("}}") </span><span class="marked0"><a
|
360
|
-
name="line144"></a>144 if @plugin_syntax.call(buf) </span><span
|
361
|
-
class="marked1"><a name="line145"></a>145 return buf </span><span
|
362
|
-
class="inferred0"><a name="line146"></a>146 end </span><span
|
363
|
-
class="marked1"><a name="line147"></a>147 buf << "}}"
|
364
|
-
</span><span class="inferred0"><a name="line148"></a>148 end </span><span
|
365
|
-
class="marked1"><a name="line149"></a>149 s.pos = pos </span><span
|
366
|
-
class="marked0"><a name="line150"></a>150 nil </span><span
|
367
|
-
class="inferred1"><a name="line151"></a>151 end </span><span
|
368
|
-
class="inferred0"><a name="line152"></a>152 </span><span
|
369
|
-
class="inferred1"><a name="line153"></a>153 # </span><span
|
370
|
-
class="inferred0"><a name="line154"></a>154 # Block Level </span><span
|
371
|
-
class="inferred1"><a name="line155"></a>155 # </span><span
|
372
|
-
class="inferred0"><a name="line156"></a>156 </span><span class="marked1"><a
|
373
|
-
name="line157"></a>157 def compile_blocks(src) </span><span
|
374
|
-
class="marked0"><a name="line158"></a>158 f =
|
375
|
-
LineInput.new(StringIO.new(src)) </span><span class="marked1"><a
|
376
|
-
name="line159"></a>159 while line = f.peek </span><span class="marked0"><a
|
377
|
-
name="line160"></a>160 case line </span><span class="marked1"><a
|
378
|
-
name="line161"></a>161 when COMMENT_RE </span><span class="marked0"><a
|
379
|
-
name="line162"></a>162 f.gets </span><span class="marked1"><a
|
380
|
-
name="line163"></a>163 when HEADER_RE </span><span class="marked0"><a
|
381
|
-
name="line164"></a>164 compile_header f.gets </span><span class="marked1"><a
|
382
|
-
name="line165"></a>165 when HRULE_RE </span><span class="marked0"><a
|
383
|
-
name="line166"></a>166 f.gets </span><span class="marked1"><a
|
384
|
-
name="line167"></a>167 compile_hrule </span><span class="marked0"><a
|
385
|
-
name="line168"></a>168 when LIST_RE </span><span class="marked1"><a
|
386
|
-
name="line169"></a>169 compile_list f </span><span class="marked0"><a
|
387
|
-
name="line170"></a>170 when DLIST_RE </span><span class="marked1"><a
|
388
|
-
name="line171"></a>171 compile_dlist f </span><span class="marked0"><a
|
389
|
-
name="line172"></a>172 when TABLE_RE </span><span class="marked1"><a
|
390
|
-
name="line173"></a>173 compile_table f </span><span class="marked0"><a
|
391
|
-
name="line174"></a>174 when BLOCKQUOTE_RE </span><span class="marked1"><a
|
392
|
-
name="line175"></a>175 compile_blockquote f </span><span class="marked0"><a
|
393
|
-
name="line176"></a>176 when INDENTED_PRE_RE </span><span class="marked1"><a
|
394
|
-
name="line177"></a>177 compile_indented_pre f </span><span
|
395
|
-
class="marked0"><a name="line178"></a>178 when BLOCK_PRE_OPEN_RE
|
396
|
-
</span><span class="marked1"><a name="line179"></a>179 compile_block_pre f
|
397
|
-
</span><span class="inferred0"><a name="line180"></a>180 else </span><span
|
398
|
-
class="marked1"><a name="line181"></a>181 if /^$/ =~ line </span><span
|
399
|
-
class="marked0"><a name="line182"></a>182 f.gets </span><span
|
400
|
-
class="marked1"><a name="line183"></a>183 next </span><span
|
401
|
-
class="inferred0"><a name="line184"></a>184 end </span><span
|
402
|
-
class="marked1"><a name="line185"></a>185 compile_paragraph f </span><span
|
403
|
-
class="inferred0"><a name="line186"></a>186 end </span><span
|
404
|
-
class="inferred1"><a name="line187"></a>187 end </span><span
|
405
|
-
class="inferred0"><a name="line188"></a>188 end </span><span
|
406
|
-
class="inferred1"><a name="line189"></a>189 </span><span class="marked0"><a
|
407
|
-
name="line190"></a>190 COMMENT_RE = %r<\A//> </span><span
|
408
|
-
class="inferred1"><a name="line191"></a>191 </span><span class="marked0"><a
|
409
|
-
name="line192"></a>192 def skip_comments(f) </span><span class="marked1"><a
|
410
|
-
name="line193"></a>193 f.while_match(COMMENT_RE) do |line| </span><span
|
411
|
-
class="inferred0"><a name="line194"></a>194 end </span><span
|
412
|
-
class="inferred1"><a name="line195"></a>195 end </span><span
|
413
|
-
class="inferred0"><a name="line196"></a>196 </span><span class="marked1"><a
|
414
|
-
name="line197"></a>197 HEADER_RE = /\A!+/ </span><span class="inferred0"><a
|
415
|
-
name="line198"></a>198 </span><span class="marked1"><a
|
416
|
-
name="line199"></a>199 def compile_header(line) </span><span
|
417
|
-
class="marked0"><a name="line200"></a>200 @header_re ||= /\A!{1,#{7 -
|
418
|
-
@level}}/ </span><span class="marked1"><a name="line201"></a>201 level =
|
419
|
-
@level + (line.slice!(@header_re).size - 1) </span><span class="marked0"><a
|
420
|
-
name="line202"></a>202 title = strip(line) </span><span class="marked1"><a
|
421
|
-
name="line203"></a>203 @output.headline level, compile_inline(title)
|
422
|
-
</span><span class="inferred0"><a name="line204"></a>204 end </span><span
|
423
|
-
class="inferred1"><a name="line205"></a>205 </span><span class="marked0"><a
|
424
|
-
name="line206"></a>206 HRULE_RE = /\A----$/ </span><span
|
425
|
-
class="inferred1"><a name="line207"></a>207 </span><span class="marked0"><a
|
426
|
-
name="line208"></a>208 def compile_hrule </span><span class="marked1"><a
|
427
|
-
name="line209"></a>209 @output.hrule </span><span class="inferred0"><a
|
428
|
-
name="line210"></a>210 end </span><span class="inferred1"><a
|
429
|
-
name="line211"></a>211 </span><span class="marked0"><a
|
430
|
-
name="line212"></a>212 ULIST = "*" </span><span class="marked1"><a
|
431
|
-
name="line213"></a>213 OLIST = "#" </span><span class="marked0"><a
|
432
|
-
name="line214"></a>214 LIST_RE = /\A#{Regexp.union(ULIST, OLIST)}+/
|
433
|
-
</span><span class="inferred1"><a name="line215"></a>215 </span><span
|
434
|
-
class="marked0"><a name="line216"></a>216 def compile_list(f) </span><span
|
435
|
-
class="marked1"><a name="line217"></a>217 typestack = [] </span><span
|
436
|
-
class="marked0"><a name="line218"></a>218 level = 0 </span><span
|
437
|
-
class="marked1"><a name="line219"></a>219 @output.list_begin </span><span
|
438
|
-
class="marked0"><a name="line220"></a>220 f.while_match(LIST_RE) do |line|
|
439
|
-
</span><span class="marked1"><a name="line221"></a>221 list_type =
|
440
|
-
(line[0,1] == ULIST ? "ul" : "ol") </span><span
|
441
|
-
class="marked0"><a name="line222"></a>222 new_level =
|
442
|
-
line.slice(LIST_RE).size </span><span class="marked1"><a
|
443
|
-
name="line223"></a>223 item = strip(line.sub(LIST_RE, ""))
|
444
|
-
</span><span class="marked0"><a name="line224"></a>224 if new_level >
|
445
|
-
level </span><span class="marked1"><a name="line225"></a>225 (new_level -
|
446
|
-
level).times do </span><span class="marked0"><a name="line226"></a>226
|
447
|
-
typestack.push list_type </span><span class="marked1"><a
|
448
|
-
name="line227"></a>227 @output.list_open list_type </span><span
|
449
|
-
class="marked0"><a name="line228"></a>228 @output.listitem_open </span><span
|
450
|
-
class="inferred1"><a name="line229"></a>229 end </span><span
|
451
|
-
class="marked0"><a name="line230"></a>230 @output.listitem
|
452
|
-
compile_inline(item) </span><span class="marked1"><a name="line231"></a>231
|
453
|
-
elsif new_level < level </span><span class="marked0"><a
|
454
|
-
name="line232"></a>232 (level - new_level).times do </span><span
|
455
|
-
class="marked1"><a name="line233"></a>233 @output.listitem_close
|
456
|
-
</span><span class="marked0"><a name="line234"></a>234 @output.list_close
|
457
|
-
typestack.pop </span><span class="inferred1"><a name="line235"></a>235 end
|
458
|
-
</span><span class="marked0"><a name="line236"></a>236
|
459
|
-
@output.listitem_close </span><span class="marked1"><a
|
460
|
-
name="line237"></a>237 @output.listitem_open </span><span class="marked0"><a
|
461
|
-
name="line238"></a>238 @output.listitem compile_inline(item) </span><span
|
462
|
-
class="marked1"><a name="line239"></a>239 elsif list_type == typestack.last
|
463
|
-
</span><span class="marked0"><a name="line240"></a>240
|
464
|
-
@output.listitem_close </span><span class="marked1"><a
|
465
|
-
name="line241"></a>241 @output.listitem_open </span><span class="marked0"><a
|
466
|
-
name="line242"></a>242 @output.listitem compile_inline(item) </span><span
|
467
|
-
class="inferred1"><a name="line243"></a>243 else </span><span
|
468
|
-
class="marked0"><a name="line244"></a>244 @output.listitem_close
|
469
|
-
</span><span class="marked1"><a name="line245"></a>245 @output.list_close
|
470
|
-
typestack.pop </span><span class="marked0"><a name="line246"></a>246
|
471
|
-
@output.list_open list_type </span><span class="marked1"><a
|
472
|
-
name="line247"></a>247 @output.listitem_open </span><span class="marked0"><a
|
473
|
-
name="line248"></a>248 @output.listitem compile_inline(item) </span><span
|
474
|
-
class="marked1"><a name="line249"></a>249 typestack.push list_type
|
475
|
-
</span><span class="inferred0"><a name="line250"></a>250 end </span><span
|
476
|
-
class="marked1"><a name="line251"></a>251 level = new_level </span><span
|
477
|
-
class="marked0"><a name="line252"></a>252 skip_comments f </span><span
|
478
|
-
class="inferred1"><a name="line253"></a>253 end </span><span
|
479
|
-
class="marked0"><a name="line254"></a>254 level.times do </span><span
|
480
|
-
class="marked1"><a name="line255"></a>255 @output.listitem_close
|
481
|
-
</span><span class="marked0"><a name="line256"></a>256 @output.list_close
|
482
|
-
typestack.pop </span><span class="inferred1"><a name="line257"></a>257 end
|
483
|
-
</span><span class="marked0"><a name="line258"></a>258 @output.list_end
|
484
|
-
</span><span class="inferred1"><a name="line259"></a>259 end </span><span
|
485
|
-
class="inferred0"><a name="line260"></a>260 </span><span class="marked1"><a
|
486
|
-
name="line261"></a>261 DLIST_RE = /\A:/ </span><span class="inferred0"><a
|
487
|
-
name="line262"></a>262 </span><span class="marked1"><a
|
488
|
-
name="line263"></a>263 def compile_dlist(f) </span><span class="marked0"><a
|
489
|
-
name="line264"></a>264 @output.dlist_open </span><span class="marked1"><a
|
490
|
-
name="line265"></a>265 f.while_match(DLIST_RE) do |line| </span><span
|
491
|
-
class="marked0"><a name="line266"></a>266 dt, dd =
|
492
|
-
split_dlitem(line.sub(DLIST_RE, "")) </span><span
|
493
|
-
class="marked1"><a name="line267"></a>267 @output.dlist_item
|
494
|
-
compile_inline(dt), compile_inline(dd) </span><span class="marked0"><a
|
495
|
-
name="line268"></a>268 skip_comments f </span><span class="inferred1"><a
|
496
|
-
name="line269"></a>269 end </span><span class="marked0"><a
|
497
|
-
name="line270"></a>270 @output.dlist_close </span><span class="inferred1"><a
|
498
|
-
name="line271"></a>271 end </span><span class="inferred0"><a
|
499
|
-
name="line272"></a>272 </span><span class="marked1"><a
|
500
|
-
name="line273"></a>273 def split_dlitem(line) </span><span
|
501
|
-
class="marked0"><a name="line274"></a>274 re =
|
502
|
-
/\A((?:#{BRACKET_LINK_RE}|.)*?):/o </span><span class="marked1"><a
|
503
|
-
name="line275"></a>275 if m = re.match(line) </span><span class="marked0"><a
|
504
|
-
name="line276"></a>276 return m[1], m.post_match </span><span
|
505
|
-
class="uncovered1"><a name="line277"></a>277 else </span><span
|
506
|
-
class="uncovered0"><a name="line278"></a>278 return line, ""
|
507
|
-
</span><span class="uncovered1"><a name="line279"></a>279 end </span><span
|
508
|
-
class="uncovered0"><a name="line280"></a>280 end </span><span
|
509
|
-
class="inferred1"><a name="line281"></a>281 </span><span class="marked0"><a
|
510
|
-
name="line282"></a>282 TABLE_RE = /\A\|\|/ </span><span class="inferred1"><a
|
511
|
-
name="line283"></a>283 </span><span class="marked0"><a
|
512
|
-
name="line284"></a>284 def compile_table(f) </span><span class="marked1"><a
|
513
|
-
name="line285"></a>285 lines = [] </span><span class="marked0"><a
|
514
|
-
name="line286"></a>286 f.while_match(TABLE_RE) do |line| </span><span
|
515
|
-
class="marked1"><a name="line287"></a>287 lines.push line </span><span
|
516
|
-
class="marked0"><a name="line288"></a>288 skip_comments f </span><span
|
517
|
-
class="inferred1"><a name="line289"></a>289 end </span><span
|
518
|
-
class="marked0"><a name="line290"></a>290 @output.table_open </span><span
|
519
|
-
class="marked1"><a name="line291"></a>291 lines.each do |line| </span><span
|
520
|
-
class="marked0"><a name="line292"></a>292 @output.table_record_open
|
521
|
-
</span><span class="marked1"><a name="line293"></a>293
|
522
|
-
split_columns(line.sub(TABLE_RE, "")).each do |col| </span><span
|
523
|
-
class="marked0"><a name="line294"></a>294 mid = col.sub!(/\A!/,
|
524
|
-
"") ? "table_head" : "table_data" </span><span
|
525
|
-
class="marked1"><a name="line295"></a>295 span = col.slice!(/\A[\^>]*/)
|
526
|
-
</span><span class="marked0"><a name="line296"></a>296 rs = span_count(span,
|
527
|
-
"^") </span><span class="marked1"><a name="line297"></a>297 cs =
|
528
|
-
span_count(span, ">") </span><span class="marked0"><a
|
529
|
-
name="line298"></a>298 @output.__send__(mid, compile_inline(col), rs, cs)
|
530
|
-
</span><span class="inferred1"><a name="line299"></a>299 end </span><span
|
531
|
-
class="marked0"><a name="line300"></a>300 @output.table_record_close
|
532
|
-
</span><span class="inferred1"><a name="line301"></a>301 end </span><span
|
533
|
-
class="marked0"><a name="line302"></a>302 @output.table_close </span><span
|
534
|
-
class="inferred1"><a name="line303"></a>303 end </span><span
|
535
|
-
class="inferred0"><a name="line304"></a>304 </span><span class="marked1"><a
|
536
|
-
name="line305"></a>305 def split_columns(str) </span><span
|
537
|
-
class="marked0"><a name="line306"></a>306 cols = str.split(/\|\|/)
|
538
|
-
</span><span class="marked1"><a name="line307"></a>307 cols.pop if
|
539
|
-
cols.last.chomp.empty? </span><span class="marked0"><a
|
540
|
-
name="line308"></a>308 cols </span><span class="inferred1"><a
|
541
|
-
name="line309"></a>309 end </span><span class="inferred0"><a
|
542
|
-
name="line310"></a>310 </span><span class="marked1"><a
|
543
|
-
name="line311"></a>311 def span_count(str, ch) </span><span
|
544
|
-
class="marked0"><a name="line312"></a>312 c = str.count(ch) </span><span
|
545
|
-
class="marked1"><a name="line313"></a>313 c == 0 ? nil : c + 1 </span><span
|
546
|
-
class="inferred0"><a name="line314"></a>314 end </span><span
|
547
|
-
class="inferred1"><a name="line315"></a>315 </span><span class="marked0"><a
|
548
|
-
name="line316"></a>316 BLOCKQUOTE_RE = /\A""[ \t]?/ </span><span
|
549
|
-
class="inferred1"><a name="line317"></a>317 </span><span class="marked0"><a
|
550
|
-
name="line318"></a>318 def compile_blockquote(f) </span><span
|
551
|
-
class="marked1"><a name="line319"></a>319 @output.blockquote_open
|
552
|
-
</span><span class="marked0"><a name="line320"></a>320 lines = []
|
553
|
-
</span><span class="marked1"><a name="line321"></a>321
|
554
|
-
f.while_match(BLOCKQUOTE_RE) do |line| </span><span class="marked0"><a
|
555
|
-
name="line322"></a>322 lines.push line.sub(BLOCKQUOTE_RE, "")
|
556
|
-
</span><span class="marked1"><a name="line323"></a>323 skip_comments f
|
557
|
-
</span><span class="inferred0"><a name="line324"></a>324 end </span><span
|
558
|
-
class="marked1"><a name="line325"></a>325 compile_blocks
|
559
|
-
lines.join("") </span><span class="marked0"><a
|
560
|
-
name="line326"></a>326 @output.blockquote_close </span><span
|
561
|
-
class="inferred1"><a name="line327"></a>327 end </span><span
|
562
|
-
class="inferred0"><a name="line328"></a>328 </span><span class="marked1"><a
|
563
|
-
name="line329"></a>329 INDENTED_PRE_RE = /\A[ \t]/ </span><span
|
564
|
-
class="inferred0"><a name="line330"></a>330 </span><span class="marked1"><a
|
565
|
-
name="line331"></a>331 def compile_indented_pre(f) </span><span
|
566
|
-
class="marked0"><a name="line332"></a>332 lines = f.span(INDENTED_PRE_RE)\
|
567
|
-
</span><span class="marked1"><a name="line333"></a>333 .map {|line|
|
568
|
-
rstrip(line.sub(INDENTED_PRE_RE, "")) } </span><span
|
569
|
-
class="marked0"><a name="line334"></a>334 text =
|
570
|
-
restore_plugin_block(lines.join("\n")) </span><span
|
571
|
-
class="marked1"><a name="line335"></a>335
|
572
|
-
@output.preformatted(@output.text(text)) </span><span class="inferred0"><a
|
573
|
-
name="line336"></a>336 end </span><span class="inferred1"><a
|
574
|
-
name="line337"></a>337 </span><span class="marked0"><a
|
575
|
-
name="line338"></a>338 BLOCK_PRE_OPEN_RE = /\A<<<\s*(\w+)?/
|
576
|
-
</span><span class="marked1"><a name="line339"></a>339 BLOCK_PRE_CLOSE_RE =
|
577
|
-
/\A>>>/ </span><span class="inferred0"><a name="line340"></a>340
|
578
|
-
</span><span class="marked1"><a name="line341"></a>341 def
|
579
|
-
compile_block_pre(f) </span><span class="marked0"><a name="line342"></a>342
|
580
|
-
m = BLOCK_PRE_OPEN_RE.match(f.gets) or raise UnexpectedError, "must not
|
581
|
-
happen" </span><span class="marked1"><a name="line343"></a>343 str =
|
582
|
-
restore_plugin_block(f.break(BLOCK_PRE_CLOSE_RE).join.chomp) </span><span
|
583
|
-
class="marked0"><a name="line344"></a>344 f.gets </span><span
|
584
|
-
class="marked1"><a name="line345"></a>345 @output.block_preformatted(str,
|
585
|
-
m[1]) </span><span class="inferred0"><a name="line346"></a>346 end
|
586
|
-
</span><span class="inferred1"><a name="line347"></a>347 </span><span
|
587
|
-
class="marked0"><a name="line348"></a>348 BLANK = /\A$/ </span><span
|
588
|
-
class="marked1"><a name="line349"></a>349 PARAGRAPH_END_RE =
|
589
|
-
Regexp.union(BLANK, </span><span class="inferred0"><a name="line350"></a>350
|
590
|
-
HEADER_RE, HRULE_RE, LIST_RE, DLIST_RE, </span><span class="inferred1"><a
|
591
|
-
name="line351"></a>351 BLOCKQUOTE_RE, TABLE_RE, </span><span
|
592
|
-
class="inferred0"><a name="line352"></a>352 INDENTED_PRE_RE,
|
593
|
-
BLOCK_PRE_OPEN_RE) </span><span class="inferred1"><a name="line353"></a>353
|
594
|
-
</span><span class="marked0"><a name="line354"></a>354 def
|
595
|
-
compile_paragraph(f) </span><span class="marked1"><a name="line355"></a>355
|
596
|
-
lines = f.break(PARAGRAPH_END_RE)\ </span><span class="marked0"><a
|
597
|
-
name="line356"></a>356 .reject {|line| COMMENT_RE =~ line } </span><span
|
598
|
-
class="marked1"><a name="line357"></a>357 if lines.size == 1 and
|
599
|
-
/\A\0(\d+)\0\z/ =~ strip(lines[0]) </span><span class="marked0"><a
|
600
|
-
name="line358"></a>358 @output.block_plugin plugin_block($1.to_i)
|
601
|
-
</span><span class="inferred1"><a name="line359"></a>359 else </span><span
|
602
|
-
class="marked0"><a name="line360"></a>360 line_buffer =
|
603
|
-
@output.container(:paragraph) </span><span class="marked1"><a
|
604
|
-
name="line361"></a>361 lines.each_with_index do |line, i| </span><span
|
605
|
-
class="marked0"><a name="line362"></a>362 buffer = @output.container
|
606
|
-
</span><span class="marked1"><a name="line363"></a>363 line_buffer <<
|
607
|
-
buffer </span><span class="marked0"><a name="line364"></a>364
|
608
|
-
compile_inline(lstrip(line).chomp, buffer) </span><span class="inferred1"><a
|
609
|
-
name="line365"></a>365 end </span><span class="marked0"><a
|
610
|
-
name="line366"></a>366 @output.paragraph(line_buffer) </span><span
|
611
|
-
class="inferred1"><a name="line367"></a>367 end </span><span
|
612
|
-
class="inferred0"><a name="line368"></a>368 end </span><span
|
613
|
-
class="inferred1"><a name="line369"></a>369 </span><span
|
614
|
-
class="inferred0"><a name="line370"></a>370 # </span><span
|
615
|
-
class="inferred1"><a name="line371"></a>371 # Inline Level </span><span
|
616
|
-
class="inferred0"><a name="line372"></a>372 # </span><span
|
617
|
-
class="inferred1"><a name="line373"></a>373 </span><span class="marked0"><a
|
618
|
-
name="line374"></a>374 BRACKET_LINK_RE = /\[\[.+?\]\]/ </span><span
|
619
|
-
class="marked1"><a name="line375"></a>375 URI_RE =
|
620
|
-
/(?:https?|ftp|file|mailto):[A-Za-z0-9;\/?:@&=+$,\-_.!~*\'()#%]+/
|
621
|
-
</span><span class="marked0"><a name="line376"></a>376 WIKI_NAME_RE =
|
622
|
-
/\b(?:[A-Z]+[a-z\d]+){2,}\b/ </span><span class="inferred1"><a
|
623
|
-
name="line377"></a>377 </span><span class="marked0"><a
|
624
|
-
name="line378"></a>378 def inline_syntax_re </span><span class="marked1"><a
|
625
|
-
name="line379"></a>379 if @options[:use_wiki_name] </span><span
|
626
|
-
class="marked0"><a name="line380"></a>380 if @options[:use_not_wiki_name]
|
627
|
-
</span><span class="marked1"><a name="line381"></a>381 /
|
628
|
-
(#{BRACKET_LINK_RE}) </span><span class="uncovered0"><a
|
629
|
-
name="line382"></a>382 | (#{URI_RE}) </span><span class="uncovered1"><a
|
630
|
-
name="line383"></a>383 | (#{MODIFIER_RE}) </span><span class="marked0"><a
|
631
|
-
name="line384"></a>384 | (\^?#{WIKI_NAME_RE}) </span><span
|
632
|
-
class="uncovered1"><a name="line385"></a>385 /xo </span><span
|
633
|
-
class="inferred0"><a name="line386"></a>386 else </span><span
|
634
|
-
class="marked1"><a name="line387"></a>387 / (#{BRACKET_LINK_RE})
|
635
|
-
</span><span class="uncovered0"><a name="line388"></a>388 | (#{URI_RE})
|
636
|
-
</span><span class="uncovered1"><a name="line389"></a>389 | (#{MODIFIER_RE})
|
637
|
-
</span><span class="marked0"><a name="line390"></a>390 | (#{WIKI_NAME_RE})
|
638
|
-
</span><span class="uncovered1"><a name="line391"></a>391 /xo </span><span
|
639
|
-
class="uncovered0"><a name="line392"></a>392 end </span><span
|
640
|
-
class="inferred1"><a name="line393"></a>393 else </span><span
|
641
|
-
class="marked0"><a name="line394"></a>394 / (#{BRACKET_LINK_RE})
|
642
|
-
</span><span class="uncovered1"><a name="line395"></a>395 | (#{URI_RE})
|
643
|
-
</span><span class="marked0"><a name="line396"></a>396 | (#{MODIFIER_RE})
|
644
|
-
</span><span class="uncovered1"><a name="line397"></a>397 /xo </span><span
|
645
|
-
class="uncovered0"><a name="line398"></a>398 end </span><span
|
646
|
-
class="uncovered1"><a name="line399"></a>399 end </span><span
|
647
|
-
class="inferred0"><a name="line400"></a>400 </span><span class="marked1"><a
|
648
|
-
name="line401"></a>401 def compile_inline(str, buf = nil) </span><span
|
649
|
-
class="marked0"><a name="line402"></a>402 buf ||= @output.container
|
650
|
-
</span><span class="marked1"><a name="line403"></a>403 re = inline_syntax_re
|
651
|
-
</span><span class="marked0"><a name="line404"></a>404 pending_str = nil
|
652
|
-
</span><span class="marked1"><a name="line405"></a>405 while m =
|
653
|
-
re.match(str) </span><span class="marked0"><a name="line406"></a>406 str =
|
654
|
-
m.post_match </span><span class="inferred1"><a name="line407"></a>407
|
655
|
-
</span><span class="marked0"><a name="line408"></a>408 link, uri, mod,
|
656
|
-
wiki_name = m[1, 4] </span><span class="marked1"><a name="line409"></a>409
|
657
|
-
if wiki_name and wiki_name[0, 1] == "^" </span><span
|
658
|
-
class="marked0"><a name="line410"></a>410 pending_str = m.pre_match +
|
659
|
-
wiki_name[1..-1] </span><span class="marked1"><a name="line411"></a>411 next
|
660
|
-
</span><span class="inferred0"><a name="line412"></a>412 end </span><span
|
661
|
-
class="inferred1"><a name="line413"></a>413 </span><span class="marked0"><a
|
662
|
-
name="line414"></a>414 pre_str = "#{pending_str}#{m.pre_match}"
|
663
|
-
</span><span class="marked1"><a name="line415"></a>415 pending_str = nil
|
664
|
-
</span><span class="marked0"><a name="line416"></a>416
|
665
|
-
evaluate_plugin_block(pre_str, buf) </span><span class="marked1"><a
|
666
|
-
name="line417"></a>417 compile_inline_markup(buf, link, uri, mod, wiki_name)
|
667
|
-
</span><span class="inferred0"><a name="line418"></a>418 end </span><span
|
668
|
-
class="marked1"><a name="line419"></a>419 evaluate_plugin_block(pending_str
|
669
|
-
|| str, buf) </span><span class="marked0"><a name="line420"></a>420 buf
|
670
|
-
</span><span class="inferred1"><a name="line421"></a>421 end </span><span
|
671
|
-
class="inferred0"><a name="line422"></a>422 </span><span class="marked1"><a
|
672
|
-
name="line423"></a>423 def compile_inline_markup(buf, link, uri, mod,
|
673
|
-
wiki_name) </span><span class="inferred0"><a name="line424"></a>424 case
|
674
|
-
</span><span class="marked1"><a name="line425"></a>425 when link
|
675
|
-
</span><span class="marked0"><a name="line426"></a>426 buf <<
|
676
|
-
compile_bracket_link(link[2...-2]) </span><span class="marked1"><a
|
677
|
-
name="line427"></a>427 when uri </span><span class="marked0"><a
|
678
|
-
name="line428"></a>428 buf << compile_uri_autolink(uri) </span><span
|
679
|
-
class="marked1"><a name="line429"></a>429 when mod </span><span
|
680
|
-
class="marked0"><a name="line430"></a>430 buf << compile_modifier(mod)
|
681
|
-
</span><span class="marked1"><a name="line431"></a>431 when wiki_name
|
682
|
-
</span><span class="marked0"><a name="line432"></a>432 buf <<
|
683
|
-
@output.wiki_name(wiki_name) </span><span class="uncovered1"><a
|
684
|
-
name="line433"></a>433 else </span><span class="uncovered0"><a
|
685
|
-
name="line434"></a>434 raise UnexpectedError, "must not happen"
|
686
|
-
</span><span class="marked1"><a name="line435"></a>435 end </span><span
|
687
|
-
class="inferred0"><a name="line436"></a>436 end </span><span
|
688
|
-
class="inferred1"><a name="line437"></a>437 </span><span class="marked0"><a
|
689
|
-
name="line438"></a>438 def compile_bracket_link(link) </span><span
|
690
|
-
class="marked1"><a name="line439"></a>439 if m =
|
691
|
-
/\A(?>[^|\\]+|\\.)*\|/.match(link) </span><span class="marked0"><a
|
692
|
-
name="line440"></a>440 title = m[0].chop </span><span class="marked1"><a
|
693
|
-
name="line441"></a>441 uri = m.post_match </span><span class="marked0"><a
|
694
|
-
name="line442"></a>442 fixed_uri = fix_uri(uri) </span><span
|
695
|
-
class="marked1"><a name="line443"></a>443 if can_image_link?(uri)
|
696
|
-
</span><span class="marked0"><a name="line444"></a>444
|
697
|
-
@output.image_hyperlink(fixed_uri, title) </span><span class="inferred1"><a
|
698
|
-
name="line445"></a>445 else </span><span class="marked0"><a
|
699
|
-
name="line446"></a>446 @output.hyperlink(fixed_uri, compile_modifier(title))
|
700
|
-
</span><span class="inferred1"><a name="line447"></a>447 end </span><span
|
701
|
-
class="inferred0"><a name="line448"></a>448 else </span><span
|
702
|
-
class="marked1"><a name="line449"></a>449 fixed_link = fix_uri(link)
|
703
|
-
</span><span class="marked0"><a name="line450"></a>450 if
|
704
|
-
can_image_link?(link) </span><span class="marked1"><a name="line451"></a>451
|
705
|
-
@output.image_hyperlink(fixed_link) </span><span class="inferred0"><a
|
706
|
-
name="line452"></a>452 else </span><span class="marked1"><a
|
707
|
-
name="line453"></a>453 @output.hyperlink(fixed_link, @output.text(link))
|
708
|
-
</span><span class="inferred0"><a name="line454"></a>454 end </span><span
|
709
|
-
class="inferred1"><a name="line455"></a>455 end </span><span
|
710
|
-
class="inferred0"><a name="line456"></a>456 end </span><span
|
711
|
-
class="inferred1"><a name="line457"></a>457 </span><span class="marked0"><a
|
712
|
-
name="line458"></a>458 def can_image_link?(uri) </span><span
|
713
|
-
class="marked1"><a name="line459"></a>459 image?(uri) and
|
714
|
-
@options[:allow_bracket_inline_image] </span><span class="inferred0"><a
|
715
|
-
name="line460"></a>460 end </span><span class="inferred1"><a
|
716
|
-
name="line461"></a>461 </span><span class="marked0"><a
|
717
|
-
name="line462"></a>462 def compile_uri_autolink(uri) </span><span
|
718
|
-
class="marked1"><a name="line463"></a>463 if image?(uri) </span><span
|
719
|
-
class="marked0"><a name="line464"></a>464
|
720
|
-
@output.image_hyperlink(fix_uri(uri)) </span><span class="inferred1"><a
|
721
|
-
name="line465"></a>465 else </span><span class="marked0"><a
|
722
|
-
name="line466"></a>466 @output.hyperlink(fix_uri(uri), @output.text(uri))
|
723
|
-
</span><span class="inferred1"><a name="line467"></a>467 end </span><span
|
724
|
-
class="inferred0"><a name="line468"></a>468 end </span><span
|
725
|
-
class="inferred1"><a name="line469"></a>469 </span><span class="marked0"><a
|
726
|
-
name="line470"></a>470 def fix_uri(uri) </span><span class="marked1"><a
|
727
|
-
name="line471"></a>471 if /\A(?:https?|ftp|file):(?!\/\/)/ =~ uri
|
728
|
-
</span><span class="marked0"><a name="line472"></a>472 uri.sub(/\A\w+:/,
|
729
|
-
"") </span><span class="inferred1"><a name="line473"></a>473 else
|
730
|
-
</span><span class="marked0"><a name="line474"></a>474 uri </span><span
|
731
|
-
class="inferred1"><a name="line475"></a>475 end </span><span
|
732
|
-
class="inferred0"><a name="line476"></a>476 end </span><span
|
733
|
-
class="inferred1"><a name="line477"></a>477 </span><span class="marked0"><a
|
734
|
-
name="line478"></a>478 IMAGE_EXTS = %w(.jpg .jpeg .gif .png) </span><span
|
735
|
-
class="inferred1"><a name="line479"></a>479 </span><span class="marked0"><a
|
736
|
-
name="line480"></a>480 def image?(uri) </span><span class="marked1"><a
|
737
|
-
name="line481"></a>481 IMAGE_EXTS.include?(File.extname(uri).downcase)
|
738
|
-
</span><span class="inferred0"><a name="line482"></a>482 end </span><span
|
739
|
-
class="inferred1"><a name="line483"></a>483 </span><span class="marked0"><a
|
740
|
-
name="line484"></a>484 STRONG = "'''" </span><span
|
741
|
-
class="marked1"><a name="line485"></a>485 EM = "''" </span><span
|
742
|
-
class="marked0"><a name="line486"></a>486 DEL = "==" </span><span
|
743
|
-
class="inferred1"><a name="line487"></a>487 </span><span class="marked0"><a
|
744
|
-
name="line488"></a>488 STRONG_RE = /'''.+?'''/ </span><span
|
745
|
-
class="marked1"><a name="line489"></a>489 EM_RE = /''.+?''/ </span><span
|
746
|
-
class="marked0"><a name="line490"></a>490 DEL_RE = /==.+?==/ </span><span
|
747
|
-
class="inferred1"><a name="line491"></a>491 </span><span class="marked0"><a
|
748
|
-
name="line492"></a>492 MODIFIER_RE = Regexp.union(STRONG_RE, EM_RE, DEL_RE)
|
749
|
-
</span><span class="inferred1"><a name="line493"></a>493 </span><span
|
750
|
-
class="marked0"><a name="line494"></a>494 MODTAG = { </span><span
|
751
|
-
class="inferred1"><a name="line495"></a>495 STRONG => "strong",
|
752
|
-
</span><span class="inferred0"><a name="line496"></a>496 EM =>
|
753
|
-
"em", </span><span class="inferred1"><a name="line497"></a>497 DEL
|
754
|
-
=> "del" </span><span class="inferred0"><a
|
755
|
-
name="line498"></a>498 } </span><span class="inferred1"><a
|
756
|
-
name="line499"></a>499 </span><span class="marked0"><a
|
757
|
-
name="line500"></a>500 def compile_modifier(str) </span><span
|
758
|
-
class="marked1"><a name="line501"></a>501 buf = @output.container
|
759
|
-
</span><span class="marked0"><a name="line502"></a>502 while m = /
|
760
|
-
(#{MODIFIER_RE}) </span><span class="uncovered1"><a name="line503"></a>503
|
761
|
-
/xo.match(str) </span><span class="marked0"><a name="line504"></a>504
|
762
|
-
evaluate_plugin_block(m.pre_match, buf) </span><span class="inferred1"><a
|
763
|
-
name="line505"></a>505 case </span><span class="marked0"><a
|
764
|
-
name="line506"></a>506 when chunk = m[1] </span><span class="marked1"><a
|
765
|
-
name="line507"></a>507 mod, s = split_mod(chunk) </span><span
|
766
|
-
class="marked0"><a name="line508"></a>508 mid = MODTAG[mod] </span><span
|
767
|
-
class="marked1"><a name="line509"></a>509 buf << @output.__send__(mid,
|
768
|
-
compile_inline(s)) </span><span class="uncovered0"><a name="line510"></a>510
|
769
|
-
else </span><span class="uncovered1"><a name="line511"></a>511 raise
|
770
|
-
UnexpectedError, "must not happen" </span><span class="marked0"><a
|
771
|
-
name="line512"></a>512 end </span><span class="marked1"><a
|
772
|
-
name="line513"></a>513 str = m.post_match </span><span class="inferred0"><a
|
773
|
-
name="line514"></a>514 end </span><span class="marked1"><a
|
774
|
-
name="line515"></a>515 evaluate_plugin_block(str, buf) </span><span
|
775
|
-
class="marked0"><a name="line516"></a>516 buf </span><span
|
776
|
-
class="inferred1"><a name="line517"></a>517 end </span><span
|
777
|
-
class="inferred0"><a name="line518"></a>518 </span><span class="marked1"><a
|
778
|
-
name="line519"></a>519 def split_mod(str) </span><span class="marked0"><a
|
779
|
-
name="line520"></a>520 case str </span><span class="marked1"><a
|
780
|
-
name="line521"></a>521 when /\A'''/ </span><span class="marked0"><a
|
781
|
-
name="line522"></a>522 return str[0, 3], str[3...-3] </span><span
|
782
|
-
class="marked1"><a name="line523"></a>523 when /\A''/ </span><span
|
783
|
-
class="marked0"><a name="line524"></a>524 return str[0, 2], str[2...-2]
|
784
|
-
</span><span class="marked1"><a name="line525"></a>525 when /\A==/
|
785
|
-
</span><span class="marked0"><a name="line526"></a>526 return str[0, 2],
|
786
|
-
str[2...-2] </span><span class="uncovered1"><a name="line527"></a>527 else
|
787
|
-
</span><span class="uncovered0"><a name="line528"></a>528 raise
|
788
|
-
UnexpectedError, "must not happen: #{str.inspect}" </span><span
|
789
|
-
class="uncovered1"><a name="line529"></a>529 end </span><span
|
790
|
-
class="uncovered0"><a name="line530"></a>530 end </span><span
|
791
|
-
class="inferred1"><a name="line531"></a>531 </span><span class="marked0"><a
|
792
|
-
name="line532"></a>532 def strip(str) </span><span class="marked1"><a
|
793
|
-
name="line533"></a>533 rstrip(lstrip(str)) </span><span class="inferred0"><a
|
794
|
-
name="line534"></a>534 end </span><span class="inferred1"><a
|
795
|
-
name="line535"></a>535 </span><span class="marked0"><a
|
796
|
-
name="line536"></a>536 def rstrip(str) </span><span class="marked1"><a
|
797
|
-
name="line537"></a>537 str.sub(/[ \t\r\n\v\f]+\z/, "")
|
798
|
-
</span><span class="inferred0"><a name="line538"></a>538 end </span><span
|
799
|
-
class="inferred1"><a name="line539"></a>539 </span><span class="marked0"><a
|
800
|
-
name="line540"></a>540 def lstrip(str) </span><span class="marked1"><a
|
801
|
-
name="line541"></a>541 str.sub(/\A[ \t\r\n\v\f]+/, "")
|
802
|
-
</span><span class="inferred0"><a name="line542"></a>542 end </span><span
|
803
|
-
class="inferred1"><a name="line543"></a>543 </span><span
|
804
|
-
class="inferred0"><a name="line544"></a>544 </span><span class="marked1"><a
|
805
|
-
name="line545"></a>545 class HTMLOutput </span><span class="marked0"><a
|
806
|
-
name="line546"></a>546 def initialize(suffix = " />")
|
807
|
-
</span><span class="marked1"><a name="line547"></a>547 @suffix = suffix
|
808
|
-
</span><span class="marked0"><a name="line548"></a>548 @f = nil </span><span
|
809
|
-
class="inferred1"><a name="line549"></a>549 end </span><span
|
810
|
-
class="inferred0"><a name="line550"></a>550 </span><span class="marked1"><a
|
811
|
-
name="line551"></a>551 def reset </span><span class="marked0"><a
|
812
|
-
name="line552"></a>552 @f = StringIO.new </span><span class="inferred1"><a
|
813
|
-
name="line553"></a>553 end </span><span class="inferred0"><a
|
814
|
-
name="line554"></a>554 </span><span class="marked1"><a
|
815
|
-
name="line555"></a>555 def finish </span><span class="marked0"><a
|
816
|
-
name="line556"></a>556 @f.string </span><span class="inferred1"><a
|
817
|
-
name="line557"></a>557 end </span><span class="inferred0"><a
|
818
|
-
name="line558"></a>558 </span><span class="marked1"><a
|
819
|
-
name="line559"></a>559 def container(_for=nil) </span><span
|
820
|
-
class="marked0"><a name="line560"></a>560 case _for </span><span
|
821
|
-
class="marked1"><a name="line561"></a>561 when :paragraph </span><span
|
822
|
-
class="marked0"><a name="line562"></a>562 [] </span><span
|
823
|
-
class="inferred1"><a name="line563"></a>563 else </span><span
|
824
|
-
class="marked0"><a name="line564"></a>564 "" </span><span
|
825
|
-
class="inferred1"><a name="line565"></a>565 end </span><span
|
826
|
-
class="inferred0"><a name="line566"></a>566 end </span><span
|
827
|
-
class="inferred1"><a name="line567"></a>567 </span><span
|
828
|
-
class="inferred0"><a name="line568"></a>568 # </span><span
|
829
|
-
class="inferred1"><a name="line569"></a>569 # Procedures </span><span
|
830
|
-
class="inferred0"><a name="line570"></a>570 # </span><span
|
831
|
-
class="inferred1"><a name="line571"></a>571 </span><span class="marked0"><a
|
832
|
-
name="line572"></a>572 def headline(level, title) </span><span
|
833
|
-
class="marked1"><a name="line573"></a>573 @f.puts
|
834
|
-
"<h#{level}>#{title}</h#{level}>" </span><span
|
835
|
-
class="inferred0"><a name="line574"></a>574 end </span><span
|
836
|
-
class="inferred1"><a name="line575"></a>575 </span><span class="marked0"><a
|
837
|
-
name="line576"></a>576 def hrule </span><span class="marked1"><a
|
838
|
-
name="line577"></a>577 @f.puts "<hr#{@suffix}" </span><span
|
839
|
-
class="inferred0"><a name="line578"></a>578 end </span><span
|
840
|
-
class="inferred1"><a name="line579"></a>579 </span><span class="marked0"><a
|
841
|
-
name="line580"></a>580 def list_begin </span><span class="marked1"><a
|
842
|
-
name="line581"></a>581 end </span><span class="inferred0"><a
|
843
|
-
name="line582"></a>582 </span><span class="marked1"><a
|
844
|
-
name="line583"></a>583 def list_end </span><span class="marked0"><a
|
845
|
-
name="line584"></a>584 @f.puts </span><span class="inferred1"><a
|
846
|
-
name="line585"></a>585 end </span><span class="inferred0"><a
|
847
|
-
name="line586"></a>586 </span><span class="marked1"><a
|
848
|
-
name="line587"></a>587 def list_open(type) </span><span class="marked0"><a
|
849
|
-
name="line588"></a>588 @f.puts "<#{type}>" </span><span
|
850
|
-
class="inferred1"><a name="line589"></a>589 end </span><span
|
851
|
-
class="inferred0"><a name="line590"></a>590 </span><span class="marked1"><a
|
852
|
-
name="line591"></a>591 def list_close(type) </span><span class="marked0"><a
|
853
|
-
name="line592"></a>592 @f.print "</#{type}>" </span><span
|
854
|
-
class="inferred1"><a name="line593"></a>593 end </span><span
|
855
|
-
class="inferred0"><a name="line594"></a>594 </span><span class="marked1"><a
|
856
|
-
name="line595"></a>595 def listitem_open </span><span class="marked0"><a
|
857
|
-
name="line596"></a>596 @f.print "<li>" </span><span
|
858
|
-
class="inferred1"><a name="line597"></a>597 end </span><span
|
859
|
-
class="inferred0"><a name="line598"></a>598 </span><span class="marked1"><a
|
860
|
-
name="line599"></a>599 def listitem_close </span><span class="marked0"><a
|
861
|
-
name="line600"></a>600 @f.puts "</li>" </span><span
|
862
|
-
class="inferred1"><a name="line601"></a>601 end </span><span
|
863
|
-
class="inferred0"><a name="line602"></a>602 </span><span class="marked1"><a
|
864
|
-
name="line603"></a>603 def listitem(item) </span><span class="marked0"><a
|
865
|
-
name="line604"></a>604 @f.print item </span><span class="inferred1"><a
|
866
|
-
name="line605"></a>605 end </span><span class="inferred0"><a
|
867
|
-
name="line606"></a>606 </span><span class="marked1"><a
|
868
|
-
name="line607"></a>607 def dlist_open </span><span class="marked0"><a
|
869
|
-
name="line608"></a>608 @f.puts "<dl>" </span><span
|
870
|
-
class="inferred1"><a name="line609"></a>609 end </span><span
|
871
|
-
class="inferred0"><a name="line610"></a>610 </span><span class="marked1"><a
|
872
|
-
name="line611"></a>611 def dlist_close </span><span class="marked0"><a
|
873
|
-
name="line612"></a>612 @f.puts "</dl>" </span><span
|
874
|
-
class="inferred1"><a name="line613"></a>613 end </span><span
|
875
|
-
class="inferred0"><a name="line614"></a>614 </span><span class="marked1"><a
|
876
|
-
name="line615"></a>615 def dlist_item(dt, dd) </span><span
|
877
|
-
class="inferred0"><a name="line616"></a>616 case </span><span
|
878
|
-
class="marked1"><a name="line617"></a>617 when dd.empty? </span><span
|
879
|
-
class="marked0"><a name="line618"></a>618 @f.puts
|
880
|
-
"<dt>#{dt}</dt>" </span><span class="marked1"><a
|
881
|
-
name="line619"></a>619 when dt.empty? </span><span class="marked0"><a
|
882
|
-
name="line620"></a>620 @f.puts "<dd>#{dd}</dd>"
|
883
|
-
</span><span class="inferred1"><a name="line621"></a>621 else </span><span
|
884
|
-
class="marked0"><a name="line622"></a>622 @f.puts
|
885
|
-
"<dt>#{dt}</dt>" </span><span class="marked1"><a
|
886
|
-
name="line623"></a>623 @f.puts "<dd>#{dd}</dd>"
|
887
|
-
</span><span class="marked0"><a name="line624"></a>624 end </span><span
|
888
|
-
class="inferred1"><a name="line625"></a>625 end </span><span
|
889
|
-
class="inferred0"><a name="line626"></a>626 </span><span class="marked1"><a
|
890
|
-
name="line627"></a>627 def table_open </span><span class="marked0"><a
|
891
|
-
name="line628"></a>628 @f.puts %Q(<table border="1">)
|
892
|
-
</span><span class="inferred1"><a name="line629"></a>629 end </span><span
|
893
|
-
class="inferred0"><a name="line630"></a>630 </span><span class="marked1"><a
|
894
|
-
name="line631"></a>631 def table_close </span><span class="marked0"><a
|
895
|
-
name="line632"></a>632 @f.puts "</table>" </span><span
|
896
|
-
class="inferred1"><a name="line633"></a>633 end </span><span
|
897
|
-
class="inferred0"><a name="line634"></a>634 </span><span class="marked1"><a
|
898
|
-
name="line635"></a>635 def table_record_open </span><span class="marked0"><a
|
899
|
-
name="line636"></a>636 @f.print "<tr>" </span><span
|
900
|
-
class="inferred1"><a name="line637"></a>637 end </span><span
|
901
|
-
class="inferred0"><a name="line638"></a>638 </span><span class="marked1"><a
|
902
|
-
name="line639"></a>639 def table_record_close </span><span
|
903
|
-
class="marked0"><a name="line640"></a>640 @f.puts "</tr>"
|
904
|
-
</span><span class="inferred1"><a name="line641"></a>641 end </span><span
|
905
|
-
class="inferred0"><a name="line642"></a>642 </span><span class="marked1"><a
|
906
|
-
name="line643"></a>643 def table_head(item, rs, cs) </span><span
|
907
|
-
class="marked0"><a name="line644"></a>644 @f.print "<th#{tdattr(rs,
|
908
|
-
cs)}>#{item}</th>" </span><span class="inferred1"><a
|
909
|
-
name="line645"></a>645 end </span><span class="inferred0"><a
|
910
|
-
name="line646"></a>646 </span><span class="marked1"><a
|
911
|
-
name="line647"></a>647 def table_data(item, rs, cs) </span><span
|
912
|
-
class="marked0"><a name="line648"></a>648 @f.print "<td#{tdattr(rs,
|
913
|
-
cs)}>#{item}</td>" </span><span class="inferred1"><a
|
914
|
-
name="line649"></a>649 end </span><span class="inferred0"><a
|
915
|
-
name="line650"></a>650 </span><span class="marked1"><a
|
916
|
-
name="line651"></a>651 def tdattr(rs, cs) </span><span class="marked0"><a
|
917
|
-
name="line652"></a>652 buf = "" </span><span class="marked1"><a
|
918
|
-
name="line653"></a>653 buf << %Q( rowspan="#{rs}") if rs
|
919
|
-
</span><span class="marked0"><a name="line654"></a>654 buf << %Q(
|
920
|
-
colspan="#{cs}") if cs </span><span class="marked1"><a
|
921
|
-
name="line655"></a>655 buf </span><span class="inferred0"><a
|
922
|
-
name="line656"></a>656 end </span><span class="marked1"><a
|
923
|
-
name="line657"></a>657 private :tdattr </span><span class="inferred0"><a
|
924
|
-
name="line658"></a>658 </span><span class="marked1"><a
|
925
|
-
name="line659"></a>659 def blockquote_open </span><span class="marked0"><a
|
926
|
-
name="line660"></a>660 @f.print "<blockquote>" </span><span
|
927
|
-
class="inferred1"><a name="line661"></a>661 end </span><span
|
928
|
-
class="inferred0"><a name="line662"></a>662 </span><span class="marked1"><a
|
929
|
-
name="line663"></a>663 def blockquote_close </span><span class="marked0"><a
|
930
|
-
name="line664"></a>664 @f.puts "</blockquote>" </span><span
|
931
|
-
class="inferred1"><a name="line665"></a>665 end </span><span
|
932
|
-
class="inferred0"><a name="line666"></a>666 </span><span class="marked1"><a
|
933
|
-
name="line667"></a>667 def block_preformatted(str, info) </span><span
|
934
|
-
class="marked0"><a name="line668"></a>668 syntax = info ? info.downcase :
|
935
|
-
nil </span><span class="marked1"><a name="line669"></a>669 if syntax
|
936
|
-
</span><span class="marked0"><a name="line670"></a>670 begin </span><span
|
937
|
-
class="marked1"><a name="line671"></a>671 convertor =
|
938
|
-
Syntax::Convertors::HTML.for_syntax(syntax) </span><span class="marked0"><a
|
939
|
-
name="line672"></a>672 @f.puts convertor.convert(str) </span><span
|
940
|
-
class="marked1"><a name="line673"></a>673 return </span><span
|
941
|
-
class="uncovered0"><a name="line674"></a>674 rescue NameError, RuntimeError
|
942
|
-
</span><span class="uncovered1"><a name="line675"></a>675 end </span><span
|
943
|
-
class="uncovered0"><a name="line676"></a>676 end </span><span
|
944
|
-
class="marked1"><a name="line677"></a>677 preformatted(text(str))
|
945
|
-
</span><span class="inferred0"><a name="line678"></a>678 end </span><span
|
946
|
-
class="inferred1"><a name="line679"></a>679 </span><span class="marked0"><a
|
947
|
-
name="line680"></a>680 def preformatted(str) </span><span class="marked1"><a
|
948
|
-
name="line681"></a>681 @f.print "<pre>" </span><span
|
949
|
-
class="marked0"><a name="line682"></a>682 @f.print str </span><span
|
950
|
-
class="marked1"><a name="line683"></a>683 @f.puts "</pre>"
|
951
|
-
</span><span class="inferred0"><a name="line684"></a>684 end </span><span
|
952
|
-
class="inferred1"><a name="line685"></a>685 </span><span class="marked0"><a
|
953
|
-
name="line686"></a>686 def paragraph(lines) </span><span class="marked1"><a
|
954
|
-
name="line687"></a>687 @f.puts
|
955
|
-
"<p>#{lines.join("\n")}</p>" </span><span
|
956
|
-
class="inferred0"><a name="line688"></a>688 end </span><span
|
957
|
-
class="inferred1"><a name="line689"></a>689 </span><span class="marked0"><a
|
958
|
-
name="line690"></a>690 def block_plugin(str) </span><span class="marked1"><a
|
959
|
-
name="line691"></a>691 @f.puts %Q(<div
|
960
|
-
class="plugin">{{#{escape_html(str)}}}</div>)
|
961
|
-
</span><span class="inferred0"><a name="line692"></a>692 end </span><span
|
962
|
-
class="inferred1"><a name="line693"></a>693 </span><span
|
963
|
-
class="inferred0"><a name="line694"></a>694 # </span><span
|
964
|
-
class="inferred1"><a name="line695"></a>695 # Functions </span><span
|
965
|
-
class="inferred0"><a name="line696"></a>696 # </span><span
|
966
|
-
class="inferred1"><a name="line697"></a>697 </span><span class="marked0"><a
|
967
|
-
name="line698"></a>698 def hyperlink(uri, title) </span><span
|
968
|
-
class="marked1"><a name="line699"></a>699 %Q(<a
|
969
|
-
href="#{escape_html_param(uri)}">#{title}</a>)
|
970
|
-
</span><span class="inferred0"><a name="line700"></a>700 end </span><span
|
971
|
-
class="inferred1"><a name="line701"></a>701 </span><span class="marked0"><a
|
972
|
-
name="line702"></a>702 def wiki_name(name) </span><span class="marked1"><a
|
973
|
-
name="line703"></a>703 hyperlink(name, text(name)) </span><span
|
974
|
-
class="inferred0"><a name="line704"></a>704 end </span><span
|
975
|
-
class="inferred1"><a name="line705"></a>705 </span><span class="marked0"><a
|
976
|
-
name="line706"></a>706 def image_hyperlink(uri, alt = nil) </span><span
|
977
|
-
class="marked1"><a name="line707"></a>707 alt ||= uri.split(/\//).last
|
978
|
-
</span><span class="marked0"><a name="line708"></a>708 alt =
|
979
|
-
escape_html(alt) </span><span class="marked1"><a name="line709"></a>709
|
980
|
-
%Q(<img src="#{escape_html_param(uri)}"
|
981
|
-
alt="#{alt}"#{@suffix}) </span><span class="inferred0"><a
|
982
|
-
name="line710"></a>710 end </span><span class="inferred1"><a
|
983
|
-
name="line711"></a>711 </span><span class="marked0"><a
|
984
|
-
name="line712"></a>712 def strong(item) </span><span class="marked1"><a
|
985
|
-
name="line713"></a>713 "<strong>#{item}</strong>"
|
986
|
-
</span><span class="inferred0"><a name="line714"></a>714 end </span><span
|
987
|
-
class="inferred1"><a name="line715"></a>715 </span><span class="marked0"><a
|
988
|
-
name="line716"></a>716 def em(item) </span><span class="marked1"><a
|
989
|
-
name="line717"></a>717 "<em>#{item}</em>" </span><span
|
990
|
-
class="inferred0"><a name="line718"></a>718 end </span><span
|
991
|
-
class="inferred1"><a name="line719"></a>719 </span><span class="marked0"><a
|
992
|
-
name="line720"></a>720 def del(item) </span><span class="marked1"><a
|
993
|
-
name="line721"></a>721 "<del>#{item}</del>"
|
994
|
-
</span><span class="inferred0"><a name="line722"></a>722 end </span><span
|
995
|
-
class="inferred1"><a name="line723"></a>723 </span><span class="marked0"><a
|
996
|
-
name="line724"></a>724 def text(str) </span><span class="marked1"><a
|
997
|
-
name="line725"></a>725 escape_html(str) </span><span class="inferred0"><a
|
998
|
-
name="line726"></a>726 end </span><span class="inferred1"><a
|
999
|
-
name="line727"></a>727 </span><span class="marked0"><a
|
1000
|
-
name="line728"></a>728 def inline_plugin(src) </span><span
|
1001
|
-
class="marked1"><a name="line729"></a>729 %Q(<span
|
1002
|
-
class="plugin">{{#{src}}}</span>) </span><span
|
1003
|
-
class="inferred0"><a name="line730"></a>730 end </span><span
|
1004
|
-
class="inferred1"><a name="line731"></a>731 </span><span
|
1005
|
-
class="inferred0"><a name="line732"></a>732 # </span><span
|
1006
|
-
class="inferred1"><a name="line733"></a>733 # Utilities </span><span
|
1007
|
-
class="inferred0"><a name="line734"></a>734 # </span><span
|
1008
|
-
class="inferred1"><a name="line735"></a>735 </span><span class="marked0"><a
|
1009
|
-
name="line736"></a>736 def escape_html_param(str) </span><span
|
1010
|
-
class="marked1"><a name="line737"></a>737 escape_quote(escape_html(str))
|
1011
|
-
</span><span class="inferred0"><a name="line738"></a>738 end </span><span
|
1012
|
-
class="inferred1"><a name="line739"></a>739 </span><span class="marked0"><a
|
1013
|
-
name="line740"></a>740 def escape_html(text) </span><span class="marked1"><a
|
1014
|
-
name="line741"></a>741 text.gsub(/&/,
|
1015
|
-
"&amp;").gsub(/</, "&lt;").gsub(/>/,
|
1016
|
-
"&gt;") </span><span class="inferred0"><a
|
1017
|
-
name="line742"></a>742 end </span><span class="inferred1"><a
|
1018
|
-
name="line743"></a>743 </span><span class="marked0"><a
|
1019
|
-
name="line744"></a>744 def unescape_html(text) </span><span
|
1020
|
-
class="uncovered1"><a name="line745"></a>745 text.gsub(/&gt;/,
|
1021
|
-
">").gsub(/&lt;/, "<").gsub(/&amp;/,
|
1022
|
-
"&") </span><span class="uncovered0"><a name="line746"></a>746
|
1023
|
-
end </span><span class="inferred1"><a name="line747"></a>747 </span><span
|
1024
|
-
class="marked0"><a name="line748"></a>748 def escape_quote(text)
|
1025
|
-
</span><span class="marked1"><a name="line749"></a>749 text.gsub(/"/,
|
1026
|
-
"&quot;") </span><span class="inferred0"><a
|
1027
|
-
name="line750"></a>750 end </span><span class="inferred1"><a
|
1028
|
-
name="line751"></a>751 end </span><span class="inferred0"><a
|
1029
|
-
name="line752"></a>752 </span><span class="inferred1"><a
|
1030
|
-
name="line753"></a>753 </span><span class="marked0"><a
|
1031
|
-
name="line754"></a>754 class LineInput </span><span class="marked1"><a
|
1032
|
-
name="line755"></a>755 def initialize(f) </span><span class="marked0"><a
|
1033
|
-
name="line756"></a>756 @input = f </span><span class="marked1"><a
|
1034
|
-
name="line757"></a>757 @buf = [] </span><span class="marked0"><a
|
1035
|
-
name="line758"></a>758 @lineno = 0 </span><span class="marked1"><a
|
1036
|
-
name="line759"></a>759 @eof_p = false </span><span class="inferred0"><a
|
1037
|
-
name="line760"></a>760 end </span><span class="inferred1"><a
|
1038
|
-
name="line761"></a>761 </span><span class="marked0"><a
|
1039
|
-
name="line762"></a>762 def inspect </span><span class="uncovered1"><a
|
1040
|
-
name="line763"></a>763 "\#<#{self.class} file=#{@input.inspect}
|
1041
|
-
line=#{lineno()}>" </span><span class="uncovered0"><a
|
1042
|
-
name="line764"></a>764 end </span><span class="inferred1"><a
|
1043
|
-
name="line765"></a>765 </span><span class="marked0"><a
|
1044
|
-
name="line766"></a>766 def eof? </span><span class="uncovered1"><a
|
1045
|
-
name="line767"></a>767 @eof_p </span><span class="uncovered0"><a
|
1046
|
-
name="line768"></a>768 end </span><span class="inferred1"><a
|
1047
|
-
name="line769"></a>769 </span><span class="marked0"><a
|
1048
|
-
name="line770"></a>770 def lineno </span><span class="uncovered1"><a
|
1049
|
-
name="line771"></a>771 @lineno </span><span class="uncovered0"><a
|
1050
|
-
name="line772"></a>772 end </span><span class="inferred1"><a
|
1051
|
-
name="line773"></a>773 </span><span class="marked0"><a
|
1052
|
-
name="line774"></a>774 def gets </span><span class="marked1"><a
|
1053
|
-
name="line775"></a>775 unless @buf.empty? </span><span class="marked0"><a
|
1054
|
-
name="line776"></a>776 @lineno += 1 </span><span class="marked1"><a
|
1055
|
-
name="line777"></a>777 return @buf.pop </span><span class="inferred0"><a
|
1056
|
-
name="line778"></a>778 end </span><span class="marked1"><a
|
1057
|
-
name="line779"></a>779 return nil if @eof_p # to avoid ARGF blocking.
|
1058
|
-
</span><span class="marked0"><a name="line780"></a>780 line = @input.gets
|
1059
|
-
</span><span class="marked1"><a name="line781"></a>781 line =
|
1060
|
-
line.sub(/\r\n/, "\n") if line </span><span class="marked0"><a
|
1061
|
-
name="line782"></a>782 @eof_p = line.nil? </span><span class="marked1"><a
|
1062
|
-
name="line783"></a>783 @lineno += 1 </span><span class="marked0"><a
|
1063
|
-
name="line784"></a>784 line </span><span class="inferred1"><a
|
1064
|
-
name="line785"></a>785 end </span><span class="inferred0"><a
|
1065
|
-
name="line786"></a>786 </span><span class="marked1"><a
|
1066
|
-
name="line787"></a>787 def ungets(line) </span><span class="marked0"><a
|
1067
|
-
name="line788"></a>788 return unless line </span><span class="marked1"><a
|
1068
|
-
name="line789"></a>789 @lineno -= 1 </span><span class="marked0"><a
|
1069
|
-
name="line790"></a>790 @buf.push line </span><span class="marked1"><a
|
1070
|
-
name="line791"></a>791 line </span><span class="inferred0"><a
|
1071
|
-
name="line792"></a>792 end </span><span class="inferred1"><a
|
1072
|
-
name="line793"></a>793 </span><span class="marked0"><a
|
1073
|
-
name="line794"></a>794 def peek </span><span class="marked1"><a
|
1074
|
-
name="line795"></a>795 line = gets() </span><span class="marked0"><a
|
1075
|
-
name="line796"></a>796 ungets line if line </span><span class="marked1"><a
|
1076
|
-
name="line797"></a>797 line </span><span class="inferred0"><a
|
1077
|
-
name="line798"></a>798 end </span><span class="inferred1"><a
|
1078
|
-
name="line799"></a>799 </span><span class="marked0"><a
|
1079
|
-
name="line800"></a>800 def next? </span><span class="uncovered1"><a
|
1080
|
-
name="line801"></a>801 peek() ? true : false </span><span
|
1081
|
-
class="uncovered0"><a name="line802"></a>802 end </span><span
|
1082
|
-
class="inferred1"><a name="line803"></a>803 </span><span class="marked0"><a
|
1083
|
-
name="line804"></a>804 def skip_blank_lines </span><span
|
1084
|
-
class="uncovered1"><a name="line805"></a>805 n = 0 </span><span
|
1085
|
-
class="uncovered0"><a name="line806"></a>806 while line = gets()
|
1086
|
-
</span><span class="uncovered1"><a name="line807"></a>807 unless
|
1087
|
-
line.strip.empty? </span><span class="uncovered0"><a name="line808"></a>808
|
1088
|
-
ungets line </span><span class="uncovered1"><a name="line809"></a>809 return
|
1089
|
-
n </span><span class="uncovered0"><a name="line810"></a>810 end </span><span
|
1090
|
-
class="uncovered1"><a name="line811"></a>811 n += 1 </span><span
|
1091
|
-
class="uncovered0"><a name="line812"></a>812 end </span><span
|
1092
|
-
class="uncovered1"><a name="line813"></a>813 n </span><span
|
1093
|
-
class="uncovered0"><a name="line814"></a>814 end </span><span
|
1094
|
-
class="inferred1"><a name="line815"></a>815 </span><span class="marked0"><a
|
1095
|
-
name="line816"></a>816 def gets_if(re) </span><span class="uncovered1"><a
|
1096
|
-
name="line817"></a>817 line = gets() </span><span class="uncovered0"><a
|
1097
|
-
name="line818"></a>818 if not line or not (re =~ line) </span><span
|
1098
|
-
class="uncovered1"><a name="line819"></a>819 ungets line </span><span
|
1099
|
-
class="uncovered0"><a name="line820"></a>820 return nil </span><span
|
1100
|
-
class="uncovered1"><a name="line821"></a>821 end </span><span
|
1101
|
-
class="uncovered0"><a name="line822"></a>822 line </span><span
|
1102
|
-
class="uncovered1"><a name="line823"></a>823 end </span><span
|
1103
|
-
class="inferred0"><a name="line824"></a>824 </span><span class="marked1"><a
|
1104
|
-
name="line825"></a>825 def gets_unless(re) </span><span
|
1105
|
-
class="uncovered0"><a name="line826"></a>826 line = gets() </span><span
|
1106
|
-
class="uncovered1"><a name="line827"></a>827 if not line or re =~ line
|
1107
|
-
</span><span class="uncovered0"><a name="line828"></a>828 ungets line
|
1108
|
-
</span><span class="uncovered1"><a name="line829"></a>829 return nil
|
1109
|
-
</span><span class="uncovered0"><a name="line830"></a>830 end </span><span
|
1110
|
-
class="uncovered1"><a name="line831"></a>831 line </span><span
|
1111
|
-
class="uncovered0"><a name="line832"></a>832 end </span><span
|
1112
|
-
class="inferred1"><a name="line833"></a>833 </span><span class="marked0"><a
|
1113
|
-
name="line834"></a>834 def each </span><span class="uncovered1"><a
|
1114
|
-
name="line835"></a>835 while line = gets() </span><span
|
1115
|
-
class="uncovered0"><a name="line836"></a>836 yield line </span><span
|
1116
|
-
class="uncovered1"><a name="line837"></a>837 end </span><span
|
1117
|
-
class="uncovered0"><a name="line838"></a>838 end </span><span
|
1118
|
-
class="inferred1"><a name="line839"></a>839 </span><span class="marked0"><a
|
1119
|
-
name="line840"></a>840 def while_match(re) </span><span class="marked1"><a
|
1120
|
-
name="line841"></a>841 while line = gets() </span><span class="marked0"><a
|
1121
|
-
name="line842"></a>842 unless re =~ line </span><span class="marked1"><a
|
1122
|
-
name="line843"></a>843 ungets line </span><span class="marked0"><a
|
1123
|
-
name="line844"></a>844 return </span><span class="inferred1"><a
|
1124
|
-
name="line845"></a>845 end </span><span class="marked0"><a
|
1125
|
-
name="line846"></a>846 yield line </span><span class="inferred1"><a
|
1126
|
-
name="line847"></a>847 end </span><span class="marked0"><a
|
1127
|
-
name="line848"></a>848 nil </span><span class="inferred1"><a
|
1128
|
-
name="line849"></a>849 end </span><span class="inferred0"><a
|
1129
|
-
name="line850"></a>850 </span><span class="marked1"><a
|
1130
|
-
name="line851"></a>851 def getlines_while(re) </span><span
|
1131
|
-
class="marked0"><a name="line852"></a>852 buf = [] </span><span
|
1132
|
-
class="marked1"><a name="line853"></a>853 while_match(re) do |line|
|
1133
|
-
</span><span class="marked0"><a name="line854"></a>854 buf.push line
|
1134
|
-
</span><span class="inferred1"><a name="line855"></a>855 end </span><span
|
1135
|
-
class="marked0"><a name="line856"></a>856 buf </span><span
|
1136
|
-
class="inferred1"><a name="line857"></a>857 end </span><span
|
1137
|
-
class="inferred0"><a name="line858"></a>858 </span><span class="marked1"><a
|
1138
|
-
name="line859"></a>859 alias span getlines_while # from Haskell </span><span
|
1139
|
-
class="inferred0"><a name="line860"></a>860 </span><span class="marked1"><a
|
1140
|
-
name="line861"></a>861 def until_match(re) </span><span class="marked0"><a
|
1141
|
-
name="line862"></a>862 while line = gets() </span><span class="marked1"><a
|
1142
|
-
name="line863"></a>863 if re =~ line </span><span class="marked0"><a
|
1143
|
-
name="line864"></a>864 ungets line </span><span class="marked1"><a
|
1144
|
-
name="line865"></a>865 return </span><span class="inferred0"><a
|
1145
|
-
name="line866"></a>866 end </span><span class="marked1"><a
|
1146
|
-
name="line867"></a>867 yield line </span><span class="inferred0"><a
|
1147
|
-
name="line868"></a>868 end </span><span class="marked1"><a
|
1148
|
-
name="line869"></a>869 nil </span><span class="inferred0"><a
|
1149
|
-
name="line870"></a>870 end </span><span class="inferred1"><a
|
1150
|
-
name="line871"></a>871 </span><span class="marked0"><a
|
1151
|
-
name="line872"></a>872 def getlines_until(re) </span><span
|
1152
|
-
class="marked1"><a name="line873"></a>873 buf = [] </span><span
|
1153
|
-
class="marked0"><a name="line874"></a>874 until_match(re) do |line|
|
1154
|
-
</span><span class="marked1"><a name="line875"></a>875 buf.push line
|
1155
|
-
</span><span class="inferred0"><a name="line876"></a>876 end </span><span
|
1156
|
-
class="marked1"><a name="line877"></a>877 buf </span><span
|
1157
|
-
class="inferred0"><a name="line878"></a>878 end </span><span
|
1158
|
-
class="inferred1"><a name="line879"></a>879 </span><span class="marked0"><a
|
1159
|
-
name="line880"></a>880 alias break getlines_until # from Haskell
|
1160
|
-
</span><span class="inferred1"><a name="line881"></a>881 </span><span
|
1161
|
-
class="marked0"><a name="line882"></a>882 def until_terminator(re)
|
1162
|
-
</span><span class="uncovered1"><a name="line883"></a>883 while line =
|
1163
|
-
gets() </span><span class="uncovered0"><a name="line884"></a>884 return if
|
1164
|
-
re =~ line # discard terminal line </span><span class="uncovered1"><a
|
1165
|
-
name="line885"></a>885 yield line </span><span class="uncovered0"><a
|
1166
|
-
name="line886"></a>886 end </span><span class="uncovered1"><a
|
1167
|
-
name="line887"></a>887 nil </span><span class="uncovered0"><a
|
1168
|
-
name="line888"></a>888 end </span><span class="inferred1"><a
|
1169
|
-
name="line889"></a>889 </span><span class="marked0"><a
|
1170
|
-
name="line890"></a>890 def getblock(term_re) </span><span
|
1171
|
-
class="uncovered1"><a name="line891"></a>891 buf = [] </span><span
|
1172
|
-
class="uncovered0"><a name="line892"></a>892 until_terminator(term_re) do
|
1173
|
-
|line| </span><span class="uncovered1"><a name="line893"></a>893 buf.push
|
1174
|
-
line </span><span class="uncovered0"><a name="line894"></a>894 end
|
1175
|
-
</span><span class="uncovered1"><a name="line895"></a>895 buf </span><span
|
1176
|
-
class="uncovered0"><a name="line896"></a>896 end </span><span
|
1177
|
-
class="uncovered1"><a name="line897"></a>897 end </span><span
|
1178
|
-
class="uncovered0"><a name="line898"></a>898 end </span><span
|
1179
|
-
class="inferred1"><a name="line899"></a>899 </span><span class="marked0"><a
|
1180
|
-
name="line900"></a>900 if __FILE__ == $0 </span><span class="uncovered1"><a
|
1181
|
-
name="line901"></a>901 puts HikiDoc.to_html(ARGF.read(nil)) </span><span
|
1182
|
-
class="uncovered0"><a name="line902"></a>902 end </span></pre>
|
1183
|
-
<hr />
|
1184
|
-
<p> Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'> rcov
|
1185
|
-
code coverage analysis tool for Ruby </a> version 0.8.1.2. </p>
|
1186
|
-
<p>
|
1187
|
-
<a href='http://validator.w3.org/check/referer'>
|
1188
|
-
<img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88' />
|
1189
|
-
</a>
|
1190
|
-
<a href='http://jigsaw.w3.org/css-validator/check/referer'>
|
1191
|
-
<img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px' />
|
1192
|
-
</a>
|
1193
|
-
</p>
|
1194
|
-
</body>
|
1195
|
-
</html>
|