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,114 +0,0 @@
|
|
1
|
-
require 'rd/element'
|
2
|
-
require 'rd/labeled-element'
|
3
|
-
|
4
|
-
module RD
|
5
|
-
# Block-level Element of document tree. abstruct class.
|
6
|
-
class BlockElement < Element
|
7
|
-
end
|
8
|
-
|
9
|
-
class Headline < BlockElement
|
10
|
-
include NonterminalElement
|
11
|
-
include LabeledElement
|
12
|
-
|
13
|
-
MARK2LEVEL = {
|
14
|
-
"=" => 1,
|
15
|
-
"==" => 2,
|
16
|
-
"===" => 3,
|
17
|
-
"====" => 4,
|
18
|
-
"+" => 5,
|
19
|
-
"++" => 6
|
20
|
-
}
|
21
|
-
|
22
|
-
attr_accessor :level
|
23
|
-
attr_reader :title
|
24
|
-
|
25
|
-
def initialize(level_num)
|
26
|
-
super()
|
27
|
-
@level = level_num
|
28
|
-
@title = []
|
29
|
-
end
|
30
|
-
|
31
|
-
def accept(visitor)
|
32
|
-
visitor.visit_Headline(self)
|
33
|
-
end
|
34
|
-
|
35
|
-
def calculate_label
|
36
|
-
ret = ""
|
37
|
-
@title.each do |i|
|
38
|
-
ret << i.to_label
|
39
|
-
end
|
40
|
-
ret
|
41
|
-
end
|
42
|
-
private :calculate_label
|
43
|
-
|
44
|
-
def Headline.mark_to_level(mark_str)
|
45
|
-
MARK2LEVEL[mark_str] or
|
46
|
-
raise ArgumentError, "#{mark_str} is irregular for Headline mark."
|
47
|
-
end
|
48
|
-
|
49
|
-
def children
|
50
|
-
@title
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
class Include < BlockElement
|
55
|
-
include TerminalElement
|
56
|
-
|
57
|
-
attr_accessor :filename
|
58
|
-
|
59
|
-
def initialize(filename)
|
60
|
-
super()
|
61
|
-
@filename = filename
|
62
|
-
end
|
63
|
-
|
64
|
-
def accept(visitor)
|
65
|
-
visitor.visit_Include(self)
|
66
|
-
end
|
67
|
-
end # Include
|
68
|
-
|
69
|
-
class TextBlock < BlockElement
|
70
|
-
include NonterminalElement
|
71
|
-
|
72
|
-
attr_accessor :content
|
73
|
-
|
74
|
-
def initialize()
|
75
|
-
super()
|
76
|
-
@content = []
|
77
|
-
end
|
78
|
-
|
79
|
-
def accept(visitor)
|
80
|
-
visitor.visit_TextBlock(self)
|
81
|
-
end
|
82
|
-
|
83
|
-
def children
|
84
|
-
@content
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
class Verbatim < BlockElement
|
89
|
-
include TerminalElement
|
90
|
-
|
91
|
-
attr_reader :content
|
92
|
-
|
93
|
-
def initialize(content_strings = [])
|
94
|
-
super()
|
95
|
-
@content = content_strings # Array of String
|
96
|
-
end
|
97
|
-
|
98
|
-
def accept(visitor)
|
99
|
-
visitor.visit_Verbatim(self)
|
100
|
-
end
|
101
|
-
|
102
|
-
def each_line
|
103
|
-
if @content.respond_to?(:each_line)
|
104
|
-
@content.each_line {|i|
|
105
|
-
yield i
|
106
|
-
}
|
107
|
-
else
|
108
|
-
@content.each {|i|
|
109
|
-
yield i
|
110
|
-
}
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module RD
|
4
|
-
# abstruct class for ListItem which have term part additionaly.
|
5
|
-
# (i.e. DescListItem and MethodListItem)
|
6
|
-
module ComplexListItem
|
7
|
-
def set_term(term)
|
8
|
-
set_term_under_document_struct(term, tree.document_struct)
|
9
|
-
end
|
10
|
-
alias term= set_term
|
11
|
-
|
12
|
-
def set_term_under_document_struct(term, document_struct)
|
13
|
-
raise ArgumentError unless document_struct.is_valid?(self, term)
|
14
|
-
assign_term(term)
|
15
|
-
end
|
16
|
-
|
17
|
-
def set_term_without_document_struct(term)
|
18
|
-
assign_term(term)
|
19
|
-
end
|
20
|
-
|
21
|
-
def assign_term(term)
|
22
|
-
@term = term
|
23
|
-
term.parent = self
|
24
|
-
end
|
25
|
-
|
26
|
-
def make_term(*args_of_new, &block)
|
27
|
-
child = self.class::Term.new(*args_of_new)
|
28
|
-
set_term(child)
|
29
|
-
child.build(&block) if block_given?
|
30
|
-
child
|
31
|
-
end
|
32
|
-
|
33
|
-
def each_element(&block)
|
34
|
-
yield(self)
|
35
|
-
@term.each_element(&block)
|
36
|
-
@description.each do |i|
|
37
|
-
i.each_element(&block)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
alias each each_element
|
41
|
-
|
42
|
-
def each_block_in_description
|
43
|
-
@description.each do |i|
|
44
|
-
yield(i)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
alias each_block each_block_in_description
|
48
|
-
|
49
|
-
def children
|
50
|
-
@description
|
51
|
-
end
|
52
|
-
|
53
|
-
def to_label
|
54
|
-
@term.to_label
|
55
|
-
end
|
56
|
-
alias label to_label
|
57
|
-
|
58
|
-
def inspect
|
59
|
-
t = indent2(term.inspect) if term
|
60
|
-
c = children.collect{|i| indent2(i.inspect)}.join("\n")
|
61
|
-
"<#{self.class.name}>" + (term ? "\n" : "") + t.to_s +
|
62
|
-
(c.empty? ? "" : "\n") + c
|
63
|
-
end
|
64
|
-
end # ComplexListItem
|
65
|
-
end # RD
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'rd/element'
|
2
|
-
require 'rd/list'
|
3
|
-
require 'rd/complex-list-item'
|
4
|
-
require 'rd/labeled-element'
|
5
|
-
|
6
|
-
module RD
|
7
|
-
class DescList < List
|
8
|
-
def accept(visitor)
|
9
|
-
visitor.visit_DescList(self)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
class DescListItem < ListItem
|
14
|
-
include ComplexListItem
|
15
|
-
|
16
|
-
attr_reader :term
|
17
|
-
attr_reader :description
|
18
|
-
|
19
|
-
def initialize
|
20
|
-
@term = nil
|
21
|
-
@description = []
|
22
|
-
@label = nil
|
23
|
-
end
|
24
|
-
|
25
|
-
def accept(visitor)
|
26
|
-
visitor.visit_DescListItem(self)
|
27
|
-
end
|
28
|
-
|
29
|
-
class Term < Element
|
30
|
-
include NonterminalElement
|
31
|
-
include LabeledElement
|
32
|
-
|
33
|
-
def initialize
|
34
|
-
@content = []
|
35
|
-
end
|
36
|
-
|
37
|
-
def calculate_label
|
38
|
-
ret = ""
|
39
|
-
children.each do |i|
|
40
|
-
ret.concat(i.to_label)
|
41
|
-
end
|
42
|
-
ret
|
43
|
-
end
|
44
|
-
private :calculate_label
|
45
|
-
|
46
|
-
def accept(visitor)
|
47
|
-
visitor.visit_DescListItemTerm(self)
|
48
|
-
end
|
49
|
-
|
50
|
-
def children
|
51
|
-
@content
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end # DescListItem
|
55
|
-
end # RD
|
@@ -1,46 +0,0 @@
|
|
1
|
-
|
2
|
-
module RD
|
3
|
-
# DocumentStructure defines and restricts structure of document tree.
|
4
|
-
# it consists of ElementRelationship
|
5
|
-
class DocumentStructure
|
6
|
-
def initialize
|
7
|
-
@relationships = []
|
8
|
-
end
|
9
|
-
|
10
|
-
def add_relationships(*relations)
|
11
|
-
@relationships += relations
|
12
|
-
end
|
13
|
-
|
14
|
-
def define_relationship(parent, child)
|
15
|
-
add_relationships(ElementRelationship.new(parent, child))
|
16
|
-
end
|
17
|
-
|
18
|
-
def each_relationship
|
19
|
-
@relationships.each do |i|
|
20
|
-
yield(i)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def is_valid?(parent, child)
|
25
|
-
each_relationship do |i|
|
26
|
-
return true if i.match?(parent, child)
|
27
|
-
end
|
28
|
-
false
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
# ElementRelationship is knowledge about parent-children relationship
|
33
|
-
# between Elements.
|
34
|
-
class ElementRelationship
|
35
|
-
attr_reader(:parent, :child)
|
36
|
-
|
37
|
-
def initialize(parent, child)
|
38
|
-
@parent = parent
|
39
|
-
@child = child
|
40
|
-
end
|
41
|
-
|
42
|
-
def match?(parent, child)
|
43
|
-
parent.is_a? @parent and child.is_a? @child
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
=begin
|
2
|
-
= dot.rd2rc
|
3
|
-
default dot file for "rd2".
|
4
|
-
=end
|
5
|
-
|
6
|
-
# define relation between types of part and Filter to set $RD["filter"]
|
7
|
-
# RD::INCLUDE_FILTER is used if type doesn't set.
|
8
|
-
# $RC["filter"]["((|type|))"] = ((|Filter|))
|
9
|
-
|
10
|
-
$RC["filter"]["include"] = RD::INCLUDE_FILTER
|
11
|
-
$RC["filter"]["rd"] = RD::RD_FILTER
|
12
|
-
$RC["filter"]["eval"] = RD::EVAL_FILTER
|
13
|
-
|
14
|
-
=begin
|
15
|
-
== script info.
|
16
|
-
default dot file for "rd2".
|
17
|
-
$Id: dot.rd2rc,v 1.2 2000/06/09 15:48:42 toshirok Exp $
|
18
|
-
=end
|
@@ -1,160 +0,0 @@
|
|
1
|
-
|
2
|
-
module RD
|
3
|
-
|
4
|
-
# abstruct class of node of document tree
|
5
|
-
class Element
|
6
|
-
include Enumerable
|
7
|
-
|
8
|
-
attr_accessor :parent
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
@parent = nil
|
12
|
-
end
|
13
|
-
|
14
|
-
def tree
|
15
|
-
raise RuntimeError, "#{self} doesn't have a parent." unless @parent
|
16
|
-
@parent.tree
|
17
|
-
end
|
18
|
-
|
19
|
-
def inspect
|
20
|
-
c = children.collect{|i| indent2(i.inspect)}.join("\n")
|
21
|
-
"<#{self.class.name}>" + (c.empty? ? "" : "\n") + c
|
22
|
-
end
|
23
|
-
end # Element
|
24
|
-
|
25
|
-
# element which don't have children.
|
26
|
-
module TerminalElement
|
27
|
-
def children
|
28
|
-
[]
|
29
|
-
end
|
30
|
-
|
31
|
-
def each_element
|
32
|
-
yield(self)
|
33
|
-
end
|
34
|
-
alias each each_element
|
35
|
-
end
|
36
|
-
|
37
|
-
# element which have children.
|
38
|
-
module NonterminalElement
|
39
|
-
def initialize(*arg)
|
40
|
-
@temporary_document_structure = nil
|
41
|
-
super
|
42
|
-
end
|
43
|
-
|
44
|
-
def children
|
45
|
-
raise NotImplimentedError, "need #{self}#children."
|
46
|
-
end
|
47
|
-
|
48
|
-
def each_child
|
49
|
-
children.each do |i|
|
50
|
-
yield(i)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def each_element(&block)
|
55
|
-
yield(self)
|
56
|
-
children.each do |i|
|
57
|
-
i.each_element(&block)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
alias each each_element
|
61
|
-
|
62
|
-
def add_child(child)
|
63
|
-
add_child_under_document_struct(child, tree.document_struct)
|
64
|
-
end
|
65
|
-
|
66
|
-
def add_child_under_document_struct(child, document_struct)
|
67
|
-
if document_struct.is_valid?(self, child)
|
68
|
-
push_to_children(child)
|
69
|
-
else
|
70
|
-
raise ArgumentError,
|
71
|
-
"mismatched document structure, #{self} <-/- #{child}."
|
72
|
-
end
|
73
|
-
return self
|
74
|
-
end
|
75
|
-
|
76
|
-
def add_children(children)
|
77
|
-
add_children_under_document_struct(children, tree.document_struct)
|
78
|
-
end
|
79
|
-
|
80
|
-
def add_children_under_document_struct(children, document_struct)
|
81
|
-
children.each do |i|
|
82
|
-
add_child_under_document_struct(i, document_struct)
|
83
|
-
end
|
84
|
-
return self
|
85
|
-
end
|
86
|
-
|
87
|
-
def add_children_without_document_struct(new_children)
|
88
|
-
new_children.each do |i|
|
89
|
-
push_to_children(i)
|
90
|
-
end
|
91
|
-
return self
|
92
|
-
end
|
93
|
-
|
94
|
-
def push_to_children(child)
|
95
|
-
children.push(child)
|
96
|
-
child.parent = self
|
97
|
-
end
|
98
|
-
|
99
|
-
attr_accessor :temporary_document_structure
|
100
|
-
|
101
|
-
def build(document_struct = tree.document_struct, &block)
|
102
|
-
under_temporary_document_structure(document_struct) do
|
103
|
-
self.instance_eval(&block)
|
104
|
-
end
|
105
|
-
self
|
106
|
-
end
|
107
|
-
|
108
|
-
def make_child(child_class, *args_of_new, &block)
|
109
|
-
child = child_class.new(*args_of_new)
|
110
|
-
if self.temporary_document_structure
|
111
|
-
self.add_child_under_document_struct(child,
|
112
|
-
self.temporary_document_structure)
|
113
|
-
child.build(self.temporary_document_structure, &block) if block_given?
|
114
|
-
else
|
115
|
-
self.add_child(child)
|
116
|
-
child.build(&block) if block_given?
|
117
|
-
end
|
118
|
-
child
|
119
|
-
end
|
120
|
-
alias new make_child
|
121
|
-
private :new
|
122
|
-
# NonterminalElement#new, not NonterminalElement.new
|
123
|
-
|
124
|
-
def under_temporary_document_structure(document_struct)
|
125
|
-
begin
|
126
|
-
self.temporary_document_structure = document_struct
|
127
|
-
yield
|
128
|
-
ensure
|
129
|
-
self.temporary_document_structure = nil
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def indent2(str)
|
134
|
-
buf = ''
|
135
|
-
str.each_line{|i| buf << " " << i }
|
136
|
-
buf
|
137
|
-
end
|
138
|
-
private :indent2
|
139
|
-
end
|
140
|
-
|
141
|
-
# root node of document tree
|
142
|
-
class DocumentElement < Element
|
143
|
-
include NonterminalElement
|
144
|
-
attr_reader :blocks
|
145
|
-
|
146
|
-
def initialize()
|
147
|
-
@blocks = []
|
148
|
-
end
|
149
|
-
|
150
|
-
def accept(visitor)
|
151
|
-
visitor.visit_DocumentElement(self)
|
152
|
-
end
|
153
|
-
|
154
|
-
alias each_block each_child
|
155
|
-
|
156
|
-
def children
|
157
|
-
@blocks
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|