tdiary 3.2.2.20130518 → 3.2.2.20130527
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 +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +17 -11
- data/Rakefile +2 -0
- data/config.ru +2 -1
- data/tdiary.gemspec +7 -0
- data/tdiary.rb +6 -2
- data/tdiary/cli.rb +27 -1
- data/tdiary/environment.rb +0 -1
- data/tdiary/tasks/release.rake +7 -1
- data/tdiary/version.rb +1 -1
- metadata +87 -132
- data/vendor/hikidoc-0.0.6/COPYING +0 -28
- data/vendor/hikidoc-0.0.6/NEWS +0 -30
- data/vendor/hikidoc-0.0.6/NEWS.ja +0 -30
- data/vendor/hikidoc-0.0.6/README +0 -86
- data/vendor/hikidoc-0.0.6/README.ja +0 -83
- data/vendor/hikidoc-0.0.6/Rakefile +0 -68
- data/vendor/hikidoc-0.0.6/TextFormattingRules +0 -320
- data/vendor/hikidoc-0.0.6/TextFormattingRules.ja +0 -318
- data/vendor/hikidoc-0.0.6/bin/hikidoc +0 -66
- data/vendor/hikidoc-0.0.6/lib/hikidoc.rb +0 -914
- data/vendor/hikidoc-0.0.6/setup.rb +0 -1360
- data/vendor/hikidoc-0.0.6/test/run-test.rb +0 -13
- data/vendor/hikidoc-0.0.6/test/test_hikidoc.rb +0 -506
- data/vendor/imagesize-0.1.1/Manifest.txt +0 -19
- data/vendor/imagesize-0.1.1/README.txt +0 -49
- data/vendor/imagesize-0.1.1/lib/image_size.rb +0 -305
- data/vendor/imagesize-0.1.1/lib/image_size/version.rb +0 -9
- data/vendor/imagesize-0.1.1/setup.rb +0 -1585
- data/vendor/imagesize-0.1.1/test/2-4-7.png +0 -0
- data/vendor/imagesize-0.1.1/test/4_1_2.gif +0 -0
- data/vendor/imagesize-0.1.1/test/bmp.bmp +0 -0
- data/vendor/imagesize-0.1.1/test/cursor.xbm +0 -6
- data/vendor/imagesize-0.1.1/test/detect.swf +0 -0
- data/vendor/imagesize-0.1.1/test/pbm.pbm +0 -0
- data/vendor/imagesize-0.1.1/test/pcx.pcx +0 -0
- data/vendor/imagesize-0.1.1/test/pgm.pgm +0 -5
- data/vendor/imagesize-0.1.1/test/test.xpm +0 -38
- data/vendor/imagesize-0.1.1/test/test_helper.rb +0 -2
- data/vendor/imagesize-0.1.1/test/test_image_size.rb +0 -71
- data/vendor/imagesize-0.1.1/test/tiff.tiff +0 -0
- data/vendor/imagesize-0.1.1/test/tokyo_tower.jpg +0 -0
- data/vendor/imagesize-0.1.1/test/tower_e.gif.psd +0 -0
- data/vendor/rdtool-0.6.38/COPYING.txt +0 -339
- data/vendor/rdtool-0.6.38/Gemfile +0 -3
- data/vendor/rdtool-0.6.38/HISTORY +0 -318
- data/vendor/rdtool-0.6.38/LGPL-2.1 +0 -502
- data/vendor/rdtool-0.6.38/LICENSE.txt +0 -58
- data/vendor/rdtool-0.6.38/README.html +0 -66
- data/vendor/rdtool-0.6.38/README.ja.html +0 -73
- data/vendor/rdtool-0.6.38/README.rd +0 -76
- data/vendor/rdtool-0.6.38/README.rd.ja +0 -85
- data/vendor/rdtool-0.6.38/Rakefile +0 -152
- data/vendor/rdtool-0.6.38/TODO +0 -22
- data/vendor/rdtool-0.6.38/bin/rd2 +0 -283
- data/vendor/rdtool-0.6.38/bin/rdswap.rb +0 -207
- data/vendor/rdtool-0.6.38/doc/rd-draft.html +0 -456
- data/vendor/rdtool-0.6.38/doc/rd-draft.ja.html +0 -466
- data/vendor/rdtool-0.6.38/doc/rd-draft.rd +0 -479
- data/vendor/rdtool-0.6.38/doc/rd-draft.rd.ja +0 -487
- data/vendor/rdtool-0.6.38/lib/rd/block-element.rb +0 -114
- data/vendor/rdtool-0.6.38/lib/rd/complex-list-item.rb +0 -65
- data/vendor/rdtool-0.6.38/lib/rd/desclist.rb +0 -55
- data/vendor/rdtool-0.6.38/lib/rd/document-struct.rb +0 -46
- data/vendor/rdtool-0.6.38/lib/rd/dot.rd2rc +0 -18
- data/vendor/rdtool-0.6.38/lib/rd/element.rb +0 -160
- data/vendor/rdtool-0.6.38/lib/rd/filter.rb +0 -255
- data/vendor/rdtool-0.6.38/lib/rd/head-filter.rb +0 -14
- data/vendor/rdtool-0.6.38/lib/rd/inline-element.rb +0 -233
- data/vendor/rdtool-0.6.38/lib/rd/labeled-element.rb +0 -14
- data/vendor/rdtool-0.6.38/lib/rd/list.rb +0 -57
- data/vendor/rdtool-0.6.38/lib/rd/loose-struct.rb +0 -11
- data/vendor/rdtool-0.6.38/lib/rd/methodlist.rb +0 -57
- data/vendor/rdtool-0.6.38/lib/rd/output-format-visitor.rb +0 -30
- data/vendor/rdtool-0.6.38/lib/rd/package.rb +0 -4
- data/vendor/rdtool-0.6.38/lib/rd/parser-util.rb +0 -14
- data/vendor/rdtool-0.6.38/lib/rd/post-install +0 -1
- data/vendor/rdtool-0.6.38/lib/rd/pre-setup.rb +0 -18
- data/vendor/rdtool-0.6.38/lib/rd/rbl-file.rb +0 -69
- data/vendor/rdtool-0.6.38/lib/rd/rbl-suite.rb +0 -37
- data/vendor/rdtool-0.6.38/lib/rd/rd-struct.rb +0 -86
- data/vendor/rdtool-0.6.38/lib/rd/rd2html-ext-lib.rb +0 -266
- data/vendor/rdtool-0.6.38/lib/rd/rd2html-ext-opt.rb +0 -34
- data/vendor/rdtool-0.6.38/lib/rd/rd2html-lib.rb +0 -490
- data/vendor/rdtool-0.6.38/lib/rd/rd2html-opt.rb +0 -67
- data/vendor/rdtool-0.6.38/lib/rd/rd2man-lib.rb +0 -251
- data/vendor/rdtool-0.6.38/lib/rd/rd2rdo-lib.rb +0 -19
- data/vendor/rdtool-0.6.38/lib/rd/rd2rmi-lib.rb +0 -32
- data/vendor/rdtool-0.6.38/lib/rd/rdblockparser.ry +0 -518
- data/vendor/rdtool-0.6.38/lib/rd/rdblockparser.tab.rb +0 -1061
- data/vendor/rdtool-0.6.38/lib/rd/rdfmt.rb +0 -15
- data/vendor/rdtool-0.6.38/lib/rd/rdinlineparser.ry +0 -503
- data/vendor/rdtool-0.6.38/lib/rd/rdinlineparser.tab.rb +0 -1243
- data/vendor/rdtool-0.6.38/lib/rd/rdvisitor.rb +0 -214
- data/vendor/rdtool-0.6.38/lib/rd/reference-resolver.rb +0 -114
- data/vendor/rdtool-0.6.38/lib/rd/search-file.rb +0 -14
- data/vendor/rdtool-0.6.38/lib/rd/tree.rb +0 -103
- data/vendor/rdtool-0.6.38/lib/rd/version.rb +0 -41
- data/vendor/rdtool-0.6.38/lib/rd/visitor.rb +0 -86
- data/vendor/rdtool-0.6.38/rdtool.gemspec +0 -125
- data/vendor/rdtool-0.6.38/setup.rb +0 -1596
- data/vendor/rdtool-0.6.38/test/data/includee1.html +0 -1
- data/vendor/rdtool-0.6.38/test/data/includee2.html +0 -1
- data/vendor/rdtool-0.6.38/test/data/includee3.nothtml +0 -1
- data/vendor/rdtool-0.6.38/test/data/includee4.xhtml +0 -0
- data/vendor/rdtool-0.6.38/test/data/label.rbl +0 -2
- data/vendor/rdtool-0.6.38/test/data/label2.rbl +0 -2
- data/vendor/rdtool-0.6.38/test/data/sub/includee2.html +0 -1
- data/vendor/rdtool-0.6.38/test/data/sub/includee4.html +0 -0
- data/vendor/rdtool-0.6.38/test/dummy-observer.rb +0 -6
- data/vendor/rdtool-0.6.38/test/dummy.rb +0 -33
- data/vendor/rdtool-0.6.38/test/temp-dir.rb +0 -19
- data/vendor/rdtool-0.6.38/test/test-block-parser.rb +0 -46
- data/vendor/rdtool-0.6.38/test/test-desclist-item.rb +0 -219
- data/vendor/rdtool-0.6.38/test/test-document-element.rb +0 -46
- data/vendor/rdtool-0.6.38/test/test-document-struct.rb +0 -66
- data/vendor/rdtool-0.6.38/test/test-element.rb +0 -46
- data/vendor/rdtool-0.6.38/test/test-headline.rb +0 -80
- data/vendor/rdtool-0.6.38/test/test-inline-parser.rb +0 -46
- data/vendor/rdtool-0.6.38/test/test-list-item.rb +0 -54
- data/vendor/rdtool-0.6.38/test/test-list.rb +0 -53
- data/vendor/rdtool-0.6.38/test/test-methodlist-item.rb +0 -73
- data/vendor/rdtool-0.6.38/test/test-nonterminal-element.rb +0 -170
- data/vendor/rdtool-0.6.38/test/test-nonterminal-inline.rb +0 -33
- data/vendor/rdtool-0.6.38/test/test-output-format-visitor.rb +0 -48
- data/vendor/rdtool-0.6.38/test/test-parser-util.rb +0 -41
- data/vendor/rdtool-0.6.38/test/test-rbl-file.rb +0 -156
- data/vendor/rdtool-0.6.38/test/test-rbl-suite.rb +0 -43
- data/vendor/rdtool-0.6.38/test/test-rd2html-lib.rb +0 -496
- data/vendor/rdtool-0.6.38/test/test-rdtree.rb +0 -17
- data/vendor/rdtool-0.6.38/test/test-rdvisitor.rb +0 -29
- data/vendor/rdtool-0.6.38/test/test-reference-resolver.rb +0 -202
- data/vendor/rdtool-0.6.38/test/test-reference.rb +0 -132
- data/vendor/rdtool-0.6.38/test/test-search-file.rb +0 -22
- data/vendor/rdtool-0.6.38/test/test-terminal-inline.rb +0 -41
- data/vendor/rdtool-0.6.38/test/test-textblock.rb +0 -44
- data/vendor/rdtool-0.6.38/test/test-tree.rb +0 -82
- data/vendor/rdtool-0.6.38/test/test-version.rb +0 -57
- data/vendor/rdtool-0.6.38/test/test-visitor.rb +0 -230
- data/vendor/rdtool-0.6.38/utils/rd-mode.el +0 -464
@@ -1,67 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
= rd2html-opt.rb
|
3
|
-
sub-OptionParser for rd2html-lib.rb.
|
4
|
-
=end
|
5
|
-
require "optparse"
|
6
|
-
|
7
|
-
q = ARGV.options
|
8
|
-
|
9
|
-
q.on_tail("rd2html-lib options:")
|
10
|
-
|
11
|
-
|
12
|
-
#q.on_tail("--use-numbering-anchor",
|
13
|
-
# "use number for anchor name (old style)") do
|
14
|
-
# $Visitor.use_old_anchor = true
|
15
|
-
#end
|
16
|
-
|
17
|
-
q.on_tail("--output-rbl",
|
18
|
-
"output external Label file") do
|
19
|
-
$Visitor.output_rbl = true
|
20
|
-
end
|
21
|
-
|
22
|
-
q.on_tail("--with-css=FILE",
|
23
|
-
String,
|
24
|
-
"use FILE as CSS of output HTML") do |i|
|
25
|
-
$Visitor.css = i
|
26
|
-
end
|
27
|
-
|
28
|
-
q.on_tail("--html-charset=CHARSET",
|
29
|
-
String,
|
30
|
-
"indicate CHARSET as charset(char encoding)") do |i|
|
31
|
-
$Visitor.charset = i
|
32
|
-
end
|
33
|
-
|
34
|
-
q.on_tail("--html-lang=LANG",
|
35
|
-
String,
|
36
|
-
"indicate LANG as lang attribute of html") do |i|
|
37
|
-
$Visitor.lang = i
|
38
|
-
end
|
39
|
-
|
40
|
-
q.on_tail("--html-title=TITLE",
|
41
|
-
String,
|
42
|
-
"content of TITLE element of HTML") do |i|
|
43
|
-
$Visitor.title = i
|
44
|
-
end
|
45
|
-
|
46
|
-
q.on_tail("--html-link-rel=REL",
|
47
|
-
String,
|
48
|
-
"add forward LINK element.(\"<rel>:<href>\")") do |i|
|
49
|
-
if /(\w+):(.+)/ =~ i
|
50
|
-
$Visitor.html_link_rel[$1] = $2
|
51
|
-
else
|
52
|
-
# warning
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
q.on_tail("--html-link-rev=REV",
|
57
|
-
String,
|
58
|
-
"add reverse LINK element.(\"<rev>:<href>\")") do |i|
|
59
|
-
if /(\w+):(.+)/ =~ i
|
60
|
-
$Visitor.html_link_rev[$1] = $2
|
61
|
-
else
|
62
|
-
# warning
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
|
67
|
-
|
@@ -1,251 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
= rd/rd2man-lib.rb
|
3
|
-
=end
|
4
|
-
|
5
|
-
require "rd/rdvisitor"
|
6
|
-
require "rd/version"
|
7
|
-
|
8
|
-
unless [].respond_to? :collect!
|
9
|
-
class Array
|
10
|
-
alias collect! filter
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
module RD
|
15
|
-
class RD2MANVisitor < RDVisitor
|
16
|
-
include AutoLabel
|
17
|
-
include MethodParse
|
18
|
-
|
19
|
-
SYSTEM_NAME = "RDtool -- RD2ManVisitor"
|
20
|
-
SYSTEM_VERSION = "$Version: "+RD::VERSION+"$"
|
21
|
-
VERSION = Version.new_from_version_string(SYSTEM_NAME, SYSTEM_VERSION)
|
22
|
-
|
23
|
-
def self.version
|
24
|
-
VERSION
|
25
|
-
end
|
26
|
-
|
27
|
-
# must-have constants
|
28
|
-
OUTPUT_SUFFIX = "1"
|
29
|
-
INCLUDE_SUFFIX = ["1"]
|
30
|
-
|
31
|
-
def initialize
|
32
|
-
@enumcounter = 0
|
33
|
-
@index = {}
|
34
|
-
@filename = nil
|
35
|
-
end
|
36
|
-
|
37
|
-
def visit(tree)
|
38
|
-
prepare_labels(tree, "")
|
39
|
-
super(tree)
|
40
|
-
end
|
41
|
-
|
42
|
-
def apply_to_DocumentElement(element, content)
|
43
|
-
content = content.join
|
44
|
-
title = guess_title
|
45
|
-
title = title.sub(/\.rd$/i, '').upcase
|
46
|
-
<<"EOT"
|
47
|
-
.\\" DO NOT MODIFY THIS FILE! it was generated by rd2
|
48
|
-
.TH #{title} 1 "#{Time.now.strftime '%B %Y'}"
|
49
|
-
#{content}
|
50
|
-
EOT
|
51
|
-
end # "
|
52
|
-
|
53
|
-
def apply_to_Headline(element, title)
|
54
|
-
title = title.join(" ")
|
55
|
-
element.level <= 1 ? ".SH #{title}\n" : ".SS #{title}\n"
|
56
|
-
end
|
57
|
-
|
58
|
-
# RDVisitor#apply_to_Include
|
59
|
-
|
60
|
-
def apply_to_TextBlock(element, content)
|
61
|
-
if RD::DescListItem === element.parent ||
|
62
|
-
RD::ItemListItem === element.parent ||
|
63
|
-
RD::EnumListItem === element.parent
|
64
|
-
return content.join
|
65
|
-
else
|
66
|
-
return ".PP\n" + content.join
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def apply_to_Verbatim(element)
|
71
|
-
content = []
|
72
|
-
element.each_line do |i|
|
73
|
-
content.push(apply_to_String(i))
|
74
|
-
end
|
75
|
-
# Can we use BLOCKQUOTE such like?
|
76
|
-
%Q[.nf\n\\& #{content.join("\\& ")}.fi\n]
|
77
|
-
end
|
78
|
-
|
79
|
-
def apply_to_ItemList(element, items)
|
80
|
-
items.collect! do |x| x.sub(/\n\n/, "\n") end
|
81
|
-
items = items.join(".IP\n.B\n\\(bu\n") # "\\(bu" -> "" ?
|
82
|
-
".IP\n.B\n\\(bu\n" + items
|
83
|
-
end
|
84
|
-
|
85
|
-
def apply_to_EnumList(element, items)
|
86
|
-
@enumcounter = 0
|
87
|
-
items.join
|
88
|
-
end
|
89
|
-
|
90
|
-
def apply_to_DescList(element, items)
|
91
|
-
items.map{ |i| i =~ /\n$/ ? i : i + "\n" }.join("")
|
92
|
-
end
|
93
|
-
|
94
|
-
def apply_to_MethodList(element, items)
|
95
|
-
items.map{ |i| i =~ /\n$/ ? i : i + "\n" }.join("")
|
96
|
-
end
|
97
|
-
|
98
|
-
def apply_to_ItemListItem(element, content)
|
99
|
-
content.map{ |c| c =~ /\n$/ ? c : c + "\n" }.join("")
|
100
|
-
end
|
101
|
-
|
102
|
-
def apply_to_EnumListItem(element, content)
|
103
|
-
@enumcounter += 1
|
104
|
-
%Q[.TP\n#{@enumcounter}.\n#{content.join("\n")}]
|
105
|
-
end
|
106
|
-
|
107
|
-
def apply_to_DescListItem(element, term, description)
|
108
|
-
anchor = refer(element)
|
109
|
-
if description.empty?
|
110
|
-
".TP\n.fi\n.B\n#{term.join(" ")}"
|
111
|
-
else
|
112
|
-
%[.TP\n.fi\n.B\n#{term.join(" ")}\n#{description.join("\n")}].chomp
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
def apply_to_MethodListItem(element, term, description)
|
117
|
-
term = parse_method(term) # maybe: term -> element.term
|
118
|
-
anchor = refer(element)
|
119
|
-
if description.empty?
|
120
|
-
".TP\n.fi\n.B\n#{term.join(" ")}"
|
121
|
-
else
|
122
|
-
%[.TP\n.fi\n.B\n#{term.join(" ")}\n#{description.join("\n")}]
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
def parse_method(method)
|
127
|
-
klass, kind, method, args = MethodParse.analize_method(method)
|
128
|
-
|
129
|
-
if kind == :function
|
130
|
-
klass = kind = nil
|
131
|
-
else
|
132
|
-
kind = MethodParse.kind2str(kind)
|
133
|
-
end
|
134
|
-
|
135
|
-
case method
|
136
|
-
when "[]"
|
137
|
-
args.strip!
|
138
|
-
args.sub!(/^\((.*)\)$/, '\\1')
|
139
|
-
"#{klass}#{kind}[#{args}]"
|
140
|
-
when "[]="
|
141
|
-
args.strip!
|
142
|
-
args.sub!(/^\((.*)\)$/, '\\1')
|
143
|
-
args, val = /^(.*),([^,]*)$/.match(args)[1,2]
|
144
|
-
args.strip!
|
145
|
-
val.strip!
|
146
|
-
|
147
|
-
"#{klass}#{kind}[#{args}] = #{val}"
|
148
|
-
else
|
149
|
-
"#{klass}#{kind}#{method}#{args}"
|
150
|
-
end
|
151
|
-
end
|
152
|
-
private :parse_method
|
153
|
-
|
154
|
-
def apply_to_StringElement(element)
|
155
|
-
apply_to_String(element.content)
|
156
|
-
end
|
157
|
-
|
158
|
-
def apply_to_Emphasis(element, content)
|
159
|
-
%Q[\\fI#{content.join}\\fP]
|
160
|
-
end
|
161
|
-
|
162
|
-
def apply_to_Code(element, content)
|
163
|
-
%{\\&\\fB#{content.join.sub(/\./, '\\.')}\\fP}
|
164
|
-
end
|
165
|
-
|
166
|
-
def apply_to_Var(element, content)
|
167
|
-
content.join
|
168
|
-
end
|
169
|
-
|
170
|
-
def apply_to_Keyboard(element, content)
|
171
|
-
content.join
|
172
|
-
end
|
173
|
-
|
174
|
-
def apply_to_Index(element, content)
|
175
|
-
tmp = []
|
176
|
-
element.each do |i|
|
177
|
-
tmp.push(i) if i.is_a?(String)
|
178
|
-
end
|
179
|
-
key = meta_char_escape(tmp.join)
|
180
|
-
if @index.has_key?(key)
|
181
|
-
# warning?
|
182
|
-
""
|
183
|
-
else
|
184
|
-
num = @index[key] = @index.size
|
185
|
-
%{\\&\\fB#{content.join.sub(/\./, '\\.')}\\fP}
|
186
|
-
end
|
187
|
-
end
|
188
|
-
|
189
|
-
def apply_to_Reference(element, content)
|
190
|
-
case element.label
|
191
|
-
when Reference::URL
|
192
|
-
apply_to_RefToURL(element, content)
|
193
|
-
when Reference::RDLabel
|
194
|
-
if element.label.filename
|
195
|
-
apply_to_RefToOtherFile(element, content)
|
196
|
-
else
|
197
|
-
apply_to_RefToElement(element, content)
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
def apply_to_RefToElement(element, content)
|
203
|
-
content = content.join
|
204
|
-
content.sub(/^function#/, "")
|
205
|
-
end
|
206
|
-
|
207
|
-
def apply_to_RefToOtherFile(element, content)
|
208
|
-
content.join
|
209
|
-
end
|
210
|
-
|
211
|
-
def apply_to_RefToURL(element, content)
|
212
|
-
content.join
|
213
|
-
end
|
214
|
-
|
215
|
-
def apply_to_Footnote(element, content)
|
216
|
-
""
|
217
|
-
end
|
218
|
-
|
219
|
-
def apply_to_Verb(element)
|
220
|
-
apply_to_String(element.content)
|
221
|
-
end
|
222
|
-
|
223
|
-
def apply_to_String(element)
|
224
|
-
meta_char_escape(element)
|
225
|
-
end
|
226
|
-
|
227
|
-
def meta_char_escape(str)
|
228
|
-
str.gsub(/[-\\]/, '\\\\\\&').gsub(/^[.']/, '\\&') # '
|
229
|
-
end
|
230
|
-
private :meta_char_escape
|
231
|
-
|
232
|
-
def guess_title
|
233
|
-
return @input_filename unless @input_filename == "-"
|
234
|
-
return @filename if @filename
|
235
|
-
"Untitled"
|
236
|
-
end
|
237
|
-
private :guess_title
|
238
|
-
|
239
|
-
|
240
|
-
end # RD2MANVisitor
|
241
|
-
end # RD
|
242
|
-
|
243
|
-
$Visitor_Class = RD::RD2MANVisitor
|
244
|
-
|
245
|
-
=begin
|
246
|
-
== script info.
|
247
|
-
RD to MAN translate library for rdfmt.rb
|
248
|
-
$Id: rd2man-lib.rb,v 1.9 2003/08/02 15:45:49 tosh Exp $
|
249
|
-
Copyright 2000 WATANABE Hirofumi <eban@os.rim.or.jp>
|
250
|
-
2012 Youhei SASAKI <uwabami@gfd-dennou.org>
|
251
|
-
=end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
= rd2rdo-lib.rb
|
3
|
-
Format lib to dump tree objects.
|
4
|
-
=end
|
5
|
-
|
6
|
-
require "rd/rdvisitor"
|
7
|
-
|
8
|
-
module RD
|
9
|
-
class RD2RDOVisitor < RDVisitor
|
10
|
-
OUTPUT_SUFFIX = "rdo"
|
11
|
-
INCLUDE_SUFFIX = []
|
12
|
-
|
13
|
-
def visit(tree)
|
14
|
-
Marshal.dump(tree)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
$Visitor_Class = RD::RD2RDOVisitor
|
@@ -1,32 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
= rd2rmi-lib.rb
|
3
|
-
library to output RMI.
|
4
|
-
=end
|
5
|
-
require "rd/rdvisitor"
|
6
|
-
|
7
|
-
module RD
|
8
|
-
class RD2RMIVisitor < RDVisitor
|
9
|
-
include AutoLabel
|
10
|
-
include MethodParse
|
11
|
-
|
12
|
-
OUTPUT_SUFFIX = "rmi"
|
13
|
-
INCLUDE_SUFFIX = ["rmi"]
|
14
|
-
|
15
|
-
def visit(tree)
|
16
|
-
ret = ""
|
17
|
-
|
18
|
-
prepare_labels(tree)
|
19
|
-
|
20
|
-
index = make_method_index(tree)
|
21
|
-
index.each do |i|
|
22
|
-
i[1] = kind2str(i[1])
|
23
|
-
i[3] = @filename
|
24
|
-
i[4] = refer(i[0]+i[1]+i[2])
|
25
|
-
ret << "$method_index.push(#{i.inspect})\n"
|
26
|
-
end
|
27
|
-
ret
|
28
|
-
end
|
29
|
-
end # class RD2RMIVisitor
|
30
|
-
end # module RD
|
31
|
-
|
32
|
-
$Visitor_Class = RD::RD2RMIVisitor
|
@@ -1,518 +0,0 @@
|
|
1
|
-
|
2
|
-
class RDParser
|
3
|
-
|
4
|
-
preclow
|
5
|
-
nonassoc DUMMY
|
6
|
-
left ITEMLISTLINE ENUMLISTLINE DESCLISTLINE METHODLISTLINE STRINGLINE
|
7
|
-
prechigh
|
8
|
-
|
9
|
-
token STRINGLINE ITEMLISTLINE ENUMLISTLINE DESCLISTLINE METHODLISTLINE
|
10
|
-
WHITELINE SUBTREE HEADLINE INCLUDE INDENT DEDENT DUMMY
|
11
|
-
|
12
|
-
rule
|
13
|
-
document : blocks { result = DocumentElement.new
|
14
|
-
add_children_to_element(result, *val[0])
|
15
|
-
}
|
16
|
-
| {
|
17
|
-
raise ParseError,
|
18
|
-
"Error: file empty."
|
19
|
-
}
|
20
|
-
;
|
21
|
-
blocks : blocks block { result.concat(val[1]) }
|
22
|
-
| block
|
23
|
-
;
|
24
|
-
block : textblock { result = val }
|
25
|
-
| verbatim { result = val }
|
26
|
-
| lists
|
27
|
-
| headline { result = val }
|
28
|
-
| include { result = val }
|
29
|
-
| WHITELINE { result = [] }
|
30
|
-
| SUBTREE { result = val[0].blocks }
|
31
|
-
;
|
32
|
-
|
33
|
-
headline : HEADLINE { # val[0] is like [level, title]
|
34
|
-
title = @inline_parser.parse(val[0][1])
|
35
|
-
result = Headline.new(val[0][0])
|
36
|
-
add_children_to_element(result, *title)
|
37
|
-
}
|
38
|
-
;
|
39
|
-
include : INCLUDE { result = Include.new(val[0]) }
|
40
|
-
;
|
41
|
-
|
42
|
-
textblock : textblockcontent = DUMMY
|
43
|
-
{ # val[0] is Array of String
|
44
|
-
content = cut_off(val[0]).join("")
|
45
|
-
contents = @inline_parser.parse(content)
|
46
|
-
result = TextBlock.new()
|
47
|
-
add_children_to_element(result, *contents)
|
48
|
-
}
|
49
|
-
;
|
50
|
-
textblockcontent : textblockcontent STRINGLINE
|
51
|
-
{ result.push(val[1]) }
|
52
|
-
| STRINGLINE { result = val }
|
53
|
-
;
|
54
|
-
|
55
|
-
verbatim : INDENT verbatimcontent DEDENT
|
56
|
-
{ # val[1] is Array of String
|
57
|
-
content = cut_off(val[1])
|
58
|
-
result = Verbatim.new(content)
|
59
|
-
# imform to lexer.
|
60
|
-
@in_verbatim = false }
|
61
|
-
;
|
62
|
-
verbatim_after_lists : verbatimcontent
|
63
|
-
{ # val[0] is Array of String
|
64
|
-
content = cut_off(val[0])
|
65
|
-
result = Verbatim.new(content)
|
66
|
-
# imform to lexer.
|
67
|
-
@in_verbatim = false }
|
68
|
-
;
|
69
|
-
verbatimcontent : verbatimcontent STRINGLINE
|
70
|
-
{ result.push(val[1]) }
|
71
|
-
| verbatimcontent INDENT verbatimcontent DEDENT
|
72
|
-
{ result.concat(val[2]) }
|
73
|
-
| verbatimcontent WHITELINE
|
74
|
-
{ result.push("\n") }
|
75
|
-
| STRINGLINE { result = val
|
76
|
-
# imform to lexer.
|
77
|
-
@in_verbatim = true }
|
78
|
-
;
|
79
|
-
|
80
|
-
list : itemlist
|
81
|
-
| enumlist
|
82
|
-
| desclist
|
83
|
-
| methodlist
|
84
|
-
;
|
85
|
-
lists : lists2 = DUMMY
|
86
|
-
| INDENT lists2 DEDENT { result = val[1] }
|
87
|
-
| INDENT lists2 verbatim_after_lists DEDENT
|
88
|
-
{ result = val[1].push(val[2]) }
|
89
|
-
;
|
90
|
-
|
91
|
-
lists2 : lists2 list { result.push(val[1]) }
|
92
|
-
| list { result = val }
|
93
|
-
;
|
94
|
-
|
95
|
-
itemlist : itemlistitems = DUMMY {
|
96
|
-
result = ItemList.new
|
97
|
-
add_children_to_element(result, *val[0])
|
98
|
-
}
|
99
|
-
;
|
100
|
-
itemlistitems : itemlistitems itemlistitem
|
101
|
-
{ result.push(val[1]) }
|
102
|
-
| itemlistitem { result = val }
|
103
|
-
;
|
104
|
-
itemlistitem : first_textblock_in_itemlist other_blocks_in_list DEDENT
|
105
|
-
{
|
106
|
-
result = ItemListItem.new
|
107
|
-
add_children_to_element(result, val[0], *val[1])
|
108
|
-
}
|
109
|
-
;
|
110
|
-
|
111
|
-
enumlist : enumlistitems = DUMMY {
|
112
|
-
result = EnumList.new
|
113
|
-
add_children_to_element(result, *val[0])
|
114
|
-
}
|
115
|
-
;
|
116
|
-
enumlistitems : enumlistitems enumlistitem
|
117
|
-
{ result.push(val[1]) }
|
118
|
-
| enumlistitem { result = val }
|
119
|
-
;
|
120
|
-
enumlistitem : first_textblock_in_enumlist other_blocks_in_list DEDENT
|
121
|
-
{
|
122
|
-
result = EnumListItem.new
|
123
|
-
add_children_to_element(result, val[0], *val[1])
|
124
|
-
}
|
125
|
-
;
|
126
|
-
|
127
|
-
desclist : desclistitems = DUMMY {
|
128
|
-
result = DescList.new
|
129
|
-
add_children_to_element(result, *val[0])
|
130
|
-
}
|
131
|
-
;
|
132
|
-
desclistitems : desclistitems desclistitem {
|
133
|
-
result.push(val[1]) }
|
134
|
-
| desclistitem { result = val }
|
135
|
-
;
|
136
|
-
desclistitem : DESCLISTLINE description_part DEDENT
|
137
|
-
{
|
138
|
-
term = DescListItem::Term.new
|
139
|
-
term_contents = @inline_parser.parse(val[0].strip)
|
140
|
-
add_children_to_element(term, *term_contents)
|
141
|
-
|
142
|
-
result = DescListItem.new
|
143
|
-
set_term_to_element(result, term)
|
144
|
-
add_children_to_element(result, *val[1])
|
145
|
-
}
|
146
|
-
;
|
147
|
-
|
148
|
-
methodlist : methodlistitems = DUMMY {
|
149
|
-
result = MethodList.new
|
150
|
-
add_children_to_element(result, *val[0])
|
151
|
-
}
|
152
|
-
;
|
153
|
-
methodlistitems : methodlistitems methodlistitem
|
154
|
-
{ result.push(val[1]) }
|
155
|
-
| methodlistitem { result = val }
|
156
|
-
;
|
157
|
-
methodlistitem : METHODLISTLINE description_part DEDENT
|
158
|
-
{
|
159
|
-
term = MethodListItem::Term.new(val[0].strip)
|
160
|
-
result = MethodListItem.new
|
161
|
-
set_term_to_element(result, term)
|
162
|
-
add_children_to_element(result, *val[1])
|
163
|
-
}
|
164
|
-
;
|
165
|
-
|
166
|
-
description_part : whitelines textblock blocks_in_list
|
167
|
-
{ result = [val[1]].concat(val[2]) }
|
168
|
-
| whitelines textblock { result = [val[1]] }
|
169
|
-
| whitelines INDENT blocks_in_list DEDENT
|
170
|
-
{ result = val[2] }
|
171
|
-
| whitelines { result = [] }
|
172
|
-
;
|
173
|
-
|
174
|
-
blocks_in_list : blocks_in_list block_in_list { result.concat(val[1]) }
|
175
|
-
| block_in_list
|
176
|
-
;
|
177
|
-
block_in_list : textblock { result = val }
|
178
|
-
| verbatim { result = val }
|
179
|
-
| lists
|
180
|
-
| WHITELINE { result = [] }
|
181
|
-
;
|
182
|
-
whitelines : whitelines2
|
183
|
-
|
|
184
|
-
;
|
185
|
-
whitelines2 : WHITELINE whitelines2
|
186
|
-
| WHITELINE
|
187
|
-
;
|
188
|
-
|
189
|
-
first_textblock_in_itemlist : ITEMLISTLINE textblockcontent
|
190
|
-
|
191
|
-
{ content = cut_off([val[0]].concat(val[1])).join("")
|
192
|
-
contents = @inline_parser.parse(content)
|
193
|
-
result = TextBlock.new()
|
194
|
-
add_children_to_element(result, *contents)
|
195
|
-
}
|
196
|
-
| ITEMLISTLINE
|
197
|
-
|
198
|
-
{ content = cut_off([val[0]]).join("")
|
199
|
-
contents = @inline_parser.parse(content)
|
200
|
-
result = TextBlock.new()
|
201
|
-
add_children_to_element(result, *contents)
|
202
|
-
}
|
203
|
-
;
|
204
|
-
first_textblock_in_enumlist : ENUMLISTLINE textblockcontent
|
205
|
-
|
206
|
-
{ content = cut_off([val[0]].concat(val[1])).join("")
|
207
|
-
contents = @inline_parser.parse(content)
|
208
|
-
result = TextBlock.new()
|
209
|
-
add_children_to_element(result, *contents)
|
210
|
-
}
|
211
|
-
| ENUMLISTLINE
|
212
|
-
|
213
|
-
{ content = cut_off([val[0]]).join("")
|
214
|
-
contents = @inline_parser.parse(content)
|
215
|
-
result = TextBlock.new()
|
216
|
-
add_children_to_element(result, *contents)
|
217
|
-
}
|
218
|
-
;
|
219
|
-
other_blocks_in_list : verbatim blocks_in_list
|
220
|
-
{ result = [val[0]].concat(val[1]) }
|
221
|
-
| lists blocks_in_list { result.concat(val[1]) }
|
222
|
-
| WHITELINE blocks_in_list { result = val[1] }
|
223
|
-
| verbatim { result = val }
|
224
|
-
| lists
|
225
|
-
| WHITELINE { result = [] }
|
226
|
-
| { result = [] }
|
227
|
-
;
|
228
|
-
end
|
229
|
-
|
230
|
-
---- inner
|
231
|
-
include ParserUtility
|
232
|
-
|
233
|
-
TMPFILE = ["rdtmp", $$, 0]
|
234
|
-
|
235
|
-
attr_reader :tree
|
236
|
-
|
237
|
-
def initialize
|
238
|
-
@inline_parser = RDInlineParser.new(self)
|
239
|
-
end
|
240
|
-
|
241
|
-
def parse(src, tree)
|
242
|
-
@src = src
|
243
|
-
@src.push(false)
|
244
|
-
# RDtree
|
245
|
-
@tree = tree
|
246
|
-
|
247
|
-
# @i: index(line no.) of src
|
248
|
-
@i = 0
|
249
|
-
# stack for current indentation
|
250
|
-
@indent_stack = []
|
251
|
-
# how indented.
|
252
|
-
@current_indent = @indent_stack.join("")
|
253
|
-
# RDParser for tmp src
|
254
|
-
@subparser = nil
|
255
|
-
# which part is in now
|
256
|
-
@in_part = nil
|
257
|
-
@part_content = []
|
258
|
-
|
259
|
-
@in_verbatim = false
|
260
|
-
|
261
|
-
@yydebug = true
|
262
|
-
do_parse
|
263
|
-
end
|
264
|
-
|
265
|
-
def next_token
|
266
|
-
# preprocessing
|
267
|
-
# if it is not in RD part
|
268
|
-
# => method
|
269
|
-
while @in_part != "rd"
|
270
|
-
line = @src[@i]
|
271
|
-
@i += 1 # next line
|
272
|
-
|
273
|
-
case line
|
274
|
-
# src end
|
275
|
-
when false
|
276
|
-
return [false, false]
|
277
|
-
# RD part begin
|
278
|
-
when /^=begin\s*(?:\bRD\b.*)?\s*$/
|
279
|
-
if @in_part # if in non-RD part
|
280
|
-
@part_content.push(line)
|
281
|
-
else
|
282
|
-
@in_part = "rd"
|
283
|
-
return [:WHITELINE, "=begin\n"] # <= for textblockand
|
284
|
-
end
|
285
|
-
# non-RD part begin
|
286
|
-
when /^=begin\s+(\w+)/
|
287
|
-
part = $1
|
288
|
-
if @in_part # if in non-RD part
|
289
|
-
@part_content.push(line)
|
290
|
-
else
|
291
|
-
@in_part = part if @tree.filter[part] # if filter exists
|
292
|
-
# p "BEGIN_PART: #{@in_part}" # DEBUG
|
293
|
-
end
|
294
|
-
# non-RD part end
|
295
|
-
when /^=end/
|
296
|
-
if @in_part # if in non-RD part
|
297
|
-
# p "END_PART: #{@in_part}" # DEBUG
|
298
|
-
# make Part-in object
|
299
|
-
part = RD::Part.new(@part_content.join(""), @tree, "r")
|
300
|
-
@part_content.clear
|
301
|
-
# call filter, part_out is output(Part object)
|
302
|
-
part_out = @tree.filter[@in_part].call(part)
|
303
|
-
|
304
|
-
if @tree.filter[@in_part].mode == :rd # if output is RD formated
|
305
|
-
subtree = parse_subtree( (RUBY_VERSION >= '1.9.0' ? part_out.lines.to_a : part_out.to_a ) )
|
306
|
-
else # if output is target formated
|
307
|
-
basename = TMPFILE.join('.')
|
308
|
-
TMPFILE[-1] += 1
|
309
|
-
tmpfile = open(@tree.tmp_dir + "/" + basename + ".#{@in_part}", "w")
|
310
|
-
tmpfile.print(part_out)
|
311
|
-
tmpfile.close
|
312
|
-
subtree = parse_subtree(["=begin\n", "<<< #{basename}\n", "=end\n"])
|
313
|
-
end
|
314
|
-
@in_part = nil
|
315
|
-
return [:SUBTREE, subtree]
|
316
|
-
end
|
317
|
-
else
|
318
|
-
if @in_part # if in non-RD part
|
319
|
-
@part_content.push(line)
|
320
|
-
end
|
321
|
-
end
|
322
|
-
end
|
323
|
-
|
324
|
-
@current_indent = @indent_stack.join("")
|
325
|
-
line = @src[@i]
|
326
|
-
case line
|
327
|
-
when false
|
328
|
-
if_current_indent_equal("") do
|
329
|
-
[false, false]
|
330
|
-
end
|
331
|
-
when /^=end/
|
332
|
-
if_current_indent_equal("") do
|
333
|
-
@in_part = nil
|
334
|
-
[:WHITELINE, "=end"] # MUST CHANGE??
|
335
|
-
end
|
336
|
-
when /^\s*$/
|
337
|
-
@i += 1 # next line
|
338
|
-
return [:WHITELINE, ':WHITELINE']
|
339
|
-
when /^\#/ # comment line
|
340
|
-
@i += 1 # next line
|
341
|
-
self.next_token()
|
342
|
-
when /^(={1,4})(?!=)\s*(?=\S)/, /^(\+{1,2})(?!\+)\s*(?=\S)/
|
343
|
-
rest = $' # '
|
344
|
-
rest.strip!
|
345
|
-
mark = $1
|
346
|
-
if_current_indent_equal("") do
|
347
|
-
return [:HEADLINE, [Headline.mark_to_level(mark), rest]]
|
348
|
-
end
|
349
|
-
when /^<<<\s*(\S+)/
|
350
|
-
file = $1
|
351
|
-
if_current_indent_equal("") do
|
352
|
-
suffix = file[-3 .. -1]
|
353
|
-
if suffix == ".rd" or suffix == ".rb"
|
354
|
-
subtree = parse_subtree(get_included(file))
|
355
|
-
[:SUBTREE, subtree]
|
356
|
-
else
|
357
|
-
[:INCLUDE, file]
|
358
|
-
end
|
359
|
-
end
|
360
|
-
when /^(\s*)\*(\s*)/
|
361
|
-
rest = $' # '
|
362
|
-
newIndent = $2
|
363
|
-
if_current_indent_equal($1) do
|
364
|
-
if @in_verbatim
|
365
|
-
[:STRINGLINE, line]
|
366
|
-
else
|
367
|
-
@indent_stack.push("\s" << newIndent)
|
368
|
-
[:ITEMLISTLINE, rest]
|
369
|
-
end
|
370
|
-
end
|
371
|
-
when /^(\s*)(\(\d+\))(\s*)/
|
372
|
-
rest = $' # '
|
373
|
-
mark = $2
|
374
|
-
newIndent = $3
|
375
|
-
if_current_indent_equal($1) do
|
376
|
-
if @in_verbatim
|
377
|
-
[:STRINGLINE, line]
|
378
|
-
else
|
379
|
-
@indent_stack.push("\s" * mark.size << newIndent)
|
380
|
-
[:ENUMLISTLINE, rest]
|
381
|
-
end
|
382
|
-
end
|
383
|
-
when /^(\s*):(\s*)/
|
384
|
-
rest = $' # '
|
385
|
-
newIndent = $2
|
386
|
-
if_current_indent_equal($1) do
|
387
|
-
if @in_verbatim
|
388
|
-
[:STRINGLINE, line]
|
389
|
-
else
|
390
|
-
@indent_stack.push("\s" << $2)
|
391
|
-
[:DESCLISTLINE, rest]
|
392
|
-
end
|
393
|
-
end
|
394
|
-
when /^(\s*)---(?!-|\s*$)/
|
395
|
-
indent = $1
|
396
|
-
rest = $'
|
397
|
-
/\s*/ === rest
|
398
|
-
term = $'
|
399
|
-
new_indent = $&
|
400
|
-
if_current_indent_equal(indent) do
|
401
|
-
if @in_verbatim
|
402
|
-
[:STRINGLINE, line]
|
403
|
-
else
|
404
|
-
@indent_stack.push("\s\s\s" + new_indent)
|
405
|
-
[:METHODLISTLINE, term]
|
406
|
-
end
|
407
|
-
end
|
408
|
-
when /^(\s*)/
|
409
|
-
if_current_indent_equal($1) do
|
410
|
-
[:STRINGLINE, line]
|
411
|
-
end
|
412
|
-
else
|
413
|
-
raise "[BUG] parsing error may occured."
|
414
|
-
end
|
415
|
-
end
|
416
|
-
|
417
|
-
=begin private
|
418
|
-
--- RDParser#if_current_indent_equal(indent)
|
419
|
-
if (({@current_indent == ((|indent|))})) then yield block, otherwise
|
420
|
-
process indentation.
|
421
|
-
=end
|
422
|
-
# always @current_indent = @indent_stack.join("")
|
423
|
-
def if_current_indent_equal(indent)
|
424
|
-
indent = indent.sub(/\t/, "\s" * 8)
|
425
|
-
if @current_indent == indent
|
426
|
-
@i += 1 # next line
|
427
|
-
yield
|
428
|
-
elsif indent.index(@current_indent) == 0
|
429
|
-
@indent_stack.push(indent[@current_indent.size .. -1])
|
430
|
-
[:INDENT, ":INDENT"]
|
431
|
-
else
|
432
|
-
@indent_stack.pop
|
433
|
-
[:DEDENT, ":DEDENT"]
|
434
|
-
end
|
435
|
-
end
|
436
|
-
private :if_current_indent_equal
|
437
|
-
|
438
|
-
def cut_off(src)
|
439
|
-
ret = []
|
440
|
-
whiteline_buf = []
|
441
|
-
line = src.shift
|
442
|
-
/^\s*/ =~ line
|
443
|
-
indent = Regexp.quote($&)
|
444
|
-
ret.push($') # '
|
445
|
-
while line = src.shift
|
446
|
-
if /^(\s*)$/ =~ line
|
447
|
-
whiteline_buf.push(line)
|
448
|
-
elsif /^#{indent}/ =~ line
|
449
|
-
unless whiteline_buf.empty?
|
450
|
-
ret.concat(whiteline_buf)
|
451
|
-
whiteline_buf.clear
|
452
|
-
end
|
453
|
-
ret.push($') # '
|
454
|
-
else
|
455
|
-
raise "[BUG]: probably Parser Error while cutting off.\n"
|
456
|
-
end
|
457
|
-
end
|
458
|
-
ret
|
459
|
-
end
|
460
|
-
private :cut_off
|
461
|
-
|
462
|
-
def set_term_to_element(parent, term)
|
463
|
-
# parent.set_term_under_document_struct(term, @tree.document_struct)
|
464
|
-
parent.set_term_without_document_struct(term)
|
465
|
-
end
|
466
|
-
private :set_term_to_element
|
467
|
-
|
468
|
-
def on_error( et, ev, _values )
|
469
|
-
line = @src[@i]
|
470
|
-
prv, cur, nxt = format_line_num(@i, @i+1, @i+2)
|
471
|
-
|
472
|
-
raise ParseError, <<Msg
|
473
|
-
|
474
|
-
RD syntax error: line #{@i+1}:
|
475
|
-
#{prv} |#{@src[@i-1].chomp}
|
476
|
-
#{cur}=>|#{@src[@i].chomp}
|
477
|
-
#{nxt} |#{@src[@i+1].chomp}
|
478
|
-
|
479
|
-
Msg
|
480
|
-
end
|
481
|
-
|
482
|
-
def line_index
|
483
|
-
@i
|
484
|
-
end
|
485
|
-
|
486
|
-
def parse_subtree(src)
|
487
|
-
@subparser = RD::RDParser.new() unless @subparser
|
488
|
-
|
489
|
-
@subparser.parse(src, @tree)
|
490
|
-
end
|
491
|
-
private :parse_subtree
|
492
|
-
|
493
|
-
def get_included(file)
|
494
|
-
included = ""
|
495
|
-
@tree.include_path.each do |dir|
|
496
|
-
file_name = dir + "/" + file
|
497
|
-
if test(?e, file_name)
|
498
|
-
included = IO.readlines(file_name)
|
499
|
-
break
|
500
|
-
end
|
501
|
-
end
|
502
|
-
included
|
503
|
-
end
|
504
|
-
private :get_included
|
505
|
-
|
506
|
-
def format_line_num(*args)
|
507
|
-
width = args.collect{|i| i.to_s.length }.max
|
508
|
-
args.collect{|i| sprintf("%#{width}d", i) }
|
509
|
-
end
|
510
|
-
private :format_line_num
|
511
|
-
|
512
|
-
---- header
|
513
|
-
require "rd/rdinlineparser.tab.rb"
|
514
|
-
require "rd/parser-util"
|
515
|
-
|
516
|
-
module RD
|
517
|
-
---- footer
|
518
|
-
end # end of module RD
|