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,17 +1,25 @@
1
+ # Note [Block]
1
2
  module Paru
2
- module PandocFilter
3
+ module PandocFilter
3
4
 
4
- require_relative "./inline"
5
- require_relative "./block"
5
+ require_relative "./inline"
6
+ require_relative "./block"
6
7
 
7
- class Note < Inline
8
- def has_block?
9
- true
10
- end
8
+ class Note < Inline
9
+ def has_block?
10
+ true
11
+ end
11
12
 
12
- def has_inline?
13
- false
14
- end
15
- end
13
+ def has_inline?
14
+ false
15
+ end
16
+
17
+ # Although Note is defined to be inline, often it will act like a block
18
+ # element.
19
+ def can_act_as_both_block_and_inline?
20
+ true
21
+ end
22
+
16
23
  end
24
+ end
17
25
  end
@@ -1,11 +1,9 @@
1
+ # Null
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./block"
3
+ module PandocFilter
4
+ require_relative "./empty_block"
4
5
 
5
- class Null < Block
6
- def initialize contents
7
- super []
8
- end
9
- end
6
+ class Null < EmptyBlock
10
7
  end
8
+ end
11
9
  end
@@ -1,23 +1,24 @@
1
+ # OrderedList ListAttributes [[Block]]
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./list"
4
- require_relative "./list_attributes"
3
+ module PandocFilter
4
+ require_relative "./list"
5
+ require_relative "./list_attributes"
5
6
 
6
- class OrderedList < List
7
- attr_accessor :list_attributes
7
+ class OrderedList < List
8
+ attr_accessor :list_attributes
8
9
 
9
- def initialize contents
10
- @list_attributes = ListAttributes.new contents[0]
11
- super contents[1]
12
- end
10
+ def initialize contents
11
+ @list_attributes = ListAttributes.new contents[0]
12
+ super contents[1]
13
+ end
14
+
15
+ def ast_contents
16
+ [
17
+ @list_attributes.to_ast,
18
+ super
19
+ ]
20
+ end
13
21
 
14
- def ast_contents
15
- [
16
- @list_attributes.to_ast,
17
- super
18
- ]
19
- end
20
-
21
- end
22
22
  end
23
+ end
23
24
  end
@@ -1,16 +1,17 @@
1
+ # Para [Inline]
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./block"
3
+ module PandocFilter
4
+ require_relative "./block"
5
+
6
+ class Para < Block
7
+ def initialize contents
8
+ super contents, true
9
+ end
4
10
 
5
- class Para < Block
6
- def initialize contents
7
- super contents, true
8
- end
11
+ def has_inline?
12
+ true
13
+ end
9
14
 
10
- def has_inline?
11
- true
12
- end
13
-
14
- end
15
15
  end
16
+ end
16
17
  end
@@ -1,15 +1,16 @@
1
+ # Plain [Inline]
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./block"
3
+ module PandocFilter
4
+ require_relative "./block"
4
5
 
5
- class Plain < Block
6
- def initialize contents
7
- super contents, true
8
- end
6
+ class Plain < Block
7
+ def initialize contents
8
+ super contents, true
9
+ end
9
10
 
10
- def has_inline?
11
- true
12
- end
13
- end
11
+ def has_inline?
12
+ true
13
+ end
14
14
  end
15
+ end
15
16
  end
@@ -1,23 +1,24 @@
1
+ # Quoted QuoteType [Inline]
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./inline"
3
+ module PandocFilter
4
+ require_relative "./inline"
4
5
 
5
- class Quoted < Inline
6
- QUOTE_TYPE = ["SingleQuote", "DoubleQuote"]
6
+ class Quoted < Inline
7
+ QUOTE_TYPE = ["SingleQuote", "DoubleQuote"]
7
8
 
8
- attr_accessor :quote_type
9
+ attr_accessor :quote_type
9
10
 
10
- def initialize contents
11
- @quote_type = contents[0]
12
- super contents[1]
13
- end
11
+ def initialize contents
12
+ @quote_type = contents[0]
13
+ super contents[1]
14
+ end
14
15
 
15
- def ast_contents
16
- [
17
- @quote_type,
18
- super
19
- ]
20
- end
21
- end
16
+ def ast_contents
17
+ [
18
+ @quote_type,
19
+ super
20
+ ]
21
+ end
22
22
  end
23
+ end
23
24
  end
@@ -1,25 +1,25 @@
1
+ # RawBlock Format String
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./block"
3
+ module PandocFilter
4
+ require_relative "./block"
4
5
 
5
- class RawBlock < Block
6
- attr_accessor :format, :string
6
+ class RawBlock < Block
7
+ attr_accessor :format, :string
7
8
 
8
- def initialize(contents)
9
- @format = contents[0]
10
- @string = contents[1]
11
- end
9
+ def initialize(contents)
10
+ @format, @string = contents
11
+ end
12
12
 
