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