reverse_adoc 1.0.1 → 2.0.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 (105) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -3
  3. data/README.adoc +4 -294
  4. data/Rakefile +2 -13
  5. data/reverse_adoc.gemspec +2 -20
  6. metadata +5 -246
  7. data/.editorconfig +0 -15
  8. data/.github/workflows/rake.yml +0 -15
  9. data/.gitignore +0 -10
  10. data/.hound.yml +0 -5
  11. data/.rubocop.yml +0 -10
  12. data/LICENSE.txt +0 -25
  13. data/exe/reverse_adoc +0 -70
  14. data/exe/w2a +0 -72
  15. data/lib/reverse_adoc/cleaner.rb +0 -113
  16. data/lib/reverse_adoc/config.rb +0 -54
  17. data/lib/reverse_adoc/converters/a.rb +0 -42
  18. data/lib/reverse_adoc/converters/aside.rb +0 -16
  19. data/lib/reverse_adoc/converters/audio.rb +0 -29
  20. data/lib/reverse_adoc/converters/base.rb +0 -100
  21. data/lib/reverse_adoc/converters/blockquote.rb +0 -27
  22. data/lib/reverse_adoc/converters/br.rb +0 -15
  23. data/lib/reverse_adoc/converters/bypass.rb +0 -81
  24. data/lib/reverse_adoc/converters/code.rb +0 -56
  25. data/lib/reverse_adoc/converters/div.rb +0 -18
  26. data/lib/reverse_adoc/converters/drop.rb +0 -22
  27. data/lib/reverse_adoc/converters/em.rb +0 -55
  28. data/lib/reverse_adoc/converters/figure.rb +0 -25
  29. data/lib/reverse_adoc/converters/h.rb +0 -42
  30. data/lib/reverse_adoc/converters/head.rb +0 -23
  31. data/lib/reverse_adoc/converters/hr.rb +0 -15
  32. data/lib/reverse_adoc/converters/ignore.rb +0 -16
  33. data/lib/reverse_adoc/converters/img.rb +0 -93
  34. data/lib/reverse_adoc/converters/li.rb +0 -17
  35. data/lib/reverse_adoc/converters/mark.rb +0 -21
  36. data/lib/reverse_adoc/converters/math.rb +0 -31
  37. data/lib/reverse_adoc/converters/ol.rb +0 -64
  38. data/lib/reverse_adoc/converters/p.rb +0 -23
  39. data/lib/reverse_adoc/converters/pass_through.rb +0 -13
  40. data/lib/reverse_adoc/converters/pre.rb +0 -55
  41. data/lib/reverse_adoc/converters/q.rb +0 -16
  42. data/lib/reverse_adoc/converters/strong.rb +0 -52
  43. data/lib/reverse_adoc/converters/sub.rb +0 -16
  44. data/lib/reverse_adoc/converters/sup.rb +0 -16
  45. data/lib/reverse_adoc/converters/table.rb +0 -69
  46. data/lib/reverse_adoc/converters/td.rb +0 -83
  47. data/lib/reverse_adoc/converters/text.rb +0 -65
  48. data/lib/reverse_adoc/converters/th.rb +0 -14
  49. data/lib/reverse_adoc/converters/tr.rb +0 -22
  50. data/lib/reverse_adoc/converters/video.rb +0 -29
  51. data/lib/reverse_adoc/converters.rb +0 -32
  52. data/lib/reverse_adoc/errors.rb +0 -10
  53. data/lib/reverse_adoc/html_converter.rb +0 -61
  54. data/lib/reverse_adoc/version.rb +0 -3
  55. data/lib/reverse_adoc.rb +0 -27
  56. data/spec/assets/anchors.html +0 -30
  57. data/spec/assets/basic.html +0 -61
  58. data/spec/assets/code.html +0 -22
  59. data/spec/assets/escapables.html +0 -17
  60. data/spec/assets/external_images.docx +0 -0
  61. data/spec/assets/external_images.html +0 -35
  62. data/spec/assets/from_the_wild.html +0 -23
  63. data/spec/assets/full_example.html +0 -49
  64. data/spec/assets/html_fragment.html +0 -3
  65. data/spec/assets/lists.html +0 -137
  66. data/spec/assets/minimum.html +0 -4
  67. data/spec/assets/paragraphs.html +0 -24
  68. data/spec/assets/quotation.html +0 -12
  69. data/spec/assets/tables.html +0 -99
  70. data/spec/assets/unknown_tags.html +0 -9
  71. data/spec/bin/reverse_adoc_spec.rb +0 -33
  72. data/spec/bin/w2a_spec.rb +0 -35
  73. data/spec/components/anchors_spec.rb +0 -32
  74. data/spec/components/basic_spec.rb +0 -63
  75. data/spec/components/code_spec.rb +0 -25
  76. data/spec/components/escapables_spec.rb +0 -30
  77. data/spec/components/from_the_wild_spec.rb +0 -15
  78. data/spec/components/html_fragment_spec.rb +0 -9
  79. data/spec/components/lists_spec.rb +0 -90
  80. data/spec/components/paragraphs_spec.rb +0 -14
  81. data/spec/components/quotation_spec.rb +0 -12
  82. data/spec/components/tables_spec.rb +0 -42
  83. data/spec/components/unknown_tags_spec.rb +0 -41
  84. data/spec/lib/reverse_adoc/cleaner_spec.rb +0 -180
  85. data/spec/lib/reverse_adoc/config_spec.rb +0 -25
  86. data/spec/lib/reverse_adoc/converters/aside_spec.rb +0 -11
  87. data/spec/lib/reverse_adoc/converters/audio_spec.rb +0 -15
  88. data/spec/lib/reverse_adoc/converters/blockquote_spec.rb +0 -23
  89. data/spec/lib/reverse_adoc/converters/br_spec.rb +0 -9
  90. data/spec/lib/reverse_adoc/converters/code_spec.rb +0 -15
  91. data/spec/lib/reverse_adoc/converters/div_spec.rb +0 -15
  92. data/spec/lib/reverse_adoc/converters/figure_spec.rb +0 -10
  93. data/spec/lib/reverse_adoc/converters/img_spec.rb +0 -25
  94. data/spec/lib/reverse_adoc/converters/li_spec.rb +0 -11
  95. data/spec/lib/reverse_adoc/converters/mark_spec.rb +0 -10
  96. data/spec/lib/reverse_adoc/converters/p_spec.rb +0 -10
  97. data/spec/lib/reverse_adoc/converters/pre_spec.rb +0 -43
  98. data/spec/lib/reverse_adoc/converters/q_spec.rb +0 -10
  99. data/spec/lib/reverse_adoc/converters/strong_spec.rb +0 -21
  100. data/spec/lib/reverse_adoc/converters/text_spec.rb +0 -67
  101. data/spec/lib/reverse_adoc/converters/video_spec.rb +0 -15
  102. data/spec/lib/reverse_adoc/converters_spec.rb +0 -22
  103. data/spec/lib/reverse_adoc.rb +0 -90
  104. data/spec/spec_helper.rb +0 -25
  105. data/spec/support/shell_helpers.rb +0 -15
