paru 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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