coradoc 1.1.6 → 1.1.8
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/README.adoc +5 -0
- data/coradoc.gemspec +5 -5
- 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 +53 -24
- 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 +24 -20
- 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 +41 -34
- data/.hound.yml +0 -5
- data/lib/coradoc/element/inline/citation.rb +0 -24
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
module Coradoc
|
|
2
|
-
module
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
module Coradoc
|
|
2
|
+
module Input
|
|
3
|
+
module Html
|
|
4
|
+
module Converters
|
|
5
|
+
class Em < Markup
|
|
6
|
+
def coradoc_class
|
|
7
|
+
Coradoc::Element::Inline::Italic
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def markup_ancestor_tag_names
|
|
11
|
+
%w[em i cite]
|
|
12
|
+
end
|
|
13
|
+
end
|
|
7
14
|
|
|
8
|
-
|
|
9
|
-
|
|
15
|
+
register :em, Em.new
|
|
16
|
+
register :i, Em.new
|
|
17
|
+
register :cite, Em.new
|
|
10
18
|
end
|
|
11
19
|
end
|
|
12
|
-
|
|
13
|
-
register :em, Em.new
|
|
14
|
-
register :i, Em.new
|
|
15
|
-
register :cite, Em.new
|
|
16
20
|
end
|
|
17
21
|
end
|
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
module Coradoc
|
|
2
|
-
module
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
module Coradoc
|
|
2
|
+
module Input
|
|
3
|
+
module Html
|
|
4
|
+
module Converters
|
|
5
|
+
class Figure < Base
|
|
6
|
+
def to_coradoc(node, state = {})
|
|
7
|
+
id = node["id"]
|
|
8
|
+
title = extract_title(node)
|
|
9
|
+
content = treat_children_coradoc(node, state)
|
|
10
|
+
Coradoc::Element::Block::Example.new(title, lines: content, id: id)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def extract_title(node)
|
|
14
|
+
title = node.at("./figcaption")
|
|
15
|
+
return "" if title.nil?
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
treat_children_coradoc(title, {})
|
|
18
|
+
end
|
|
19
|
+
end
|
|
14
20
|
|
|
15
|
-
|
|
21
|
+
register :figure, Figure.new
|
|
16
22
|
end
|
|
17
23
|
end
|
|
18
|
-
|
|
19
|
-
register :figure, Figure.new
|
|
20
24
|
end
|
|
21
25
|
end
|
|
@@ -1,40 +1,42 @@
|
|
|
1
|
-
module Coradoc
|
|
2
|
-
module
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
module Coradoc
|
|
2
|
+
module Input
|
|
3
|
+
module Html
|
|
4
|
+
module Converters
|
|
5
|
+
class H < Base
|
|
6
|
+
def to_coradoc(node, state = {})
|
|
7
|
+
id = node["id"]
|
|
8
|
+
internal_anchor = treat_children_anchors(node, state)
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
end
|
|
12
|
-
end
|
|
10
|
+
if id.to_s.empty? && internal_anchor.size.positive? && internal_anchor.first.respond_to?(:id)
|
|
11
|
+
id = internal_anchor.first.id
|
|
12
|
+
end
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
level = node.name[/\d/].to_i
|
|
15
|
+
content = treat_children_no_anchors(node, state)
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
Coradoc::Element::Title.new(content, level, id: id)
|
|
18
|
+
end
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
def treat_children_no_anchors(node, state)
|
|
21
|
+
node.children.reject { |a| a.name == "a" }.map do |child|
|
|
22
|
+
treat_coradoc(child, state)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
def treat_children_anchors(node, state)
|
|
27
|
+
node.children.select { |a| a.name == "a" }.map do |child|
|
|
28
|
+
treat_coradoc(child, state)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
29
31
|
end
|
|
32
|
+
|
|
33
|
+
register :h1, H.new
|
|
34
|
+
register :h2, H.new
|
|
35
|
+
register :h3, H.new
|
|
36
|
+
register :h4, H.new
|
|
37
|
+
register :h5, H.new
|
|
38
|
+
register :h6, H.new
|
|
30
39
|
end
|
|
31
40
|
end
|
|
32
|
-
|
|
33
|
-
register :h1, H.new
|
|
34
|
-
register :h2, H.new
|
|
35
|
-
register :h3, H.new
|
|
36
|
-
register :h4, H.new
|
|
37
|
-
register :h5, H.new
|
|
38
|
-
register :h6, H.new
|
|
39
41
|
end
|
|
40
42
|
end
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
module Coradoc
|
|
2
|
-
module
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
module Coradoc
|
|
2
|
+
module Input
|
|
3
|
+
module Html
|
|
4
|
+
module Converters
|
|
5
|
+
class Head < Base
|
|
6
|
+
def to_coradoc(node, _state = {})
|
|
7
|
+
title = extract_title(node)
|
|
8
|
+
Coradoc::Element::Header.new(title)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def extract_title(node)
|
|
12
|
+
title = node.at("./title")
|
|
13
|
+
return "(???)" if title.nil?
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
15
|
+
title.text
|
|
16
|
+
end
|
|
17
|
+
end
|
|
12
18
|
|
|
13
|
-
|
|
19
|
+
register :head, Head.new
|
|
14
20
|
end
|
|
15
21
|
end
|
|
16
|
-
|
|
17
|
-
register :head, Head.new
|
|
18
22
|
end
|
|
19
23
|
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 Hr < Base
|
|
6
|
+
def to_coradoc(_node, _state = {})
|
|
7
|
+
Coradoc::Element::Break::ThematicBreak.new
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
register :hr, Hr.new
|
|
6
12
|
end
|
|
7
13
|
end
|
|
8
|
-
|
|
9
|
-
register :hr, Hr.new
|
|
10
14
|
end
|
|
11
15
|
end
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
module Coradoc
|
|
2
|
-
module
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
module Coradoc
|
|
2
|
+
module Input
|
|
3
|
+
module Html
|
|
4
|
+
module Converters
|
|
5
|
+
class Ignore < Base
|
|
6
|
+
def to_coradoc(node, state = {})
|
|
7
|
+
convert(node, state)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def convert(_node, _state = {})
|
|
11
|
+
"" # noop
|
|
12
|
+
end
|
|
13
|
+
end
|
|
7
14
|
|
|
8
|
-
|
|
9
|
-
|
|
15
|
+
register :colgroup, Ignore.new
|
|
16
|
+
register :col, Ignore.new
|
|
10
17
|
end
|
|
11
18
|
end
|
|
12
|
-
|
|
13
|
-
register :colgroup, Ignore.new
|
|
14
|
-
register :col, Ignore.new
|
|
15
19
|
end
|
|
16
20
|
end
|
|
@@ -4,102 +4,107 @@ require "tempfile"
|
|
|
4
4
|
require "base64"
|
|
5
5
|
require "marcel"
|
|
6
6
|
|
|
7
|
-
module Coradoc
|
|
8
|
-
module
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
7
|
+
module Coradoc
|
|
8
|
+
module Input
|
|
9
|
+
module Html
|
|
10
|
+
module Converters
|
|
11
|
+
class Img < Base
|
|
12
|
+
def image_number
|
|
13
|
+
sprintf(
|
|
14
|
+
Coradoc::Input::Html.config.image_counter_pattern,
|
|
15
|
+
Coradoc::Input::Html.config.image_counter,
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def image_number_increment
|
|
20
|
+
Coradoc::Input::Html.config.image_counter += 1
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def datauri2file(src)
|
|
24
|
+
return unless src
|
|
25
|
+
|
|
26
|
+
%r{^data:image/(?:[^;]+);base64,(?<imgdata>.+)$} =~ src
|
|
27
|
+
|
|
28
|
+
dest_dir = Pathname.new(Coradoc::Input::Html.config.destination).dirname
|
|
29
|
+
images_dir = dest_dir.join("images")
|
|
30
|
+
FileUtils.mkdir_p(images_dir)
|
|
31
|
+
|
|
32
|
+
ext, image_src_path, tempfile = determine_image_src_path(src,
|
|
33
|
+
imgdata)
|
|
34
|
+
image_dest_path = images_dir + "#{image_number}.#{ext}"
|
|
35
|
+
|
|
36
|
+
# puts "image_dest_path: #{image_dest_path.to_s}"
|
|
37
|
+
# puts "image_src_path: #{image_src_path.to_s}"
|
|
38
|
+
|
|
39
|
+
if File.exist?(image_src_path)
|
|
40
|
+
FileUtils.cp(image_src_path, image_dest_path)
|
|
41
|
+
else
|
|
42
|
+
@annotate_missing = image_src_path
|
|
43
|
+
Kernel.warn "Image #{image_src_path} does not exist"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
image_number_increment
|
|
47
|
+
|
|
48
|
+
image_dest_path.relative_path_from(dest_dir)
|
|
49
|
+
ensure
|
|
50
|
+
tempfile&.close!
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def determine_image_src_path(src, imgdata)
|
|
54
|
+
return copy_temp_file(imgdata) if imgdata
|
|
55
|
+
|
|
56
|
+
ext = File.extname(src).strip.downcase[1..]
|
|
57
|
+
[ext, Pathname.new(Coradoc::Input::Html.config.sourcedir).join(src)]
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def copy_temp_file(imgdata)
|
|
61
|
+
f = Tempfile.open(["radoc", ".jpg"])
|
|
62
|
+
f.binmode
|
|
63
|
+
f.write(Base64.strict_decode64(imgdata))
|
|
64
|
+
f.rewind
|
|
65
|
+
ext = Marcel::MimeType.for(f).sub(%r{^[^/]+/}, "")
|
|
66
|
+
ext = "svg" if ext == "svg+xml"
|
|
67
|
+
[ext, f.path, f]
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def to_coradoc(node, _state = {})
|
|
71
|
+
id = node["id"]
|
|
72
|
+
alt = node["alt"]
|
|
73
|
+
src = node["src"]
|
|
74
|
+
width = node["width"]
|
|
75
|
+
height = node["height"]
|
|
76
|
+
|
|
77
|
+
width = width.to_i if width&.match?(/\A\d+\z/)
|
|
78
|
+
height = height.to_i if height&.match?(/\A\d+\z/)
|
|
79
|
+
|
|
80
|
+
title = extract_title(node)
|
|
81
|
+
|
|
82
|
+
if Coradoc::Input::Html.config.external_images
|
|
83
|
+
# puts "external image conversion #{id}, #{src}"
|
|
84
|
+
src = datauri2file(src)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
attributes = Coradoc::Element::AttributeList.new
|
|
88
|
+
# attributes.add_named("id", id) if id
|
|
89
|
+
if alt # && !alt.to_s.empty?
|
|
90
|
+
attributes.add_positional(alt)
|
|
91
|
+
elsif width || height
|
|
92
|
+
attributes.add_positional(nil)
|
|
93
|
+
end
|
|
94
|
+
attributes.add_named("title", title) if title && !title.empty?
|
|
95
|
+
attributes.add_positional(width) if width
|
|
96
|
+
attributes.add_positional(height) if height
|
|
97
|
+
|
|
98
|
+
if src
|
|
99
|
+
Coradoc::Element::Image::BlockImage.new(title, id, src,
|
|
100
|
+
attributes: attributes,
|
|
101
|
+
annotate_missing: @annotate_missing)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
41
104
|
end
|
|
42
105
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
image_dest_path.relative_path_from(dest_dir)
|
|
46
|
-
ensure
|
|
47
|
-
tempfile&.close!
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def determine_image_src_path(src, imgdata)
|
|
51
|
-
return copy_temp_file(imgdata) if imgdata
|
|
52
|
-
|
|
53
|
-
ext = File.extname(src).strip.downcase[1..-1]
|
|
54
|
-
[ext, Pathname.new(Coradoc::Input::HTML.config.sourcedir).join(src)]
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def copy_temp_file(imgdata)
|
|
58
|
-
f = Tempfile.open(["radoc", ".jpg"])
|
|
59
|
-
f.binmode
|
|
60
|
-
f.write(Base64.strict_decode64(imgdata))
|
|
61
|
-
f.rewind
|
|
62
|
-
ext = Marcel::MimeType.for(f).sub(%r{^[^/]+/}, "")
|
|
63
|
-
ext = "svg" if ext == "svg+xml"
|
|
64
|
-
[ext, f.path, f]
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def to_coradoc(node, _state = {})
|
|
68
|
-
id = node["id"]
|
|
69
|
-
alt = node["alt"]
|
|
70
|
-
src = node["src"]
|
|
71
|
-
width = node["width"]
|
|
72
|
-
height = node["height"]
|
|
73
|
-
|
|
74
|
-
width = width.to_i if width&.match?(/\A\d+\z/)
|
|
75
|
-
height = height.to_i if height&.match?(/\A\d+\z/)
|
|
76
|
-
|
|
77
|
-
title = extract_title(node)
|
|
78
|
-
|
|
79
|
-
if Coradoc::Input::HTML.config.external_images
|
|
80
|
-
# puts "external image conversion #{id}, #{src}"
|
|
81
|
-
src = datauri2file(src)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
attributes = Coradoc::Element::AttributeList.new
|
|
85
|
-
# attributes.add_named("id", id) if id
|
|
86
|
-
if alt # && !alt.to_s.empty?
|
|
87
|
-
attributes.add_positional(alt)
|
|
88
|
-
elsif width || height
|
|
89
|
-
attributes.add_positional(nil)
|
|
90
|
-
end
|
|
91
|
-
attributes.add_named("title", title) if title && !title.empty?
|
|
92
|
-
attributes.add_positional(width) if width
|
|
93
|
-
attributes.add_positional(height) if height
|
|
94
|
-
|
|
95
|
-
if src
|
|
96
|
-
Coradoc::Element::Image::BlockImage.new(title, id, src,
|
|
97
|
-
attributes: attributes,
|
|
98
|
-
annotate_missing: @annotate_missing)
|
|
99
|
-
end
|
|
106
|
+
register :img, Img
|
|
100
107
|
end
|
|
101
108
|
end
|
|
102
|
-
|
|
103
|
-
register :img, Img
|
|
104
109
|
end
|
|
105
110
|
end
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
module Coradoc
|
|
2
|
-
module
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
module Coradoc
|
|
2
|
+
module Input
|
|
3
|
+
module Html
|
|
4
|
+
module Converters
|
|
5
|
+
class Li < Base
|
|
6
|
+
def to_coradoc(node, state = {})
|
|
7
|
+
id = node["id"]
|
|
8
|
+
content = treat_children_coradoc(node, state)
|
|
9
|
+
Coradoc::Element::ListItem.new(content, id: id)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
register :li, Li.new
|
|
8
14
|
end
|
|
9
15
|
end
|
|
10
|
-
|
|
11
|
-
register :li, Li.new
|
|
12
16
|
end
|
|
13
17
|
end
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
module Coradoc
|
|
2
|
-
module
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
module Coradoc
|
|
2
|
+
module Input
|
|
3
|
+
module Html
|
|
4
|
+
module Converters
|
|
5
|
+
class Mark < Markup
|
|
6
|
+
def coradoc_class
|
|
7
|
+
Coradoc::Element::Inline::Highlight
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def markup_ancestor_tag_names
|
|
11
|
+
%w[mark]
|
|
12
|
+
end
|
|
13
|
+
end
|
|
7
14
|
|
|
8
|
-
|
|
9
|
-
%w[mark]
|
|
15
|
+
register :mark, Mark.new
|
|
10
16
|
end
|
|
11
17
|
end
|
|
12
|
-
|
|
13
|
-
register :mark, Mark.new
|
|
14
18
|
end
|
|
15
19
|
end
|
|
@@ -1,25 +1,29 @@
|
|
|
1
|
-
module Coradoc
|
|
2
|
-
module
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
module Coradoc
|
|
2
|
+
module Input
|
|
3
|
+
module Html
|
|
4
|
+
module Converters
|
|
5
|
+
class Markup < Base
|
|
6
|
+
def to_coradoc(node, state = {})
|
|
7
|
+
u_before = unconstrained_before?(node)
|
|
8
|
+
u_after = unconstrained_after?(node)
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
leading_whitespace, trailing_whitespace =
|
|
11
|
+
extract_leading_trailing_whitespace(node)
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
content = treat_children_coradoc(node, state)
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
if node_has_ancestor?(node, markup_ancestor_tag_names)
|
|
16
|
+
content
|
|
17
|
+
elsif node.children.empty?
|
|
18
|
+
leading_whitespace.to_s
|
|
19
|
+
else
|
|
20
|
+
u = (u_before && leading_whitespace.nil?) ||
|
|
21
|
+
(u_after && trailing_whitespace.nil?)
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
+
e = coradoc_class.new(content, unconstrained: u)
|
|
24
|
+
[leading_whitespace, e, trailing_whitespace]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
23
27
|
end
|
|
24
28
|
end
|
|
25
29
|
end
|
|
@@ -4,31 +4,35 @@
|
|
|
4
4
|
|
|
5
5
|
require "plurimath"
|
|
6
6
|
|
|
7
|
-
module Coradoc
|
|
8
|
-
module
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
module Coradoc
|
|
8
|
+
module Input
|
|
9
|
+
module Html
|
|
10
|
+
module Converters
|
|
11
|
+
class Math < Base
|
|
12
|
+
# FIXIT
|
|
13
|
+
def to_coradoc(node, state = {})
|
|
14
|
+
convert(node, state)
|
|
15
|
+
end
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
def convert(node, _state = {})
|
|
18
|
+
stem = node.to_s.tr("\n", " ")
|
|
19
|
+
if Coradoc::Input::Html.config.mathml2asciimath
|
|
20
|
+
stem = Plurimath::Math.parse(stem, :mathml).to_asciimath
|
|
21
|
+
end
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
unless stem.nil?
|
|
24
|
+
stem = stem.gsub(/\[/, "\\[").gsub(/\]/, "\\]").gsub(
|
|
25
|
+
/\(\(([^\)]+)\)\)/, "(\\1)"
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# TODO: This is to be done in Coradoc
|
|
30
|
+
" stem:[" << stem << "] "
|
|
31
|
+
end
|
|
25
32
|
end
|
|
26
33
|
|
|
27
|
-
|
|
28
|
-
" stem:[" << stem << "] "
|
|
34
|
+
register :math, Math.new
|
|
29
35
|
end
|
|
30
36
|
end
|
|
31
|
-
|
|
32
|
-
register :math, Math.new
|
|
33
37
|
end
|
|
34
38
|
end
|