paru 1.5.0 → 1.5.1
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/error.rb +6 -4
- data/lib/paru/filter/ast_manipulation.rb +90 -91
- data/lib/paru/filter/attr.rb +75 -69
- data/lib/paru/filter/block.rb +15 -14
- data/lib/paru/filter/block_quote.rb +14 -12
- data/lib/paru/filter/bullet_list.rb +17 -16
- data/lib/paru/filter/caption.rb +50 -48
- data/lib/paru/filter/cell.rb +52 -50
- data/lib/paru/filter/citation.rb +53 -51
- data/lib/paru/filter/cite.rb +34 -33
- data/lib/paru/filter/code.rb +51 -49
- data/lib/paru/filter/code_block.rb +76 -76
- data/lib/paru/filter/col_spec.rb +58 -56
- data/lib/paru/filter/definition_list.rb +51 -52
- data/lib/paru/filter/definition_list_item.rb +45 -43
- data/lib/paru/filter/div.rb +37 -35
- data/lib/paru/filter/document.rb +112 -115
- data/lib/paru/filter/emph.rb +7 -5
- data/lib/paru/filter/empty_block.rb +17 -16
- data/lib/paru/filter/empty_inline.rb +23 -22
- data/lib/paru/filter/figure.rb +41 -39
- data/lib/paru/filter/header.rb +41 -39
- data/lib/paru/filter/horizontal_rule.rb +7 -5
- data/lib/paru/filter/image.rb +13 -12
- data/lib/paru/filter/inline.rb +27 -26
- data/lib/paru/filter/inner_markdown.rb +60 -62
- data/lib/paru/filter/int_value.rb +19 -18
- data/lib/paru/filter/line_block.rb +13 -11
- data/lib/paru/filter/line_break.rb +7 -5
- data/lib/paru/filter/link.rb +34 -33
- data/lib/paru/filter/list.rb +37 -37
- data/lib/paru/filter/list_attributes.rb +52 -51
- data/lib/paru/filter/math.rb +66 -64
- data/lib/paru/filter/meta.rb +40 -39
- data/lib/paru/filter/meta_blocks.rb +7 -5
- data/lib/paru/filter/meta_bool.rb +7 -5
- data/lib/paru/filter/meta_inlines.rb +9 -7
- data/lib/paru/filter/meta_list.rb +7 -5
- data/lib/paru/filter/meta_map.rb +50 -49
- data/lib/paru/filter/meta_string.rb +7 -6
- data/lib/paru/filter/meta_value.rb +26 -25
- data/lib/paru/filter/metadata.rb +150 -88
- data/lib/paru/filter/node.rb +400 -406
- data/lib/paru/filter/note.rb +29 -29
- data/lib/paru/filter/null.rb +7 -5
- data/lib/paru/filter/ordered_list.rb +50 -49
- data/lib/paru/filter/para.rb +21 -20
- data/lib/paru/filter/plain.rb +23 -21
- data/lib/paru/filter/quoted.rb +28 -26
- data/lib/paru/filter/short_caption.rb +7 -5
- data/lib/paru/filter/small_caps.rb +8 -7
- data/lib/paru/filter/soft_break.rb +7 -5
- data/lib/paru/filter/space.rb +7 -5
- data/lib/paru/filter/span.rb +29 -27
- data/lib/paru/filter/str.rb +33 -32
- data/lib/paru/filter/strikeout.rb +7 -6
- data/lib/paru/filter/strong.rb +7 -6
- data/lib/paru/filter/subscript.rb +7 -6
- data/lib/paru/filter/superscript.rb +7 -6
- data/lib/paru/filter/table.rb +201 -210
- data/lib/paru/filter/table_body.rb +67 -67
- data/lib/paru/filter/table_end.rb +53 -55
- data/lib/paru/filter/table_foot.rb +8 -7
- data/lib/paru/filter/table_head.rb +8 -7
- data/lib/paru/filter/target.rb +29 -27
- data/lib/paru/filter/underline.rb +7 -5
- data/lib/paru/filter/value.rb +74 -75
- data/lib/paru/filter/version.rb +23 -22
- data/lib/paru/filter.rb +355 -331
- data/lib/paru/filter_error.rb +7 -5
- data/lib/paru/info.rb +29 -30
- data/lib/paru/pandoc.rb +241 -248
- data/lib/paru/pandoc2yaml.rb +51 -42
- data/lib/paru/selector.rb +193 -184
- data/lib/paru.rb +3 -1
- metadata +4 -73
data/lib/paru/filter/note.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,38 +18,36 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
20
|
-
require_relative
|
21
|
+
require_relative 'inline'
|
22
|
+
require_relative 'block'
|
21
23
|
|
22
24
|
module Paru
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
end
|
35
|
-
|
36
|
-
# Has this Note inline contents?
|
37
|
-
#
|
38
|
-
# @return [Boolean] false
|
39
|
-
def has_inline?
|
40
|
-
false
|
41
|
-
end
|
25
|
+
module PandocFilter
|
26
|
+
# A Note node like a foot note or end note. It is a special node in
|
27
|
+
# the sense that itself is an Inline level node, but its contents are
|
28
|
+
# Block level.
|
29
|
+
class Note < Inline
|
30
|
+
# Has this Note block contents?
|
31
|
+
#
|
32
|
+
# @return [Boolean] true
|
33
|
+
def has_block?
|
34
|
+
true
|
35
|
+
end
|
42
36
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
37
|
+
# Has this Note inline contents?
|
38
|
+
#
|
39
|
+
# @return [Boolean] false
|
40
|
+
def has_inline?
|
41
|
+
false
|
42
|
+
end
|
50
43
|
|
51
|
-
|
44
|
+
# Although Note is defined to be inline, often it will act like a block
|
45
|
+
# element.
|
46
|
+
#
|
47
|
+
# @return [Boolean] true
|
48
|
+
def can_act_as_both_block_and_inline?
|
49
|
+
true
|
50
|
+
end
|
52
51
|
end
|
52
|
+
end
|
53
53
|
end
|
data/lib/paru/filter/null.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,12 +18,12 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
21
|
+
require_relative 'empty_block'
|
20
22
|
|
21
23
|
module Paru
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
24
|
+
module PandocFilter
|
25
|
+
# A Null node is an EmptyBlock node
|
26
|
+
class Null < EmptyBlock
|
26
27
|
end
|
28
|
+
end
|
27
29
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,59 +18,58 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
20
|
-
require_relative
|
21
|
-
require_relative
|
21
|
+
require_relative 'list'
|
22
|
+
require_relative 'list_attributes'
|
23
|
+
require_relative 'block'
|
22
24
|
|
23
25
|
module Paru
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
# Create a new OrderedList node based on the contents
|
40
|
-
#
|
41
|
-
# @param contents [Array]
|
42
|
-
def initialize(contents)
|
43
|
-
super contents[1]
|
44
|
-
@list_attributes = ListAttributes.new contents[0]
|
45
|
-
end
|
26
|
+
module PandocFilter
|
27
|
+
# An OrderedList Node
|
28
|
+
#
|
29
|
+
# @example In markdown an ordered list looks like
|
30
|
+
# 1. this is the first item
|
31
|
+
# 2. this the second
|
32
|
+
# 3. and so on
|
33
|
+
#
|
34
|
+
# It has an ListAttributes object and a list of items
|
35
|
+
#
|
36
|
+
# @!attribute list_attributes
|
37
|
+
# @return [ListAttributes]
|
38
|
+
class OrderedList < List
|
39
|
+
attr_accessor :list_attributes
|
46
40
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
]
|
55
|
-
end
|
41
|
+
# Create a new OrderedList node based on the contents
|
42
|
+
#
|
43
|
+
# @param contents [Array]
|
44
|
+
def initialize(contents)
|
45
|
+
super(contents[1])
|
46
|
+
@list_attributes = ListAttributes.new contents[0]
|
47
|
+
end
|
56
48
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
style = if config.has_key? :style then config[:style] else "Decimal" end
|
67
|
-
delim = if config.has_key? :delim then config[:delim] else "Period" end
|
68
|
-
ast_items = items.map {|item| [Block.from_markdown(item).to_ast]}
|
69
|
-
OrderedList.new [[start, {"t" => style}, {"t" => delim}], ast_items]
|
70
|
-
end
|
49
|
+
# The AST contents
|
50
|
+
#
|
51
|
+
# @return [Array]
|
52
|
+
def ast_contents
|
53
|
+
[
|
54
|
+
@list_attributes.to_ast,
|
55
|
+
super
|
56
|
+
]
|
57
|
+
end
|
71
58
|
|
72
|
-
|
59
|
+
# Create a new OrderedList from an array of markdown strings
|
60
|
+
#
|
61
|
+
# @param items [String[]] an array of markdown strings
|
62
|
+
# @param config [Hash] configuration of the list. Can have
|
63
|
+
# properties :start (Int), :style (String), and :delim (String)
|
64
|
+
#
|
65
|
+
# @return [OrderedList]
|
66
|
+
def self.from_array(items, **config)
|
67
|
+
start = config.key?(:start) ? config[:start] : 1
|
68
|
+
style = config.key?(:style) ? config[:style] : 'Decimal'
|
69
|
+
delim = config.key?(:delim) ? config[:delim] : 'Period'
|
70
|
+
ast_items = items.map { |item| [Block.from_markdown(item).to_ast] }
|
71
|
+
OrderedList.new [[start, { 't' => style }, { 't' => delim }], ast_items]
|
72
|
+
end
|
73
73
|
end
|
74
|
+
end
|
74
75
|
end
|
data/lib/paru/filter/para.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,29 +18,28 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
20
|
-
require_relative
|
21
|
+
require_relative 'block'
|
22
|
+
require_relative 'inner_markdown'
|
21
23
|
|
22
24
|
module Paru
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
# Create a new Para node based on the contents
|
29
|
-
#
|
30
|
-
# @param contents [Array]
|
31
|
-
def initialize(contents)
|
32
|
-
super contents, true
|
33
|
-
end
|
25
|
+
module PandocFilter
|
26
|
+
# A Para is a paragraph: a list of Inline nodes
|
27
|
+
class Para < Block
|
28
|
+
include InnerMarkdown
|
34
29
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
30
|
+
# Create a new Para node based on the contents
|
31
|
+
#
|
32
|
+
# @param contents [Array]
|
33
|
+
def initialize(contents)
|
34
|
+
super(contents, true)
|
35
|
+
end
|
41
36
|
|
42
|
-
|
37
|
+
# Does a Para have inline content?
|
38
|
+
#
|
39
|
+
# @return [Boolean] true
|
40
|
+
def has_inline?
|
41
|
+
true
|
42
|
+
end
|
43
43
|
end
|
44
|
+
end
|
44
45
|
end
|
data/lib/paru/filter/plain.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,30 +18,30 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
20
|
-
require_relative
|
21
|
+
require_relative 'block'
|
22
|
+
require_relative 'inner_markdown'
|
21
23
|
|
22
24
|
module Paru
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
module PandocFilter
|
26
|
+
# A Plain node is a basic {Block} level node with {Inline} child nodes. Not
|
27
|
+
# to be confused with {Para}, which represents a paragraph. A Plain
|
28
|
+
# is a more general type of block level node.
|
29
|
+
class Plain < Block
|
30
|
+
include InnerMarkdown
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
# Create a new Plain node based on contents
|
33
|
+
#
|
34
|
+
# @param contents [Array]
|
35
|
+
def initialize(contents)
|
36
|
+
super(contents, true)
|
37
|
+
end
|
36
38
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
end
|
39
|
+
# Has a Plain node inline contents?
|
40
|
+
#
|
41
|
+
# @return [Boolean] true
|
42
|
+
def has_inline?
|
43
|
+
true
|
44
|
+
end
|
44
45
|
end
|
46
|
+
end
|
45
47
|
end
|
data/lib/paru/filter/quoted.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,36 +18,36 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
21
|
+
require_relative 'inline'
|
20
22
|
|
21
23
|
module Paru
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
module PandocFilter
|
25
|
+
# A Quoted node represents a quote with a type and the contents of the
|
26
|
+
# quote
|
27
|
+
#
|
28
|
+
# @!attribute quote_type
|
29
|
+
# @return [QUOTE_TYPE]
|
30
|
+
class Quoted < Inline
|
31
|
+
# A quote is either a single quote or a double quote
|
32
|
+
QUOTE_TYPE = %w[SingleQuote DoubleQuote].freeze
|
31
33
|
|
32
|
-
|
34
|
+
attr_accessor :quote_type
|
33
35
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
36
|
+
# Create a new Quote node based on the contents
|
37
|
+
#
|
38
|
+
# @param contents [Array]
|
39
|
+
def initialize(contents)
|
40
|
+
@quote_type = contents[0]
|
41
|
+
super(contents[1])
|
42
|
+
end
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
44
|
+
# The AST contents of a Quote node
|
45
|
+
def ast_contents
|
46
|
+
[
|
47
|
+
@quote_type,
|
48
|
+
super
|
49
|
+
]
|
50
|
+
end
|
50
51
|
end
|
52
|
+
end
|
51
53
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2020 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,12 +18,12 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
21
|
+
require_relative 'inline'
|
20
22
|
|
21
23
|
module Paru
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
24
|
+
module PandocFilter
|
25
|
+
# A ShortCaption used in a table's caption.
|
26
|
+
class ShortCaption < Inline
|
26
27
|
end
|
28
|
+
end
|
27
29
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,14 +18,13 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
21
|
+
require_relative 'inline'
|
20
22
|
|
21
23
|
module Paru
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
24
|
+
module PandocFilter
|
25
|
+
# A SmallCaps node is an inline level node representing SMALL CAPS
|
26
|
+
# text
|
27
|
+
class SmallCaps < Inline
|
27
28
|
end
|
29
|
+
end
|
28
30
|
end
|
29
|
-
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,12 +18,12 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
21
|
+
require_relative 'empty_inline'
|
20
22
|
|
21
23
|
module Paru
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
24
|
+
module PandocFilter
|
25
|
+
# A SoftBreak node
|
26
|
+
class SoftBreak < EmptyInline
|
26
27
|
end
|
28
|
+
end
|
27
29
|
end
|
data/lib/paru/filter/space.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,12 +18,12 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
21
|
+
require_relative 'empty_inline'
|
20
22
|
|
21
23
|
module Paru
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
24
|
+
module PandocFilter
|
25
|
+
# A Space node
|
26
|
+
class Space < EmptyInline
|
26
27
|
end
|
28
|
+
end
|
27
29
|
end
|
data/lib/paru/filter/span.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,36 +18,36 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
20
|
-
require_relative
|
21
|
+
require_relative 'inline'
|
22
|
+
require_relative 'attr'
|
21
23
|
|
22
24
|
module Paru
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
module PandocFilter
|
26
|
+
# A Span node is a general Inline level node with attributes and
|
27
|
+
# contens
|
28
|
+
#
|
29
|
+
# @!attribute attr
|
30
|
+
# @return [Attr]
|
31
|
+
class Span < Inline
|
32
|
+
attr_accessor :attr
|
31
33
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
# Create a new Span node based on the contents
|
35
|
+
#
|
36
|
+
# @param contents [Array]
|
37
|
+
def initialize(contents)
|
38
|
+
@attr = Attr.new contents[0]
|
39
|
+
super(contents[1])
|
40
|
+
end
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
42
|
+
# The AST contents
|
43
|
+
#
|
44
|
+
# @return [Array]
|
45
|
+
def ast_contents
|
46
|
+
[
|
47
|
+
@attr.to_ast,
|
48
|
+
super
|
49
|
+
]
|
50
|
+
end
|
50
51
|
end
|
52
|
+
end
|
51
53
|
end
|
data/lib/paru/filter/str.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,43 +18,42 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
21
|
+
require_relative 'inline'
|
20
22
|
|
21
23
|
module Paru
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
attr_accessor :string
|
24
|
+
module PandocFilter
|
25
|
+
# A Str node represents a string
|
26
|
+
#
|
27
|
+
# @!attribute string
|
28
|
+
# @return [String] the value of this Str node.
|
29
|
+
class Str < Inline
|
30
|
+
attr_accessor :string
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
# Create a new Str node based on the value
|
33
|
+
#
|
34
|
+
# @param value [String]
|
35
|
+
def initialize(value)
|
36
|
+
@string = value
|
37
|
+
end
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
# The AST contents
|
40
|
+
def ast_contents
|
41
|
+
@string
|
42
|
+
end
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
# Has the Str node a string value? Of course!
|
45
|
+
#
|
46
|
+
# @return [Boolean] true
|
47
|
+
def has_string?
|
48
|
+
true
|
49
|
+
end
|
49
50
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
51
|
+
# Has the Str node inline contents?
|
52
|
+
#
|
53
|
+
# @return [Boolean] false
|
54
|
+
def has_inline?
|
55
|
+
false
|
56
|
+
end
|
57
57
|
end
|
58
|
+
end
|
58
59
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright 2015, 2016, 2017 Huub de Beer <Huub@heerdebeer.org>
|
3
5
|
#
|
@@ -16,13 +18,12 @@
|
|
16
18
|
# You should have received a copy of the GNU General Public License
|
17
19
|
# along with Paru. If not, see <http://www.gnu.org/licenses/>.
|
18
20
|
#++
|
19
|
-
require_relative
|
21
|
+
require_relative 'inline'
|
20
22
|
|
21
23
|
module Paru
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
24
|
+
module PandocFilter
|
25
|
+
# A Strikeout inline node
|
26
|
+
class Strikeout < Inline
|
26
27
|
end
|
28
|
+
end
|
27
29
|
end
|
28
|
-
|