coradoc 1.1.5 → 1.1.7
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/.envrc +1 -0
- data/.irbrc +1 -0
- data/.rspec +3 -0
- data/.rubocop.yml +5 -1
- data/.rubocop_todo.yml +179 -0
- data/Gemfile +11 -0
- data/README.adoc +5 -7
- data/coradoc.gemspec +5 -16
- data/exe/reverse_adoc +1 -1
- data/exe/w2a +1 -1
- data/flake.lock +114 -0
- data/flake.nix +135 -0
- data/lib/coradoc/cli.rb +1 -1
- data/lib/coradoc/converter.rb +4 -5
- data/lib/coradoc/element/attribute.rb +10 -1
- data/lib/coradoc/element/attribute_list.rb +4 -3
- data/lib/coradoc/element/audio.rb +1 -1
- data/lib/coradoc/element/author.rb +2 -2
- data/lib/coradoc/element/base.rb +14 -2
- data/lib/coradoc/element/bibliography.rb +1 -1
- data/lib/coradoc/element/bibliography_entry.rb +1 -1
- data/lib/coradoc/element/block/open.rb +1 -1
- data/lib/coradoc/element/block.rb +1 -1
- data/lib/coradoc/element/document_attributes.rb +8 -2
- data/lib/coradoc/element/image/block_image.rb +3 -2
- data/lib/coradoc/element/image/core.rb +5 -4
- data/lib/coradoc/element/inline/attribute_reference.rb +19 -0
- data/lib/coradoc/element/inline/cross_reference.rb +4 -3
- data/lib/coradoc/element/inline/footnote.rb +24 -0
- data/lib/coradoc/element/inline/small.rb +19 -0
- data/lib/coradoc/element/inline/span.rb +37 -0
- data/lib/coradoc/element/inline/underline.rb +19 -0
- data/lib/coradoc/element/inline.rb +5 -1
- data/lib/coradoc/element/list/core.rb +2 -2
- data/lib/coradoc/element/list/ordered.rb +1 -0
- data/lib/coradoc/element/list/unordered.rb +1 -0
- data/lib/coradoc/element/list_item.rb +19 -20
- data/lib/coradoc/element/table.rb +4 -2
- data/lib/coradoc/element/term.rb +1 -0
- data/lib/coradoc/element/text_element.rb +4 -1
- data/lib/coradoc/element/title.rb +1 -1
- data/lib/coradoc/element/video.rb +2 -2
- data/lib/coradoc/input/adoc.rb +20 -18
- data/lib/coradoc/input/docx.rb +25 -23
- data/lib/coradoc/input/html/README.adoc +1 -1
- data/lib/coradoc/input/html/cleaner.rb +121 -117
- data/lib/coradoc/input/html/config.rb +58 -56
- data/lib/coradoc/input/html/converters/a.rb +44 -39
- data/lib/coradoc/input/html/converters/aside.rb +12 -8
- data/lib/coradoc/input/html/converters/audio.rb +24 -20
- data/lib/coradoc/input/html/converters/base.rb +103 -99
- data/lib/coradoc/input/html/converters/blockquote.rb +18 -14
- data/lib/coradoc/input/html/converters/br.rb +11 -7
- data/lib/coradoc/input/html/converters/bypass.rb +77 -73
- data/lib/coradoc/input/html/converters/code.rb +18 -14
- data/lib/coradoc/input/html/converters/div.rb +15 -11
- data/lib/coradoc/input/html/converters/dl.rb +51 -44
- data/lib/coradoc/input/html/converters/drop.rb +21 -17
- data/lib/coradoc/input/html/converters/em.rb +16 -12
- data/lib/coradoc/input/html/converters/figure.rb +19 -15
- data/lib/coradoc/input/html/converters/h.rb +32 -30
- data/lib/coradoc/input/html/converters/head.rb +17 -13
- data/lib/coradoc/input/html/converters/hr.rb +11 -7
- data/lib/coradoc/input/html/converters/ignore.rb +15 -11
- data/lib/coradoc/input/html/converters/img.rb +98 -93
- data/lib/coradoc/input/html/converters/li.rb +13 -9
- data/lib/coradoc/input/html/converters/mark.rb +14 -10
- data/lib/coradoc/input/html/converters/markup.rb +22 -18
- data/lib/coradoc/input/html/converters/math.rb +26 -19
- data/lib/coradoc/input/html/converters/ol.rb +55 -50
- data/lib/coradoc/input/html/converters/p.rb +16 -12
- data/lib/coradoc/input/html/converters/pass_through.rb +12 -8
- data/lib/coradoc/input/html/converters/pre.rb +49 -45
- data/lib/coradoc/input/html/converters/q.rb +12 -8
- data/lib/coradoc/input/html/converters/strong.rb +15 -11
- data/lib/coradoc/input/html/converters/sub.rb +15 -11
- data/lib/coradoc/input/html/converters/sup.rb +15 -11
- data/lib/coradoc/input/html/converters/table.rb +21 -13
- data/lib/coradoc/input/html/converters/td.rb +64 -60
- data/lib/coradoc/input/html/converters/text.rb +24 -20
- data/lib/coradoc/input/html/converters/th.rb +13 -9
- data/lib/coradoc/input/html/converters/tr.rb +17 -13
- data/lib/coradoc/input/html/converters/video.rb +24 -20
- data/lib/coradoc/input/html/converters.rb +45 -43
- data/lib/coradoc/input/html/errors.rb +8 -6
- data/lib/coradoc/input/html/html_converter.rb +93 -90
- data/lib/coradoc/input/html/plugin.rb +104 -104
- data/lib/coradoc/input/html/plugins/plateau.rb +197 -190
- data/lib/coradoc/input/html/postprocessor.rb +188 -182
- data/lib/coradoc/input/html.rb +34 -32
- data/lib/coradoc/oscal.rb +18 -5
- data/lib/coradoc/output/adoc.rb +13 -11
- data/lib/coradoc/output/coradoc_tree_debug.rb +15 -13
- data/lib/coradoc/parser/asciidoc/admonition.rb +6 -6
- data/lib/coradoc/parser/asciidoc/attribute_list.rb +43 -27
- data/lib/coradoc/parser/asciidoc/base.rb +3 -6
- data/lib/coradoc/parser/asciidoc/bibliography.rb +5 -6
- data/lib/coradoc/parser/asciidoc/block.rb +30 -31
- data/lib/coradoc/parser/asciidoc/citation.rb +11 -29
- data/lib/coradoc/parser/asciidoc/content.rb +23 -33
- data/lib/coradoc/parser/asciidoc/document_attributes.rb +2 -3
- data/lib/coradoc/parser/asciidoc/header.rb +1 -2
- data/lib/coradoc/parser/asciidoc/inline.rb +165 -42
- data/lib/coradoc/parser/asciidoc/list.rb +27 -27
- data/lib/coradoc/parser/asciidoc/paragraph.rb +28 -19
- data/lib/coradoc/parser/asciidoc/section.rb +11 -17
- data/lib/coradoc/parser/asciidoc/table.rb +5 -5
- data/lib/coradoc/parser/asciidoc/term.rb +24 -8
- data/lib/coradoc/parser/asciidoc/text.rb +18 -21
- data/lib/coradoc/parser/base.rb +0 -3
- data/lib/coradoc/reverse_adoc.rb +3 -3
- data/lib/coradoc/transformer.rb +167 -137
- data/lib/coradoc/version.rb +1 -1
- data/lib/reverse_adoc.rb +1 -1
- data/utils/inspect_asciidoc.rb +29 -0
- data/utils/parser_analyzer.rb +14 -14
- data/utils/round_trip.rb +31 -15
- metadata +34 -137
- data/.hound.yml +0 -5
- data/lib/coradoc/element/inline/citation.rb +0 -24
- data/todo.md +0 -10
@@ -1,103 +1,107 @@
|
|
1
|
-
module Coradoc
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
node
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
1
|
+
module Coradoc
|
2
|
+
module Input
|
3
|
+
module Html
|
4
|
+
module Converters
|
5
|
+
class Base
|
6
|
+
# Default implementation to convert a given Nokogiri node
|
7
|
+
# to an AsciiDoc script.
|
8
|
+
# Can be overriden by subclasses.
|
9
|
+
def convert(node, state = {})
|
10
|
+
Coradoc::Generator.gen_adoc(to_coradoc(node, state))
|
11
|
+
end
|
12
|
+
|
13
|
+
# Note: treat_children won't run plugin hooks
|
14
|
+
def treat_children(node, state)
|
15
|
+
node.children.map do |child|
|
16
|
+
treat(child, state)
|
17
|
+
end.join
|
18
|
+
end
|
19
|
+
|
20
|
+
def treat(node, state)
|
21
|
+
Converters.process(node, state)
|
22
|
+
end
|
23
|
+
|
24
|
+
def treat_children_coradoc(node, state)
|
25
|
+
node.children.map do |child|
|
26
|
+
treat_coradoc(child, state)
|
27
|
+
end.flatten.reject { |x| x.to_s.empty? }
|
28
|
+
end
|
29
|
+
|
30
|
+
def treat_coradoc(node, state)
|
31
|
+
Converters.process_coradoc(node, state)
|
32
|
+
end
|
33
|
+
|
34
|
+
def extract_title(node)
|
35
|
+
title = Coradoc::Element::TextElement.escape_keychars(
|
36
|
+
node["title"].to_s,
|
37
|
+
)
|
38
|
+
title.empty? ? "" : %[ #{title}]
|
39
|
+
end
|
40
|
+
|
41
|
+
def node_has_ancestor?(node, name)
|
42
|
+
case name
|
43
|
+
when String
|
44
|
+
node.ancestors.map(&:name).include?(name)
|
45
|
+
when Array
|
46
|
+
(node.ancestors.map(&:name) & name).any?
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def textnode_before_end_with?(node, str)
|
51
|
+
return nil unless [String, Regexp].include?(str.class)
|
52
|
+
return nil if str.is_a?(String) && str.empty?
|
53
|
+
|
54
|
+
str = /#{Regexp.escape(str)}/ if str.is_a?(String)
|
55
|
+
str = /(?:#{str})\z/
|
56
|
+
|
57
|
+
node2 = node.at_xpath("preceding-sibling::node()[1]")
|
58
|
+
node2.respond_to?(:text) && node2.text.match?(str)
|
59
|
+
end
|
60
|
+
|
61
|
+
def textnode_after_start_with?(node, str)
|
62
|
+
return nil unless [String, Regexp].include?(str.class)
|
63
|
+
return nil if str.is_a?(String) && str.empty?
|
64
|
+
|
65
|
+
str = /#{Regexp.escape(str)}/ if str.is_a?(String)
|
66
|
+
str = /\A(?:#{str})/
|
67
|
+
|
68
|
+
node2 = node.at_xpath("following-sibling::node()[1]")
|
69
|
+
node2.respond_to?(:text) && node2.text.match?(str)
|
70
|
+
end
|
71
|
+
|
72
|
+
def extract_leading_trailing_whitespace(node)
|
73
|
+
node.text =~ /^(\s+)/
|
74
|
+
leading_whitespace = $1
|
75
|
+
if !leading_whitespace.nil?
|
76
|
+
first_text = node.at_xpath("./text()[1]")
|
77
|
+
first_text&.replace(first_text.text.lstrip)
|
78
|
+
leading_whitespace = " "
|
79
|
+
end
|
80
|
+
node.text =~ /(\s+)$/
|
81
|
+
trailing_whitespace = $1
|
82
|
+
if !trailing_whitespace.nil?
|
83
|
+
last_text = node.at_xpath("./text()[last()]")
|
84
|
+
last_text&.replace(last_text.text.rstrip)
|
85
|
+
trailing_whitespace = " "
|
86
|
+
end
|
87
|
+
[leading_whitespace, trailing_whitespace]
|
88
|
+
end
|
89
|
+
|
90
|
+
def unconstrained_before?(node)
|
91
|
+
before = node.at_xpath("preceding::node()[1]")
|
92
|
+
|
93
|
+
before &&
|
94
|
+
!before.text.strip.empty? &&
|
95
|
+
before.text[-1]&.match?(/\w/)
|
96
|
+
end
|
97
|
+
|
98
|
+
def unconstrained_after?(node)
|
99
|
+
after = node.at_xpath("following::node()[1]")
|
100
|
+
|
101
|
+
after && !after.text.strip.empty? &&
|
102
|
+
after.text[0]&.match?(/\w|,|;|"|\.\?!/)
|
103
|
+
end
|
77
104
|
end
|
78
|
-
node.text =~ /(\s+)$/
|
79
|
-
trailing_whitespace = $1
|
80
|
-
if !trailing_whitespace.nil?
|
81
|
-
last_text = node.at_xpath("./text()[last()]")
|
82
|
-
last_text.replace(last_text.text.rstrip) if last_text
|
83
|
-
trailing_whitespace = " "
|
84
|
-
end
|
85
|
-
[leading_whitespace, trailing_whitespace]
|
86
|
-
end
|
87
|
-
|
88
|
-
def unconstrained_before?(node)
|
89
|
-
before = node.at_xpath("preceding::node()[1]")
|
90
|
-
|
91
|
-
before &&
|
92
|
-
!before.text.strip.empty? &&
|
93
|
-
before.text[-1]&.match?(/\w/)
|
94
|
-
end
|
95
|
-
|
96
|
-
def unconstrained_after?(node)
|
97
|
-
after = node.at_xpath("following::node()[1]")
|
98
|
-
|
99
|
-
after && !after.text.strip.empty? &&
|
100
|
-
after.text[0]&.match?(/\w|,|;|"|\.\?!/)
|
101
105
|
end
|
102
106
|
end
|
103
107
|
end
|
@@ -1,18 +1,22 @@
|
|
1
|
-
module Coradoc
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
1
|
+
module Coradoc
|
2
|
+
module Input
|
3
|
+
module Html
|
4
|
+
module Converters
|
5
|
+
class Blockquote < Base
|
6
|
+
def to_coradoc(node, state = {})
|
7
|
+
node["id"]
|
8
|
+
cite = node["cite"]
|
9
|
+
attributes = Coradoc::Element::AttributeList.new
|
10
|
+
attributes.add_positional("quote", cite) if !cite.nil?
|
11
|
+
content = treat_children(node, state).strip
|
12
|
+
content = Coradoc::Input::Html.cleaner.remove_newlines(content)
|
13
|
+
Coradoc::Element::Block::Quote.new(nil, lines: content,
|
14
|
+
attributes: attributes)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
register :blockquote, Blockquote.new
|
13
19
|
end
|
14
20
|
end
|
15
|
-
|
16
|
-
register :blockquote, Blockquote.new
|
17
21
|
end
|
18
22
|
end
|
@@ -1,11 +1,15 @@
|
|
1
|
-
module Coradoc
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Coradoc
|
2
|
+
module Input
|
3
|
+
module Html
|
4
|
+
module Converters
|
5
|
+
class Br < Base
|
6
|
+
def to_coradoc(_node, _state = {})
|
7
|
+
Coradoc::Element::Inline::HardLineBreak.new
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
register :br, Br.new
|
6
12
|
end
|
7
13
|
end
|
8
|
-
|
9
|
-
register :br, Br.new
|
10
14
|
end
|
11
15
|
end
|
@@ -1,77 +1,81 @@
|
|
1
|
-
module Coradoc
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Coradoc
|
2
|
+
module Input
|
3
|
+
module Html
|
4
|
+
module Converters
|
5
|
+
class Bypass < Base
|
6
|
+
def to_coradoc(node, state = {})
|
7
|
+
treat_children_coradoc(node, state)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
register :document, Bypass.new
|
12
|
+
register :html, Bypass.new
|
13
|
+
register :body, Bypass.new
|
14
|
+
register :span, Bypass.new
|
15
|
+
register :thead, Bypass.new
|
16
|
+
register :tbody, Bypass.new
|
17
|
+
register :tfoot, Bypass.new
|
18
|
+
register :abbr, Bypass.new
|
19
|
+
register :acronym, Bypass.new
|
20
|
+
register :address, Bypass.new
|
21
|
+
register :applet, Bypass.new
|
22
|
+
register :map, Bypass.new
|
23
|
+
register :area, Bypass.new
|
24
|
+
register :bdi, Bypass.new
|
25
|
+
register :bdo, Bypass.new
|
26
|
+
register :big, Bypass.new
|
27
|
+
register :button, Bypass.new
|
28
|
+
register :canvas, Bypass.new
|
29
|
+
register :data, Bypass.new
|
30
|
+
register :datalist, Bypass.new
|
31
|
+
register :del, Bypass.new
|
32
|
+
register :ins, Bypass.new
|
33
|
+
register :dfn, Bypass.new
|
34
|
+
register :dialog, Bypass.new
|
35
|
+
register :embed, Bypass.new
|
36
|
+
register :fieldset, Bypass.new
|
37
|
+
register :font, Bypass.new
|
38
|
+
register :footer, Bypass.new
|
39
|
+
register :form, Bypass.new
|
40
|
+
register :frame, Bypass.new
|
41
|
+
register :frameset, Bypass.new
|
42
|
+
register :header, Bypass.new
|
43
|
+
register :iframe, Bypass.new
|
44
|
+
register :input, Bypass.new
|
45
|
+
register :label, Bypass.new
|
46
|
+
register :legend, Bypass.new
|
47
|
+
register :main, Bypass.new
|
48
|
+
register :menu, Bypass.new
|
49
|
+
register :menulist, Bypass.new
|
50
|
+
register :meter, Bypass.new
|
51
|
+
register :nav, Bypass.new
|
52
|
+
register :noframes, Bypass.new
|
53
|
+
register :noscript, Bypass.new
|
54
|
+
register :object, Bypass.new
|
55
|
+
register :optgroup, Bypass.new
|
56
|
+
register :option, Bypass.new
|
57
|
+
register :output, Bypass.new
|
58
|
+
register :param, Bypass.new
|
59
|
+
register :picture, Bypass.new
|
60
|
+
register :progress, Bypass.new
|
61
|
+
register :ruby, Bypass.new
|
62
|
+
register :rt, Bypass.new
|
63
|
+
register :rp, Bypass.new
|
64
|
+
register :s, Bypass.new
|
65
|
+
register :select, Bypass.new
|
66
|
+
register :small, Bypass.new
|
67
|
+
register :span, Bypass.new
|
68
|
+
register :strike, Bypass.new
|
69
|
+
register :details, Bypass.new
|
70
|
+
register :section, Bypass.new
|
71
|
+
register :summary, Bypass.new
|
72
|
+
register :svg, Bypass.new
|
73
|
+
register :template, Bypass.new
|
74
|
+
register :textarea, Bypass.new
|
75
|
+
register :track, Bypass.new
|
76
|
+
register :u, Bypass.new
|
77
|
+
register :wbr, Bypass.new
|
6
78
|
end
|
7
79
|
end
|
8
|
-
|
9
|
-
register :document, Bypass.new
|
10
|
-
register :html, Bypass.new
|
11
|
-
register :body, Bypass.new
|
12
|
-
register :span, Bypass.new
|
13
|
-
register :thead, Bypass.new
|
14
|
-
register :tbody, Bypass.new
|
15
|
-
register :tfoot, Bypass.new
|
16
|
-
register :abbr, Bypass.new
|
17
|
-
register :acronym, Bypass.new
|
18
|
-
register :address, Bypass.new
|
19
|
-
register :applet, Bypass.new
|
20
|
-
register :map, Bypass.new
|
21
|
-
register :area, Bypass.new
|
22
|
-
register :bdi, Bypass.new
|
23
|
-
register :bdo, Bypass.new
|
24
|
-
register :big, Bypass.new
|
25
|
-
register :button, Bypass.new
|
26
|
-
register :canvas, Bypass.new
|
27
|
-
register :data, Bypass.new
|
28
|
-
register :datalist, Bypass.new
|
29
|
-
register :del, Bypass.new
|
30
|
-
register :ins, Bypass.new
|
31
|
-
register :dfn, Bypass.new
|
32
|
-
register :dialog, Bypass.new
|
33
|
-
register :embed, Bypass.new
|
34
|
-
register :fieldset, Bypass.new
|
35
|
-
register :font, Bypass.new
|
36
|
-
register :footer, Bypass.new
|
37
|
-
register :form, Bypass.new
|
38
|
-
register :frame, Bypass.new
|
39
|
-
register :frameset, Bypass.new
|
40
|
-
register :header, Bypass.new
|
41
|
-
register :iframe, Bypass.new
|
42
|
-
register :input, Bypass.new
|
43
|
-
register :label, Bypass.new
|
44
|
-
register :legend, Bypass.new
|
45
|
-
register :main, Bypass.new
|
46
|
-
register :menu, Bypass.new
|
47
|
-
register :menulist, Bypass.new
|
48
|
-
register :meter, Bypass.new
|
49
|
-
register :nav, Bypass.new
|
50
|
-
register :noframes, Bypass.new
|
51
|
-
register :noscript, Bypass.new
|
52
|
-
register :object, Bypass.new
|
53
|
-
register :optgroup, Bypass.new
|
54
|
-
register :option, Bypass.new
|
55
|
-
register :output, Bypass.new
|
56
|
-
register :param, Bypass.new
|
57
|
-
register :picture, Bypass.new
|
58
|
-
register :progress, Bypass.new
|
59
|
-
register :ruby, Bypass.new
|
60
|
-
register :rt, Bypass.new
|
61
|
-
register :rp, Bypass.new
|
62
|
-
register :s, Bypass.new
|
63
|
-
register :select, Bypass.new
|
64
|
-
register :small, Bypass.new
|
65
|
-
register :span, Bypass.new
|
66
|
-
register :strike, Bypass.new
|
67
|
-
register :details, Bypass.new
|
68
|
-
register :section, Bypass.new
|
69
|
-
register :summary, Bypass.new
|
70
|
-
register :svg, Bypass.new
|
71
|
-
register :template, Bypass.new
|
72
|
-
register :textarea, Bypass.new
|
73
|
-
register :track, Bypass.new
|
74
|
-
register :u, Bypass.new
|
75
|
-
register :wbr, Bypass.new
|
76
80
|
end
|
77
81
|
end
|
@@ -1,19 +1,23 @@
|
|
1
|
-
module Coradoc
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
module Coradoc
|
2
|
+
module Input
|
3
|
+
module Html
|
4
|
+
module Converters
|
5
|
+
class Code < Markup
|
6
|
+
def coradoc_class
|
7
|
+
Coradoc::Element::Inline::Monospace
|
8
|
+
end
|
9
|
+
|
10
|
+
def markup_ancestor_tag_names
|
11
|
+
%w[code tt kbd samp var]
|
12
|
+
end
|
13
|
+
end
|
7
14
|
|
8
|
-
|
9
|
-
|
15
|
+
register :code, Code.new
|
16
|
+
register :tt, Code.new
|
17
|
+
register :kbd, Code.new
|
18
|
+
register :samp, Code.new
|
19
|
+
register :var, Code.new
|
10
20
|
end
|
11
21
|
end
|
12
|
-
|
13
|
-
register :code, Code.new
|
14
|
-
register :tt, Code.new
|
15
|
-
register :kbd, Code.new
|
16
|
-
register :samp, Code.new
|
17
|
-
register :var, Code.new
|
18
22
|
end
|
19
23
|
end
|
@@ -1,15 +1,19 @@
|
|
1
|
-
module Coradoc
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
module Coradoc
|
2
|
+
module Input
|
3
|
+
module Html
|
4
|
+
module Converters
|
5
|
+
class Div < Base
|
6
|
+
def to_coradoc(node, state = {})
|
7
|
+
id = node["id"]
|
8
|
+
contents = treat_children_coradoc(node, state)
|
9
|
+
Coradoc::Element::Section.new(nil, id: id, contents: contents)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
register :div, Div.new
|
14
|
+
register :article, Div.new
|
15
|
+
register :center, Div.new
|
8
16
|
end
|
9
17
|
end
|
10
|
-
|
11
|
-
register :div, Div.new
|
12
|
-
register :article, Div.new
|
13
|
-
register :center, Div.new
|
14
18
|
end
|
15
19
|
end
|
@@ -1,55 +1,62 @@
|
|
1
|
-
module Coradoc
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
1
|
+
module Coradoc
|
2
|
+
module Input
|
3
|
+
module Html
|
4
|
+
module Converters
|
5
|
+
class Dl < Base
|
6
|
+
def to_coradoc(node, state = {})
|
7
|
+
items = process_dl(node, state)
|
8
|
+
items2 = items.map do |item|
|
9
|
+
Coradoc::Element::ListItemDefinition.new(item[:name],
|
10
|
+
item[:value])
|
11
|
+
end
|
12
|
+
Coradoc::Element::List::Definition.new(items2, delimiter: "::")
|
13
|
+
end
|
11
14
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
+
def process_dl(node, state = {})
|
16
|
+
groups = []
|
17
|
+
current = { name: [], value: [] }
|
15
18
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
19
|
+
seen_dd = false
|
20
|
+
child = node.at_xpath("*[1]")
|
21
|
+
grandchild = nil
|
22
|
+
while !child.nil?
|
23
|
+
if child.name == "div"
|
24
|
+
grandchild = child.at_xpath("*[1]")
|
25
|
+
while !grandchild.nil?
|
26
|
+
groups, current, seen_dd = process_dt_or_dd(groups, current,
|
27
|
+
seen_dd, grandchild, state)
|
28
|
+
grandchild = grandchild.at_xpath("following-sibling::*[1]")
|
29
|
+
end
|
30
|
+
elsif ["dt", "dd"].include?(child.name)
|
31
|
+
groups, current, seen_dd = process_dt_or_dd(groups, current,
|
32
|
+
seen_dd, child, state)
|
33
|
+
end
|
34
|
+
child = child.at_xpath("following-sibling::*[1]")
|
35
|
+
if current[:name].any? && current[:value].any?
|
36
|
+
groups << current
|
37
|
+
end
|
25
38
|
end
|
26
|
-
|
27
|
-
groups, current, seen_dd = process_dt_or_dd(groups, current, seen_dd, child, state)
|
28
|
-
end
|
29
|
-
child = child.at_xpath("following-sibling::*[1]")
|
30
|
-
if current[:name].any? && current[:value].any?
|
31
|
-
groups << current
|
39
|
+
groups
|
32
40
|
end
|
33
|
-
end
|
34
|
-
groups
|
35
|
-
end
|
36
41
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
42
|
+
def process_dt_or_dd(groups, current, seen_dd, subnode, state = {})
|
43
|
+
if subnode.name == "dt"
|
44
|
+
if seen_dd
|
45
|
+
# groups << current
|
46
|
+
current = { name: [], value: [] }
|
47
|
+
seen_dd = false
|
48
|
+
end
|
49
|
+
current[:name] += treat_children_coradoc(subnode, state)
|
50
|
+
elsif subnode.name == "dd"
|
51
|
+
current[:value] += treat_children_coradoc(subnode, state)
|
52
|
+
seen_dd = true
|
53
|
+
end
|
54
|
+
[groups, current, seen_dd]
|
43
55
|
end
|
44
|
-
current[:name] += treat_children_coradoc(subnode, state)
|
45
|
-
elsif subnode.name == "dd"
|
46
|
-
current[:value] += treat_children_coradoc(subnode, state)
|
47
|
-
seen_dd = true
|
48
56
|
end
|
49
|
-
|
57
|
+
|
58
|
+
register :dl, Dl.new
|
50
59
|
end
|
51
60
|
end
|
52
|
-
|
53
|
-
register :dl, Dl.new
|
54
61
|
end
|
55
62
|
end
|
@@ -1,22 +1,26 @@
|
|
1
|
-
module Coradoc
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
module Coradoc
|
2
|
+
module Input
|
3
|
+
module Html
|
4
|
+
module Converters
|
5
|
+
class Drop < Base
|
6
|
+
def to_coradoc(node, state = {})
|
7
|
+
convert(node, state)
|
8
|
+
end
|
9
|
+
|
10
|
+
def convert(_node, _state = {})
|
11
|
+
""
|
12
|
+
end
|
13
|
+
end
|
7
14
|
|
8
|
-
|
9
|
-
|
15
|
+
register :caption, Drop.new
|
16
|
+
register :figcaption, Drop.new
|
17
|
+
register :title, Drop.new
|
18
|
+
register :link, Drop.new
|
19
|
+
register :style, Drop.new
|
20
|
+
register :meta, Drop.new
|
21
|
+
register :script, Drop.new
|
22
|
+
register :comment, Drop.new
|
10
23
|
end
|
11
24
|
end
|
12
|
-
|
13
|
-
register :caption, Drop.new
|
14
|
-
register :figcaption, Drop.new
|
15
|
-
register :title, Drop.new
|
16
|
-
register :link, Drop.new
|
17
|
-
register :style, Drop.new
|
18
|
-
register :meta, Drop.new
|
19
|
-
register :script, Drop.new
|
20
|
-
register :comment, Drop.new
|
21
25
|
end
|
22
26
|
end
|