@@ -1,56 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Code < Base
4
- def to_coradoc(node, state = {})
5
- content = treat_children_coradoc(node, state)
6
-
7
- if Coradoc::Generator.gen_adoc(content).strip.empty?
8
- return ""
9
- end
10
-
11
- if node_has_ancestor?(node, ["code", "tt", "kbd", "samp", "var"])
12
- return content
13
- end
14
-
15
- node.text =~ /^(\s+)/
16
- leading_whitespace = $1
17
- has_leading_whitespace = !leading_whitespace.nil?
18
-
19
- if has_leading_whitespace
20
- first_text = node.at_xpath("./text()[1]")
21
- first_text.replace(first_text.text.lstrip)
22
- leading_whitespace = " "
23
- end
24
-
25
- node.text =~ /(\s+)$/
26
- trailing_whitespace = $1
27
- has_trailing_whitespace = !trailing_whitespace.nil?
28
-
29
- if has_trailing_whitespace
30
- last_text = node.at_xpath("./text()[last()]")
31
- last_text.replace(last_text.text.rstrip)
32
- trailing_whitespace = " "
33
- end
34
-
35
- u_before = unconstrained_before?(node)
36
- u_after = unconstrained_after?(node)
37
- u = !((!u_before || has_leading_whitespace) && (!u_after || has_trailing_whitespace))
38
- e = Coradoc::Element::Inline::Monospace.new(
39
- Coradoc::Element::TextElement.new(content), u
40
- )
41
-
42
- [leading_whitespace, e, trailing_whitespace]
43
- end
44
-
45
- def convert(node, state = {})
46
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
47
- end
48
- end
49
-
50
- register :code, Code.new
51
- register :tt, Code.new
52
- register :kbd, Code.new
53
- register :samp, Code.new
54
- register :var, Code.new
55
- end
56
- end
@@ -1,18 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Div < Base
4
- def to_coradoc(node, state = {})
5
- id = node["id"]
6
- contents = treat_children_coradoc(node, state)
7
- Coradoc::Element::Section.new(nil, id: id, contents: contents)
8
- end
9
-
10
- def convert(node, state = {})
11
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
12
- end
13
- end
14
-
15
- register :div, Div.new
16
- register :article, Div.new
17
- end
18
- end
@@ -1,22 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Drop < Base
4
- def to_coradoc(node, state = {})
5
- convert(node, state)
6
- end
7
-
8
- def convert(_node, _state = {})
9
- ""
10
- end
11
- 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
- end
22
- end
@@ -1,55 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Em < Base
4
- def to_coradoc(node, state = {})
5
- content = treat_children_coradoc(node,
6
- state.merge(already_italic: true))
7
-
8
- if Coradoc::Generator.gen_adoc(content).strip.empty?
9
- return ""
10
- end
11
-
12
- if node_has_ancestor?(node, ["em", "i", "cite"])
13
- return content
14
- end
15
-
16
- node.text =~ /^(\s+)/
17
- leading_whitespace = $1
18
- has_leading_whitespace = !leading_whitespace.nil?
19
-
20
- if has_leading_whitespace
21
- first_text = node.at_xpath("./text()[1]")
22
- first_text.replace(first_text.text.lstrip)
23
- leading_whitespace = " "
24
- end
25
-
26
- node.text =~ /(\s+)$/
27
- trailing_whitespace = $1
28
- has_trailing_whitespace = !trailing_whitespace.nil?
29
-
30
- if has_trailing_whitespace
31
- last_text = node.at_xpath("./text()[last()]")
32
- last_text.replace(last_text.text.rstrip)
33
- trailing_whitespace = " "
34
- end
35
-
36
- u_before = unconstrained_before?(node)
37
- u_after = unconstrained_after?(node)
38
- u = !((!u_before || has_leading_whitespace) && (!u_after || has_trailing_whitespace))
39
- e = Coradoc::Element::Inline::Italic.new(
40
- Coradoc::Element::TextElement.new(content), u
41
- )
42
-
43
- [leading_whitespace, e, trailing_whitespace]
44
- end
45
-
46
- def convert(node, state = {})
47
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
48
- end
49
- end
50
-
51
- register :em, Em.new
52
- register :i, Em.new
53
- register :cite, Em.new
54
- end
55
- end
@@ -1,25 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Figure < Base
4
- def to_coradoc(node, state = {})
5
- id = node["id"]
6
- title = extract_title(node)
7
- content = treat_children_coradoc(node, state)
8
- Coradoc::Element::Block::Example.new(title, lines: content, id: id)
9
- end
10
-
11
- def convert(node, state = {})
12
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
13
- end
14
-
15
- def extract_title(node)
16
- title = node.at("./figcaption")
17
- return "" if title.nil?
18
-
19
- treat_children_coradoc(title, {})
20
- end
21
- end
22
-
23
- register :figure, Figure.new
24
- end
25
- end
@@ -1,42 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class H < Base
4
- def to_coradoc(node, state = {})
5
- id = node["id"]
6
- internal_anchor = treat_children_anchors(node, state)
7
-
8
- if id.to_s.empty? && internal_anchor.size.positive?
9
- id = internal_anchor.first.id
10
- end
11
-
12
- level = node.name[/\d/].to_i
13
- content = treat_children_no_anchors(node, state)
14
-
15
- Coradoc::Element::Title.new(content, level, id: id)
16
- end
17
-
18
- def convert(node, state = {})
19
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
20
- end
21
-
22
- def treat_children_no_anchors(node, state)
23
- node.children.reject { |a| a.name == "a" }.inject([]) do |memo, child|
24
- memo << treat_coradoc(child, state)
25
- end
26
- end
27
-
28
- def treat_children_anchors(node, state)
29
- node.children.select { |a| a.name == "a" }.inject([]) do |memo, child|
30
- memo << treat_coradoc(child, state)
31
- end
32
- end
33
- end
34
-
35
- register :h1, H.new
36
- register :h2, H.new
37
- register :h3, H.new
38
- register :h4, H.new
39
- register :h5, H.new
40
- register :h6, H.new
41
- end
42
- end
@@ -1,23 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Head < Base
4
- def to_coradoc(node, _state = {})
5
- title = extract_title(node)
6
- Coradoc::Element::Header.new(title)
7
- end
8
-
9
- def convert(node, state = {})
10
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
11
- end
12
-
13
- def extract_title(node)
14
- title = node.at("./title")
15
- return "(???)" if title.nil?
16
-
17
- title.text
18
- end
19
- end
20
-
21
- register :head, Head.new
22
- end
23
- end
@@ -1,15 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Hr < Base
4
- def to_coradoc(_node, _state = {})
5
- Coradoc::Element::Break::ThematicBreak.new
6
- end
7
-
8
- def convert(node, state = {})
9
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
10
- end
11
- end
12
-
13
- register :hr, Hr.new
14
- end
15
- end
@@ -1,16 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Ignore < Base
4
- def to_coradoc(node, state = {})
5
- convert(node, state)
6
- end
7
-
8
- def convert(_node, _state = {})
9
- "" # noop
10
- end
11
- end
12
-
13
- register :colgroup, Ignore.new
14
- register :col, Ignore.new
15
- end
16
- end
@@ -1,93 +0,0 @@
1
- require "fileutils"
2
- require "pathname"
3
- require "tempfile"
4
- require "base64"
5
- require "marcel"
6
-
7
- module ReverseAdoc
8
- module Converters
9
- class Img < Base
10
- def image_number
11
- sprintf(
12
- ReverseAdoc.config.image_counter_pattern,
13
- ReverseAdoc.config.image_counter,
14
- )
15
- end
16
-
17
- def image_number_increment
18
- ReverseAdoc.config.image_counter += 1
19
- end
20
-
21
- def datauri2file(src)
22
- %r{^data:image/(?:[^;]+);base64,(?<imgdata>.+)$} =~ src
23
-
24
- dest_dir = Pathname.new(ReverseAdoc.config.destination).dirname
25
- images_dir = dest_dir.join("images")
26
- FileUtils.mkdir_p(images_dir)
27
-
28
- ext, image_src_path = determine_image_src_path(src, imgdata)
29
- image_dest_path = images_dir + "#{image_number}.#{ext}"
30
-
31
- # puts "image_dest_path: #{image_dest_path.to_s}"
32
- # puts "image_src_path: #{image_src_path.to_s}"
33
-
34
- FileUtils.cp(image_src_path, image_dest_path)
35
- image_number_increment
36
-
37
- image_dest_path.relative_path_from(dest_dir)
38
- end
39
-
40
- def determine_image_src_path(src, imgdata)
41
- return copy_temp_file(imgdata) if imgdata
42
-
43
- ext = File.extname(src).strip.downcase[1..-1]
44
- [ext, Pathname.new(ReverseAdoc.config.sourcedir).join(src)]
45
- end
46
-
47
- def copy_temp_file(imgdata)
48
- Tempfile.open(["radoc", ".jpg"]) do |f|
49
- f.binmode
50
- f.write(Base64.strict_decode64(imgdata))
51
- f.rewind
52
- ext = Marcel::MimeType.for(f).sub(%r{^[^/]+/}, "")
53
- [ext, f.path]
54
- end
55
- end
56
-
57
- def to_coradoc(node, _state = {})
58
- id = node["id"]
59
- alt = node["alt"]
60
- src = node["src"]
61
- width = node["width"]
62
- height = node["height"]
63
-
64
- title = extract_title(node)
65
-
66
- if ReverseAdoc.config.external_images
67
- # puts "external image conversion #{id}, #{src}"
68
- src = datauri2file(src)
69
- end
70
-
71
- attributes = Coradoc::Element::AttributeList.new
72
- # attributes.add_named("id", id) if id
73
- if alt # && !alt.to_s.empty?
74
- attributes.add_positional(alt)
75
- elsif width || height
76
- attributes.add_positional("\"\"")
77
- end
78
- # attributes.add_named("title", title) if title
79
- attributes.add_positional(width) if width
80
- attributes.add_positional(height) if height
81
-
82
- Coradoc::Element::Image::BlockImage.new(title, id, src,
83
- attributes: attributes)
84
- end
85
-
86
- def convert(node, state = {})
87
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
88
- end
89
- end
90
-
91
- register :img, Img.new
92
- end
93
- end
@@ -1,17 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Li < Base
4
- def to_coradoc(node, state = {})
5
- id = node["id"]
6
- content = treat_children_coradoc(node, state)
7
- Coradoc::Element::ListItem.new(content, id: id)
8
- end
9
-
10
- def convert(node, state = {})
11
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
12
- end
13
- end
14
-
15
- register :li, Li.new
16
- end
17
- end
@@ -1,21 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Mark < Base
4
- def to_coradoc(node, state = {})
5
- content = treat_children(node, state.merge(already_strong: true))
6
-
7
- if content.strip.empty? || state[:already_strong]
8
- return content
9
- end
10
-
11
- Coradoc::Element::Inline::Highlight.new(content, constrained?(node))
12
- end
13
-
14
- def convert(node, state = {})
15
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
16
- end
17
- end
18
-
19
- register :mark, Mark.new
20
- end
21
- end
@@ -1,31 +0,0 @@
1
- # Unless run with ReverseAdoc.config.mathml2asciimath,
2
- # this is cheating: we're injecting MathML into Asciidoctor, but
3
- # Asciidoctor only understands AsciiMath or LaTeX
4
-
5
- require "mathml2asciimath"
6
-
7
- module ReverseAdoc
8
- module Converters
9
- class Math < Base
10
- # FIXIT
11
- def to_coradoc(node, state = {})
12
- convert(node, state)
13
- end
14
-
15
- def convert(node, _state = {})
16
- stem = node.to_s.gsub(/\n/, " ")
17
- stem = MathML2AsciiMath.m2a(stem) if ReverseAdoc.config.mathml2asciimath
18
- unless stem.nil?
19
- stem = stem.gsub(/\[/, "\\[").gsub(/\]/, "\\]").gsub(
20
- /\(\(([^\)]+)\)\)/, "(\\1)"
21
- )
22
- end
23
-
24
- # TODO: This is to be done in Coradoc
25
- " stem:[" << stem << "] "
26
- end
27
- end
28
-
29
- register :math, Math.new
30
- end
31
- end
@@ -1,64 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Ol < Base
4
- # FIXIT
5
- def to_coradoc(node, state = {})
6
- # convert(node, state)
7
- id = node["id"]
8
- ol_count = state.fetch(:ol_count, 0) + 1
9
- attrs = ol_attrs(node)
10
- items = treat_children_coradoc(node, state.merge(ol_count: ol_count))
11
-
12
- options = {}.tap do |hash|
13
- hash[:id] = id
14
- hash[:ol_count] = ol_count
15
- hash[:attrs] = attrs
16
- end
17
-
18
- case get_list_type(node, state)
19
- when :ordered
20
- Coradoc::Element::List::Ordered.new(items, options)
21
- when :unordered
22
- Coradoc::Element::List::Unordered.new(items, options)
23
- end
24
- end
25
-
26
- def convert(node, state = {})
27
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
28
- end
29
-
30
- def get_list_type(node, _state)
31
- case node.name
32
- when "ol"
33
- :ordered
34
- when "ul"
35
- :unordered
36
- end
37
- end
38
-
39
- def number_style(node)
40
- case node["style"]
41
- when "1" then "arabic"
42
- when "A" then "upperalpha"
43
- when "a" then "loweralpha"
44
- when "I" then "upperroman"
45
- when "i" then "lowerroman"
46
- end
47
- end
48
-
49
- def ol_attrs(node)
50
- attrs = Coradoc::Element::AttributeList.new
51
- style = number_style(node)
52
- attrs.add_positional(style) if style
53
- attrs.add_positional("%reversed") if node["reversed"]
54
- attrs.add_named("start", node["start"]) if node["start"]
55
- attrs.add_named("type", node["type"]) if node["type"]
56
- attrs
57
- end
58
- end
59
-
60
- register :ol, Ol.new
61
- register :ul, Ol.new
62
- register :dir, Ol.new
63
- end
64
- end
@@ -1,23 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class P < Base
4
- def to_coradoc(node, state = {})
5
- id = node["id"]
6
- content = treat_children_coradoc(node, state)
7
-
8
- options = {}.tap do |hash|
9
- hash[:id] = id if id
10
- hash[:tdsinglepara] = true if state[:tdsinglepara]
11
- end
12
-
13
- Coradoc::Element::Paragraph.new(content, options)
14
- end
15
-
16
- def convert(node, state = {})
17
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
18
- end
19
- end
20
-
21
- register :p, P.new
22
- end
23
- end
@@ -1,13 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class PassThrough < Base
4
- def to_coradoc(node, _state = {})
5
- node.to_s
6
- end
7
-
8
- def convert(node, state = {})
9
- to_coradoc(node, state)
10
- end
11
- end
12
- end
13
- end
@@ -1,55 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Pre < Base
4
- def to_coradoc(node, state = {})
5
- id = node["id"]
6
- lang = language(node)
7
- content = treat_children(node, state)
8
-
9
- unless lang
10
- return Coradoc::Element::Block::Literal.new(
11
- nil,
12
- lines: content,
13
- id: id,
14
- )
15
- end
16
-
17
- Coradoc::Element::Block::SourceCode.new(
18
- nil,
19
- lines: content,
20
- lang: lang,
21
- id: id,
22
- )
23
- end
24
-
25
- def convert(node, state = {})
26
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
27
- end
28
-
29
- private
30
-
31
- def treat(node, _state)
32
- return "\n" if node.name == "br"
33
-
34
- prefix = postfix = "\n\n" if node.name == "p"
35
-
36
- "#{prefix}#{node.text}#{postfix}"
37
- end
38
-
39
- def language(node)
40
- lang = language_from_highlight_class(node)
41
- lang || language_from_confluence_class(node)
42
- end
43
-
44
- def language_from_highlight_class(node)
45
- node.parent["class"].to_s[/highlight-([a-zA-Z0-9]+)/, 1]
46
- end
47
-
48
- def language_from_confluence_class(node)
49
- node["class"].to_s[/brush:\s?(:?.*);/, 1]
50
- end
51
- end
52
-
53
- register :pre, Pre.new
54
- end
55
- end
@@ -1,16 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Q < Base
4
- def to_coradoc(node, state = {})
5
- content = treat_children(node, state)
6
- Coradoc::Element::Inline::Quotation.new(content)
7
- end
8
-
9
- def convert(node, state = {})
10
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
11
- end
12
- end
13
-
14
- register :q, Q.new
15
- end
16
- end
@@ -1,52 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Strong < Base
4
- def to_coradoc(node, state = {})
5
- content = treat_children_coradoc(node,
6
- state.merge(already_strong: true))
7
-
8
- if Coradoc::Generator.gen_adoc(content).strip.empty?
9
- return ""
10
- end
11
-
12
- if node_has_ancestor?(node, ["strong", "b"])
13
- return content
14
- end
15
-
16
- u_before = unconstrained_before?(node)
17
- u_after = unconstrained_after?(node)
18
- node.text =~ /^(\s+)/
19
- leading_whitespace = $1
20
- has_leading_whitespace = !leading_whitespace.nil?
21
-
22
- if has_leading_whitespace
23
- first_text = node.at_xpath("./text()[1]")
24
- first_text.replace(first_text.text.lstrip)
25
- leading_whitespace = u_before ? " " : " " # ########################33 somethings wrong in here
26
- end
27
-
28
- node.text =~ /(\s+)$/
29
- trailing_whitespace = $1
30
- has_trailing_whitespace = !trailing_whitespace.nil?
31
-
32
- if has_trailing_whitespace
33
- last_text = node.at_xpath("./text()[last()]")
34
- last_text.replace(last_text.text.rstrip)
35
- trailing_whitespace = u_after ? "" : "" ###############################
36
- end
37
-
38
- u = !((!u_before || has_leading_whitespace) && (!u_after || has_trailing_whitespace))
39
- e = Coradoc::Element::Inline::Bold.new(content, u)
40
-
41
- [leading_whitespace, e, trailing_whitespace]
42
- end
43
-
44
- def convert(node, state = {})
45
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
46
- end
47
- end
48
-
49
- register :strong, Strong.new
50
- register :b, Strong.new
51
- end
52
- end
@@ -1,16 +0,0 @@
1
- module ReverseAdoc
2
- module Converters
3
- class Sub < Base
4
- def to_coradoc(node, state = {})
5
- content = treat_children_coradoc(node, state)
6
- Coradoc::Element::Inline::Subscript.new(content)
7
- end
8
-
9
- def convert(node, state = {})
10
- Coradoc::Generator.gen_adoc(to_coradoc(node, state))
11
- end
12
- end
13
-
14
- register :sub, Sub.new
15
- end
16
- end