13
- def to_ast
14
- [
15
- @format,
16
- @string
17
- ]
18
- end
13
+ def to_ast
14
+ [
15
+ @format,
16
+ @string
17
+ ]
18
+ end
19
19
 
20
- def has_string?
21
- true
22
- end
23
- end
20
+ def has_string?
21
+ true
22
+ end
24
23
  end
24
+ end
25
25
  end
@@ -1,30 +1,30 @@
1
+ # RawInline Format String
1
2
  module Paru
2
- module PandocFilter
3
+ module PandocFilter
3
4
 
4
- require_relative "./inline"
5
+ require_relative "./inline"
5
6
 
6
- class RawInline < Inline
7
- attr_accessor :format, :string
7
+ class RawInline < Inline
8
+ attr_accessor :format, :string
8
9
 
9
- def initialize contents
10
- @format = contents[0]
11
- @string = contents[1]
12
- end
10
+ def initialize contents
11
+ @format, @string = contents
12
+ end
13
13
 
14
- def ast_contents
15
- [
16
- @format,
17
- @string
18
- ]
19
- end
14
+ def ast_contents
15
+ [
16
+ @format,
17
+ @string
18
+ ]
19
+ end
20
20
 
21
- def has_string?
22
- true
23
- end
21
+ def has_string?
22
+ true
23
+ end
24
24
 
25
- def has_inline?
26
- false
27
- end
28
- end
25
+ def has_inline?
26
+ false
27
+ end
29
28
  end
29
+ end
30
30
  end
@@ -1,9 +1,10 @@
1
+ # SmallCaps [Inline]
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./inline"
3
+ module PandocFilter
4
+ require_relative "./inline"
4
5
 
5
- class SmallCaps < Inline
6
- end
6
+ class SmallCaps < Inline
7
7
  end
8
+ end
8
9
  end
9
10
 
@@ -1,16 +1,9 @@
1
+ # SoftBreak
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./inline"
3
+ module PandocFilter
4
+ require_relative "./empty_inline"
4
5
 
5
- class SoftBreak < Inline
6
- def initialize contents
7
- super []
8
- end
9
-
10
- def has_inline?
11
- false
12
- end
13
- end
6
+ class SoftBreak < EmptyInline
14
7
  end
8
+ end
15
9
  end
16
-
@@ -1,15 +1,9 @@
1
+ # Space
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./inline"
3
+ module PandocFilter
4
+ require_relative "./empty_inline"
4
5
 
5
- class Space < Inline
6
- def initialize contents
7
- super []
8
- end
9
-
10
- def has_inline?
11
- false
12
- end
13
- end
6
+ class Space < EmptyInline
14
7
  end
8
+ end
15
9
  end
@@ -1,23 +1,24 @@
1
+ # Span Attr [Inline]
1
2
  module Paru
2
- module PandocFilter
3
+ module PandocFilter
3
4
 
4
- require_relative "./inline"
5
- require_relative "./attr"
5
+ require_relative "./inline"
6
+ require_relative "./attr"
6
7
 
7
- class Span < Inline
8
- attr_accessor :attr
8
+ class Span < Inline
9
+ attr_accessor :attr
9
10
 
10
- def initialize contents
11
- @attr = Attr.new contents[0]
12
- super contents[1]
13
- end
11
+ def initialize contents
12
+ @attr = Attr.new contents[0]
13
+ super contents[1]
14
+ end
14
15
 
15
- def ast_contents
16
- [
17
- @attr.to_ast,
18
- super
19
- ]
20
- end
21
- end
16
+ def ast_contents
17
+ [
18
+ @attr.to_ast,
19
+ super
20
+ ]
21
+ end
22
22
  end
23
+ end
23
24
  end
@@ -1,23 +1,24 @@
1
+ # Str String
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./inline"
3
+ module PandocFilter
4
+ require_relative "./inline"
4
5
 
5
- class Str < Inline
6
- def initialize value
7
- @string = value
8
- end
6
+ class Str < Inline
7
+ def initialize value
8
+ @string = value
9
+ end
9
10
 
10
- def ast_contents
11
- @string
12
- end
11
+ def ast_contents
12
+ @string
13
+ end
13
14
 
14
- def has_string?
15
- true
16
- end
15
+ def has_string?
16
+ true
17
+ end
17
18
 
18
- def has_inline?
19
- false
20
- end
21
- end
19
+ def has_inline?
20
+ false
21
+ end
22
22
  end
23
+ end
23
24
  end
@@ -1,9 +1,10 @@
1
+ # Strikeout [Inline]
1
2
  module Paru
2
- module PandocFilter
3
- require_relative "./inline"
3
+ module PandocFilter
4
+ require_relative "./inline"
4
5
 
5
- class Strikeout < Inline
6
- end
6
+ class Strikeout < Inline
7
7
  end
8
+ end
8
9
  end
9
10