paru 0.1.0 → 0.2.0
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/lib/paru.rb +2 -2
- data/lib/paru/error.rb +2 -2
- data/lib/paru/filter.rb +69 -70
- data/lib/paru/filter/alignment.rb +7 -7
- data/lib/paru/filter/ast_manipulation.rb +39 -39
- data/lib/paru/filter/attr.rb +30 -32
- data/lib/paru/filter/block.rb +7 -7
- data/lib/paru/filter/block_quote.rb +8 -7
- data/lib/paru/filter/bullet_list.rb +6 -5
- data/lib/paru/filter/citation.rb +23 -23
- data/lib/paru/filter/cite.rb +19 -18
- data/lib/paru/filter/code.rb +23 -22
- data/lib/paru/filter/code_block.rb +20 -19
- data/lib/paru/filter/definition_list.rb +14 -13
- data/lib/paru/filter/definition_list_item.rb +17 -17
- data/lib/paru/filter/div.rb +19 -18
- data/lib/paru/filter/document.rb +56 -42
- data/lib/paru/filter/emph.rb +5 -4
- data/lib/paru/filter/empty_block.rb +17 -0
- data/lib/paru/filter/empty_inline.rb +21 -0
- data/lib/paru/filter/header.rb +22 -21
- data/lib/paru/filter/horizontal_rule.rb +5 -7
- data/lib/paru/filter/image.rb +10 -4
- data/lib/paru/filter/line_block.rb +9 -0
- data/lib/paru/filter/line_break.rb +5 -12
- data/lib/paru/filter/link.rb +21 -20
- data/lib/paru/filter/list.rb +16 -16
- data/lib/paru/filter/list_attributes.rb +31 -18
- data/lib/paru/filter/markdown.rb +62 -42
- data/lib/paru/filter/math.rb +46 -48
- data/lib/paru/filter/meta.rb +15 -16
- data/lib/paru/filter/meta_blocks.rb +8 -7
- data/lib/paru/filter/meta_bool.rb +5 -4
- data/lib/paru/filter/meta_inlines.rb +9 -8
- data/lib/paru/filter/meta_list.rb +5 -4
- data/lib/paru/filter/meta_map.rb +30 -29
- data/lib/paru/filter/meta_string.rb +5 -4
- data/lib/paru/filter/meta_value.rb +13 -11
- data/lib/paru/filter/node.rb +125 -122
- data/lib/paru/filter/note.rb +19 -11
- data/lib/paru/filter/null.rb +5 -7
- data/lib/paru/filter/ordered_list.rb +18 -17
- data/lib/paru/filter/para.rb +12 -11
- data/lib/paru/filter/plain.rb +11 -10
- data/lib/paru/filter/quoted.rb +17 -16
- data/lib/paru/filter/raw_block.rb +18 -18
- data/lib/paru/filter/raw_inline.rb +21 -21
- data/lib/paru/filter/small_caps.rb +5 -4
- data/lib/paru/filter/soft_break.rb +5 -12
- data/lib/paru/filter/space.rb +5 -11
- data/lib/paru/filter/span.rb +17 -16
- data/lib/paru/filter/str.rb +17 -16
- data/lib/paru/filter/strikeout.rb +5 -4
- data/lib/paru/filter/strong.rb +10 -0
- data/lib/paru/filter/subscript.rb +5 -4
- data/lib/paru/filter/superscript.rb +5 -4
- data/lib/paru/filter/table.rb +28 -27
- data/lib/paru/filter/table_row.rb +13 -13
- data/lib/paru/filter/target.rb +14 -14
- data/lib/paru/filter/version.rb +19 -0
- data/lib/paru/pandoc.rb +18 -13
- data/lib/paru/pandoc_options.yaml +14 -1
- data/lib/paru/selector.rb +152 -148
- metadata +9 -5
- data/lib/paru/filter/string.rb +0 -9
@@ -1,13 +1,14 @@
|
|
1
|
+
# MetaBlocks [Blocks]
|
1
2
|
module Paru
|
2
|
-
|
3
|
+
module PandocFilter
|
3
4
|
|
4
|
-
|
5
|
+
require_relative "./node"
|
5
6
|
|
6
|
-
|
7
|
+
class MetaBlocks < Node
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
9
|
+
def initialize value
|
10
|
+
super value
|
11
|
+
end
|
12
12
|
end
|
13
|
+
end
|
13
14
|
end
|
@@ -1,13 +1,14 @@
|
|
1
|
+
# MetaInlines [Inline]
|
1
2
|
module Paru
|
2
|
-
|
3
|
+
module PandocFilter
|
3
4
|
|
4
|
-
|
5
|
+
require_relative "./node"
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
7
|
+
class MetaInlines < Node
|
8
|
+
|
9
|
+
def initialize value
|
10
|
+
super value
|
11
|
+
end
|
12
12
|
end
|
13
|
+
end
|
13
14
|
end
|
data/lib/paru/filter/meta_map.rb
CHANGED
@@ -1,37 +1,38 @@
|
|
1
|
+
# MetaMap (M.Map String MetaValue)
|
1
2
|
module Paru
|
2
|
-
|
3
|
-
|
4
|
-
require_relative "./node"
|
5
|
-
|
6
|
-
class MetaMap < Node
|
7
|
-
|
8
|
-
def initialize contents
|
9
|
-
@children = Hash.new
|
10
|
-
|
11
|
-
if contents.is_a? Hash
|
12
|
-
contents.each_pair do |key, value|
|
13
|
-
if PandocFilter.const_defined? value["t"]
|
14
|
-
@children[key] = PandocFilter.const_get(value["t"]).new value["c"]
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
3
|
+
module PandocFilter
|
19
4
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
5
|
+
require_relative "./node"
|
6
|
+
|
7
|
+
class MetaMap < Node
|
25
8
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
9
|
+
def initialize contents
|
10
|
+
@children = Hash.new
|
11
|
+
|
12
|
+
if contents.is_a? Hash
|
13
|
+
contents.each_pair do |key, value|
|
14
|
+
if not value.empty? and PandocFilter.const_defined? value["t"]
|
15
|
+
@children[key] = PandocFilter.const_get(value["t"]).new value["c"]
|
33
16
|
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
34
20
|
|
21
|
+
def [](key)
|
22
|
+
if @children.key_exists?
|
23
|
+
@children[key]
|
35
24
|
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
def ast_contents
|
29
|
+
ast = Hash.new
|
30
|
+
@children.each_pair do |key, value|
|
31
|
+
ast[key] = value.to_ast
|
32
|
+
end
|
33
|
+
ast
|
34
|
+
end
|
35
|
+
|
36
36
|
end
|
37
|
+
end
|
37
38
|
end
|
@@ -1,20 +1,22 @@
|
|
1
|
+
# MetaValue = MetaMap | MetaList | MetaBool | MetaString | MetaInlines |
|
2
|
+
# MetaBlocks
|
1
3
|
module Paru
|
2
|
-
|
4
|
+
module PandocFilter
|
3
5
|
|
4
|
-
|
6
|
+
require_relative "./node"
|
5
7
|
|
6
|
-
|
8
|
+
class MetaValue < Node
|
7
9
|
|
8
|
-
|
10
|
+
attr_accessor :value
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
12
|
+
def initialize value
|
13
|
+
@value = value
|
14
|
+
end
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
-
|
16
|
+
def ast_contents
|
17
|
+
@value
|
18
|
+
end
|
17
19
|
|
18
|
-
end
|
19
20
|
end
|
21
|
+
end
|
20
22
|
end
|
data/lib/paru/filter/node.rb
CHANGED
@@ -1,149 +1,152 @@
|
|
1
1
|
module Paru
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
2
|
+
module PandocFilter
|
3
|
+
|
4
|
+
require_relative "./ast_manipulation"
|
5
|
+
require_relative "./markdown"
|
6
|
+
require_relative "../pandoc"
|
7
|
+
require_relative "./document"
|
8
|
+
|
9
|
+
class Node
|
10
|
+
include Enumerable
|
11
|
+
include ASTManipulation
|
12
|
+
include Markdown
|
13
|
+
|
14
|
+
attr_accessor :parent
|
15
|
+
|
16
|
+
# require all pandoc types
|
17
|
+
Dir[File.dirname(__FILE__) + '/*.rb'].each do |file|
|
18
|
+
require_relative file
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize contents, inline_children = false
|
22
|
+
@children = []
|
23
|
+
@parent = nil
|
24
|
+
|
25
|
+
if contents.is_a? Array
|
26
|
+
contents.each do |elt|
|
27
|
+
if PandocFilter.const_defined? elt["t"]
|
28
|
+
child = PandocFilter.const_get(elt["t"]).new elt["c"]
|
29
|
+
else
|
30
|
+
if inline_children
|
31
|
+
child = PandocFilter::Inline.new elt["c"]
|
32
|
+
else
|
33
|
+
child = PandocFilter::Plain.new elt["c"]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
child.parent = self
|
38
|
+
@children.push child
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
21
42
|
|
22
|
-
def initialize contents, inline_children = false
|
23
|
-
@children = []
|
24
|
-
@parent = nil
|
25
|
-
|
26
|
-
if contents.is_a? Array
|
27
|
-
contents.each do |elt|
|
28
|
-
if PandocFilter.const_defined? elt["t"]
|
29
|
-
child = PandocFilter.const_get(elt["t"]).new elt["c"]
|
30
|
-
else
|
31
|
-
if inline_children
|
32
|
-
child = PandocFilter::Inline.new elt["c"]
|
33
|
-
else
|
34
|
-
child = PandocFilter::Plain.new elt["c"]
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
child.parent = self
|
39
|
-
@children.push child
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
43
|
|
44
|
+
def each
|
45
|
+
@children.each do |child|
|
46
|
+
yield child
|
47
|
+
end
|
48
|
+
end
|
44
49
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
49
|
-
end
|
50
|
+
def has_children?
|
51
|
+
defined? @children and @children.size > 0
|
52
|
+
end
|
50
53
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
+
def children
|
55
|
+
if has_children?
|
56
|
+
@children
|
57
|
+
else
|
58
|
+
[]
|
59
|
+
end
|
60
|
+
end
|
54
61
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
else
|
59
|
-
[]
|
60
|
-
end
|
61
|
-
end
|
62
|
+
def children= list
|
63
|
+
@children = list
|
64
|
+
end
|
62
65
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
+
def has_parent?
|
67
|
+
not @parent.nil?
|
68
|
+
end
|
66
69
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
+
def is_root?
|
71
|
+
not has_parent?
|
72
|
+
end
|
70
73
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
+
def is_node?
|
75
|
+
not is_leaf
|
76
|
+
end
|
74
77
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
+
def is_leaf?
|
79
|
+
not has_children?
|
80
|
+
end
|
78
81
|
|
79
|
-
def is_leaf?
|
80
|
-
not has_children?
|
81
|
-
end
|
82
82
|
|
83
|
+
def has_string?
|
84
|
+
false
|
85
|
+
end
|
83
86
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
+
def has_inline?
|
88
|
+
false
|
89
|
+
end
|
87
90
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
+
def has_block?
|
92
|
+
false
|
93
|
+
end
|
91
94
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
+
def is_block?
|
96
|
+
false
|
97
|
+
end
|
95
98
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
+
def can_act_as_both_block_and_inline?
|
100
|
+
false
|
101
|
+
end
|
99
102
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
+
def is_inline?
|
104
|
+
false
|
105
|
+
end
|
103
106
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
107
|
+
def has_class? name
|
108
|
+
if not @attr.nil?
|
109
|
+
@attr.has_class? name
|
110
|
+
else
|
111
|
+
false
|
112
|
+
end
|
113
|
+
end
|
111
114
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
+
def to_s
|
116
|
+
self.class.name
|
117
|
+
end
|
115
118
|
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
+
def type
|
120
|
+
ast_type
|
121
|
+
end
|
119
122
|
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
+
def ast_type
|
124
|
+
self.class.name.split("::").last
|
125
|
+
end
|
123
126
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
127
|
+
def ast_contents
|
128
|
+
if has_children?
|
129
|
+
@children.map {|child| child.to_ast}
|
130
|
+
else
|
131
|
+
[]
|
132
|
+
end
|
133
|
+
end
|
131
134
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
135
|
+
def ast_markdown_contents
|
136
|
+
if has_children?
|
137
|
+
@children.map {|child| child.to_ast}
|
138
|
+
else
|
139
|
+
[]
|
140
|
+
end
|
141
|
+
end
|
139
142
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
143
|
+
def to_ast
|
144
|
+
{
|
145
|
+
"t" => ast_type,
|
146
|
+
"c" => ast_contents
|
147
|
+
}
|
148
|
+
end
|
146
149
|
|
147
|
-
end
|
148
150
|
end
|
151
|
+
end
|
149
152
|
end
|