coradoc-html 1.1.7 → 1.1.13
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/coradoc/html/config.rb +36 -12
- data/lib/coradoc/html/converter_base.rb +26 -68
- data/lib/coradoc/html/drop/annotation_drop.rb +31 -0
- data/lib/coradoc/html/drop/base.rb +77 -0
- data/lib/coradoc/html/drop/bibliography_drop.rb +15 -0
- data/lib/coradoc/html/drop/bibliography_entry_drop.rb +24 -0
- data/lib/coradoc/html/drop/block_drop.rb +69 -0
- data/lib/coradoc/html/drop/definition_item_drop.rb +36 -0
- data/lib/coradoc/html/drop/definition_list_drop.rb +15 -0
- data/lib/coradoc/html/drop/document_drop.rb +52 -0
- data/lib/coradoc/html/drop/drop_factory.rb +73 -0
- data/lib/coradoc/html/drop/footnote_drop.rb +24 -0
- data/lib/coradoc/html/drop/image_drop.rb +35 -0
- data/lib/coradoc/html/drop/inline_element_drop.rb +64 -0
- data/lib/coradoc/html/drop/list_block_drop.rb +23 -0
- data/lib/coradoc/html/drop/list_item_drop.rb +20 -0
- data/lib/coradoc/html/drop/table_cell_drop.rb +35 -0
- data/lib/coradoc/html/drop/table_drop.rb +15 -0
- data/lib/coradoc/html/drop/table_row_drop.rb +23 -0
- data/lib/coradoc/html/drop/term_drop.rb +24 -0
- data/lib/coradoc/html/drop/text_content_drop.rb +15 -0
- data/lib/coradoc/html/drop/toc_drop.rb +15 -0
- data/lib/coradoc/html/drop/toc_entry_drop.rb +32 -0
- data/lib/coradoc/html/escape.rb +29 -0
- data/lib/coradoc/html/input/cleaner.rb +4 -33
- data/lib/coradoc/html/input/config.rb +4 -3
- data/lib/coradoc/html/input/converters/a.rb +8 -19
- data/lib/coradoc/html/input/converters/aside.rb +4 -5
- data/lib/coradoc/html/input/converters/audio.rb +8 -35
- data/lib/coradoc/html/input/converters/base.rb +29 -27
- data/lib/coradoc/html/input/converters/blockquote.rb +4 -2
- data/lib/coradoc/html/input/converters/br.rb +4 -4
- data/lib/coradoc/html/input/converters/bypass.rb +68 -67
- data/lib/coradoc/html/input/converters/code.rb +7 -5
- data/lib/coradoc/html/input/converters/div.rb +4 -4
- data/lib/coradoc/html/input/converters/dl.rb +3 -25
- data/lib/coradoc/html/input/converters/drop.rb +13 -13
- data/lib/coradoc/html/input/converters/em.rb +5 -3
- data/lib/coradoc/html/input/converters/figure.rb +3 -26
- data/lib/coradoc/html/input/converters/h.rb +9 -11
- data/lib/coradoc/html/input/converters/head.rb +5 -4
- data/lib/coradoc/html/input/converters/hr.rb +4 -5
- data/lib/coradoc/html/input/converters/img.rb +4 -9
- data/lib/coradoc/html/input/converters/li.rb +3 -1
- data/lib/coradoc/html/input/converters/mark.rb +3 -1
- data/lib/coradoc/html/input/converters/markup.rb +4 -8
- data/lib/coradoc/html/input/converters/math.rb +7 -14
- data/lib/coradoc/html/input/converters/media_base.rb +50 -0
- data/lib/coradoc/html/input/converters/ol.rb +6 -8
- data/lib/coradoc/html/input/converters/p.rb +43 -34
- data/lib/coradoc/html/input/converters/pass_through.rb +2 -4
- data/lib/coradoc/html/input/converters/positional_formatting.rb +37 -0
- data/lib/coradoc/html/input/converters/pre.rb +3 -3
- data/lib/coradoc/html/input/converters/q.rb +6 -3
- data/lib/coradoc/html/input/converters/strong.rb +4 -2
- data/lib/coradoc/html/input/converters/sub.rb +7 -23
- data/lib/coradoc/html/input/converters/sup.rb +7 -23
- data/lib/coradoc/html/input/converters/table.rb +3 -1
- data/lib/coradoc/html/input/converters/td.rb +4 -30
- data/lib/coradoc/html/input/converters/text.rb +4 -3
- data/lib/coradoc/html/input/converters/tr.rb +3 -2
- data/lib/coradoc/html/input/converters/video.rb +14 -36
- data/lib/coradoc/html/input/converters.rb +17 -35
- data/lib/coradoc/html/input/html_converter.rb +2 -74
- data/lib/coradoc/html/input/plugin.rb +8 -50
- data/lib/coradoc/html/input/plugins/plateau.rb +4 -19
- data/lib/coradoc/html/input/postprocessor.rb +3 -9
- data/lib/coradoc/html/input.rb +26 -8
- data/lib/coradoc/html/layout_renderer.rb +163 -0
- data/lib/coradoc/html/output.rb +6 -12
- data/lib/coradoc/html/renderer.rb +84 -350
- data/lib/coradoc/html/section_numberable.rb +9 -0
- data/lib/coradoc/html/spa.rb +29 -270
- data/lib/coradoc/html/static.rb +29 -238
- data/lib/coradoc/html/template_caching.rb +31 -0
- data/lib/coradoc/html/template_config.rb +11 -70
- data/lib/coradoc/html/template_helpers.rb +39 -31
- data/lib/coradoc/html/template_locator.rb +17 -11
- data/lib/coradoc/html/theme.rb +1 -7
- data/lib/coradoc/html/title_text.rb +57 -0
- data/lib/coradoc/html/toc_builder.rb +105 -0
- data/lib/coradoc/html/toc_serializer.rb +33 -0
- data/lib/coradoc/html/transform/from_core_model.rb +13 -12
- data/lib/coradoc/html/transform/to_core_model.rb +10 -12
- data/lib/coradoc/html/version.rb +1 -1
- data/lib/coradoc/html.rb +43 -88
- metadata +37 -70
- data/lib/coradoc/html/base.rb +0 -157
- data/lib/coradoc/html/converters/admonition.rb +0 -180
- data/lib/coradoc/html/converters/attribute.rb +0 -68
- data/lib/coradoc/html/converters/attribute_reference.rb +0 -60
- data/lib/coradoc/html/converters/audio.rb +0 -165
- data/lib/coradoc/html/converters/base.rb +0 -615
- data/lib/coradoc/html/converters/bibliography.rb +0 -82
- data/lib/coradoc/html/converters/bibliography_entry.rb +0 -108
- data/lib/coradoc/html/converters/block_image.rb +0 -72
- data/lib/coradoc/html/converters/bold.rb +0 -34
- data/lib/coradoc/html/converters/break.rb +0 -32
- data/lib/coradoc/html/converters/comment_block.rb +0 -42
- data/lib/coradoc/html/converters/comment_line.rb +0 -54
- data/lib/coradoc/html/converters/cross_reference.rb +0 -59
- data/lib/coradoc/html/converters/document.rb +0 -108
- data/lib/coradoc/html/converters/example.rb +0 -114
- data/lib/coradoc/html/converters/highlight.rb +0 -34
- data/lib/coradoc/html/converters/include.rb +0 -68
- data/lib/coradoc/html/converters/inline_image.rb +0 -41
- data/lib/coradoc/html/converters/italic.rb +0 -34
- data/lib/coradoc/html/converters/line_break.rb +0 -31
- data/lib/coradoc/html/converters/link.rb +0 -46
- data/lib/coradoc/html/converters/list_item.rb +0 -75
- data/lib/coradoc/html/converters/listing.rb +0 -99
- data/lib/coradoc/html/converters/literal.rb +0 -102
- data/lib/coradoc/html/converters/monospace.rb +0 -34
- data/lib/coradoc/html/converters/open.rb +0 -78
- data/lib/coradoc/html/converters/ordered.rb +0 -53
- data/lib/coradoc/html/converters/paragraph.rb +0 -46
- data/lib/coradoc/html/converters/quote.rb +0 -113
- data/lib/coradoc/html/converters/reviewer_comment.rb +0 -74
- data/lib/coradoc/html/converters/reviewer_note.rb +0 -134
- data/lib/coradoc/html/converters/section.rb +0 -90
- data/lib/coradoc/html/converters/sidebar.rb +0 -113
- data/lib/coradoc/html/converters/source.rb +0 -137
- data/lib/coradoc/html/converters/source_code.rb +0 -16
- data/lib/coradoc/html/converters/span.rb +0 -61
- data/lib/coradoc/html/converters/strikethrough.rb +0 -34
- data/lib/coradoc/html/converters/subscript.rb +0 -34
- data/lib/coradoc/html/converters/superscript.rb +0 -34
- data/lib/coradoc/html/converters/table.rb +0 -85
- data/lib/coradoc/html/converters/table_cell.rb +0 -203
- data/lib/coradoc/html/converters/table_row.rb +0 -45
- data/lib/coradoc/html/converters/template_html_converter.rb +0 -105
- data/lib/coradoc/html/converters/term.rb +0 -58
- data/lib/coradoc/html/converters/text_element.rb +0 -44
- data/lib/coradoc/html/converters/underline.rb +0 -34
- data/lib/coradoc/html/converters/unordered.rb +0 -47
- data/lib/coradoc/html/converters/verse.rb +0 -105
- data/lib/coradoc/html/converters/video.rb +0 -179
- data/lib/coradoc/html/element_mapping.rb +0 -210
- data/lib/coradoc/html/entity.rb +0 -137
- data/lib/coradoc/html/input/converters/ignore.rb +0 -22
- data/lib/coradoc/html/input/converters/th.rb +0 -20
- data/lib/coradoc/html/theme/base.rb +0 -231
- data/lib/coradoc/html/theme/classic_renderer.rb +0 -390
- data/lib/coradoc/html/theme/modern/components/ui_components.rb +0 -344
- data/lib/coradoc/html/theme/modern/css_generator.rb +0 -311
- data/lib/coradoc/html/theme/modern/javascript_generator.rb +0 -314
- data/lib/coradoc/html/theme/modern/serializers/document_serializer.rb +0 -382
- data/lib/coradoc/html/theme/modern/tailwind_config_builder.rb +0 -164
- data/lib/coradoc/html/theme/modern/vue_template_generator.rb +0 -374
- data/lib/coradoc/html/theme/modern_renderer.rb +0 -250
- data/lib/coradoc/html/theme/registry.rb +0 -153
data/lib/coradoc/html.rb
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
module Coradoc
|
|
4
|
+
module Html
|
|
5
|
+
HTML_EXTENSIONS = %w[.html .htm].freeze
|
|
6
|
+
|
|
7
|
+
module FormatDetection
|
|
8
|
+
def html_extension?(filename)
|
|
9
|
+
HTML_EXTENSIONS.any? { |ext| filename.downcase.end_with?(ext) }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
3
15
|
# Load HTML input module to register with Coradoc::Input
|
|
4
16
|
require 'coradoc/html/input'
|
|
5
17
|
# Load HTML output module to register with Coradoc::Output
|
|
@@ -7,75 +19,33 @@ require 'coradoc/html/output'
|
|
|
7
19
|
|
|
8
20
|
module Coradoc
|
|
9
21
|
module Html
|
|
10
|
-
module Converters
|
|
11
|
-
# Autoload HTML converters - they will be loaded when accessed
|
|
12
|
-
autoload :Base, 'coradoc/html/converters/base'
|
|
13
|
-
autoload :Admonition, 'coradoc/html/converters/admonition'
|
|
14
|
-
autoload :AttributeReference, 'coradoc/html/converters/attribute_reference'
|
|
15
|
-
autoload :Attribute, 'coradoc/html/converters/attribute'
|
|
16
|
-
autoload :Audio, 'coradoc/html/converters/audio'
|
|
17
|
-
autoload :BibliographyEntry, 'coradoc/html/converters/bibliography_entry'
|
|
18
|
-
autoload :Bibliography, 'coradoc/html/converters/bibliography'
|
|
19
|
-
autoload :BlockImage, 'coradoc/html/converters/block_image'
|
|
20
|
-
autoload :Bold, 'coradoc/html/converters/bold'
|
|
21
|
-
autoload :Break, 'coradoc/html/converters/break'
|
|
22
|
-
autoload :CommentBlock, 'coradoc/html/converters/comment_block'
|
|
23
|
-
autoload :CommentLine, 'coradoc/html/converters/comment_line'
|
|
24
|
-
autoload :CrossReference, 'coradoc/html/converters/cross_reference'
|
|
25
|
-
autoload :Document, 'coradoc/html/converters/document'
|
|
26
|
-
autoload :Example, 'coradoc/html/converters/example'
|
|
27
|
-
autoload :Highlight, 'coradoc/html/converters/highlight'
|
|
28
|
-
autoload :Include, 'coradoc/html/converters/include'
|
|
29
|
-
autoload :InlineImage, 'coradoc/html/converters/inline_image'
|
|
30
|
-
autoload :Italic, 'coradoc/html/converters/italic'
|
|
31
|
-
autoload :LineBreak, 'coradoc/html/converters/line_break'
|
|
32
|
-
autoload :Link, 'coradoc/html/converters/link'
|
|
33
|
-
autoload :ListItem, 'coradoc/html/converters/list_item'
|
|
34
|
-
autoload :Listing, 'coradoc/html/converters/listing'
|
|
35
|
-
autoload :Literal, 'coradoc/html/converters/literal'
|
|
36
|
-
autoload :Monospace, 'coradoc/html/converters/monospace'
|
|
37
|
-
autoload :Ordered, 'coradoc/html/converters/ordered'
|
|
38
|
-
autoload :Open, 'coradoc/html/converters/open'
|
|
39
|
-
autoload :Paragraph, 'coradoc/html/converters/paragraph'
|
|
40
|
-
autoload :Quote, 'coradoc/html/converters/quote'
|
|
41
|
-
autoload :ReviewerComment, 'coradoc/html/converters/reviewer_comment'
|
|
42
|
-
autoload :ReviewerNote, 'coradoc/html/converters/reviewer_note'
|
|
43
|
-
autoload :Section, 'coradoc/html/converters/section'
|
|
44
|
-
autoload :Sidebar, 'coradoc/html/converters/sidebar'
|
|
45
|
-
autoload :Source, 'coradoc/html/converters/source'
|
|
46
|
-
autoload :SourceCode, 'coradoc/html/converters/source_code'
|
|
47
|
-
autoload :Span, 'coradoc/html/converters/span'
|
|
48
|
-
autoload :Strikethrough, 'coradoc/html/converters/strikethrough'
|
|
49
|
-
autoload :Subscript, 'coradoc/html/converters/subscript'
|
|
50
|
-
autoload :Superscript, 'coradoc/html/converters/superscript'
|
|
51
|
-
autoload :TableCell, 'coradoc/html/converters/table_cell'
|
|
52
|
-
autoload :TableRow, 'coradoc/html/converters/table_row'
|
|
53
|
-
autoload :Table, 'coradoc/html/converters/table'
|
|
54
|
-
autoload :Term, 'coradoc/html/converters/term'
|
|
55
|
-
autoload :TextElement, 'coradoc/html/converters/text_element'
|
|
56
|
-
autoload :Underline, 'coradoc/html/converters/underline'
|
|
57
|
-
autoload :Unordered, 'coradoc/html/converters/unordered'
|
|
58
|
-
autoload :Verse, 'coradoc/html/converters/verse'
|
|
59
|
-
autoload :Video, 'coradoc/html/converters/video'
|
|
60
|
-
end
|
|
61
|
-
|
|
62
22
|
# Autoload HTML components
|
|
63
23
|
autoload :Config, 'coradoc/html/config'
|
|
64
|
-
autoload :
|
|
65
|
-
autoload :
|
|
66
|
-
autoload :
|
|
24
|
+
autoload :Escape, 'coradoc/html/escape'
|
|
25
|
+
autoload :SectionNumberable, 'coradoc/html/section_numberable'
|
|
26
|
+
autoload :TemplateCaching, 'coradoc/html/template_caching'
|
|
27
|
+
autoload :TitleText, 'coradoc/html/title_text'
|
|
28
|
+
|
|
29
|
+
# Autoload Drop namespace (DropFactory loads Base + all drops)
|
|
30
|
+
module Drop
|
|
31
|
+
autoload :DropFactory, 'coradoc/html/drop/drop_factory'
|
|
32
|
+
autoload :Base, 'coradoc/html/drop/base'
|
|
33
|
+
end
|
|
67
34
|
|
|
68
35
|
# Autoload HTML output converters
|
|
69
36
|
autoload :ConverterBase, 'coradoc/html/converter_base'
|
|
70
37
|
autoload :Static, 'coradoc/html/static'
|
|
71
38
|
autoload :Spa, 'coradoc/html/spa'
|
|
39
|
+
autoload :TocBuilder, 'coradoc/html/toc_builder'
|
|
72
40
|
|
|
73
41
|
# Theme system
|
|
74
42
|
autoload :Theme, 'coradoc/html/theme'
|
|
75
43
|
autoload :TemplateLocator, 'coradoc/html/template_locator'
|
|
76
44
|
autoload :TemplateConfig, 'coradoc/html/template_config'
|
|
77
|
-
autoload :
|
|
45
|
+
autoload :TemplateFilters, 'coradoc/html/template_helpers'
|
|
78
46
|
autoload :Renderer, 'coradoc/html/renderer'
|
|
47
|
+
autoload :LayoutRenderer, 'coradoc/html/layout_renderer'
|
|
48
|
+
autoload :TocSerializer, 'coradoc/html/toc_serializer'
|
|
79
49
|
|
|
80
50
|
# CoreModel transformers
|
|
81
51
|
module Transform
|
|
@@ -103,19 +73,18 @@ module Coradoc
|
|
|
103
73
|
|
|
104
74
|
# Parse HTML content and return CoreModel elements (may be an Array)
|
|
105
75
|
def self.parse(html, options = {})
|
|
106
|
-
|
|
107
|
-
::Coradoc::Html::Input.to_coradoc(html, options)
|
|
76
|
+
::Coradoc::Input::Html.to_coradoc(html, options)
|
|
108
77
|
end
|
|
109
78
|
|
|
110
79
|
# Parse HTML content directly into a CoreModel document
|
|
111
80
|
#
|
|
112
81
|
# Unlike #parse which returns an Array of CoreModel elements,
|
|
113
|
-
# this wraps the result into a top-level
|
|
82
|
+
# this wraps the result into a top-level DocumentElement document
|
|
114
83
|
# suitable for use with Coradoc.serialize and other CoreModel pipelines.
|
|
115
84
|
#
|
|
116
85
|
# @param html [String] HTML content
|
|
117
86
|
# @param options [Hash] Parse options
|
|
118
|
-
# @return [Coradoc::CoreModel::
|
|
87
|
+
# @return [Coradoc::CoreModel::DocumentElement] CoreModel document
|
|
119
88
|
def self.parse_to_core(html, options = {})
|
|
120
89
|
elements = parse(html, options)
|
|
121
90
|
|
|
@@ -133,39 +102,31 @@ module Coradoc
|
|
|
133
102
|
end
|
|
134
103
|
end
|
|
135
104
|
|
|
136
|
-
Coradoc::CoreModel::
|
|
137
|
-
element_type: 'document',
|
|
105
|
+
Coradoc::CoreModel::DocumentElement.new(
|
|
138
106
|
title: title,
|
|
139
107
|
children: Array(children)
|
|
140
108
|
)
|
|
141
109
|
end
|
|
142
110
|
|
|
143
111
|
# Parse HTML file
|
|
144
|
-
def self.from_file(filename, **
|
|
112
|
+
def self.from_file(filename, **)
|
|
145
113
|
content = File.read(filename)
|
|
146
|
-
parse(content, **
|
|
114
|
+
parse(content, **)
|
|
147
115
|
end
|
|
148
116
|
|
|
149
117
|
# Serialize CoreModel document to HTML
|
|
150
118
|
#
|
|
151
|
-
# Uses the
|
|
119
|
+
# Uses the unified Liquid template renderer.
|
|
152
120
|
#
|
|
153
121
|
# @param document [Coradoc::CoreModel::Base] CoreModel document to serialize
|
|
154
122
|
# @param options [Hash] Output options
|
|
155
123
|
# @return [String] HTML output
|
|
156
124
|
def self.serialize(document, options = {})
|
|
157
|
-
# Validate input is CoreModel
|
|
158
125
|
validate_core_model!(document)
|
|
159
126
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
# Use theme registry to find and use the appropriate renderer
|
|
165
|
-
theme = options[:theme] || :classic
|
|
166
|
-
renderer_class = Theme::Registry.find(theme)
|
|
167
|
-
renderer = renderer_class.new(document, options)
|
|
168
|
-
renderer.render_html5
|
|
127
|
+
layout = options.delete(:layout) || :static
|
|
128
|
+
renderer = Renderer.new(template_dirs: options.delete(:template_dirs))
|
|
129
|
+
renderer.render_html5(document, layout: layout, **options)
|
|
169
130
|
end
|
|
170
131
|
|
|
171
132
|
# Serialize CoreModel document to static HTML
|
|
@@ -176,9 +137,6 @@ module Coradoc
|
|
|
176
137
|
# @param config [Hash, Static::Configuration] Static converter configuration
|
|
177
138
|
# @return [String] HTML output
|
|
178
139
|
def self.serialize_static(document, config = {})
|
|
179
|
-
# Validate input is CoreModel
|
|
180
|
-
validate_core_model!(document)
|
|
181
|
-
|
|
182
140
|
Static.convert(document, config)
|
|
183
141
|
end
|
|
184
142
|
|
|
@@ -190,9 +148,6 @@ module Coradoc
|
|
|
190
148
|
# @param config [Hash, Spa::Configuration] SPA converter configuration
|
|
191
149
|
# @return [String] HTML output
|
|
192
150
|
def self.serialize_spa(document, config = {})
|
|
193
|
-
# Validate input is CoreModel
|
|
194
|
-
validate_core_model!(document)
|
|
195
|
-
|
|
196
151
|
Spa.convert(document, config)
|
|
197
152
|
end
|
|
198
153
|
|
|
@@ -203,9 +158,6 @@ module Coradoc
|
|
|
203
158
|
# @param options [Hash] Converter options
|
|
204
159
|
# @return [String] HTML output
|
|
205
160
|
def self.serialize_as(document, format, options = {})
|
|
206
|
-
# Validate input is CoreModel
|
|
207
|
-
validate_core_model!(document)
|
|
208
|
-
|
|
209
161
|
case format.to_sym
|
|
210
162
|
when :static, :html_static, :classic
|
|
211
163
|
serialize_static(document, options)
|
|
@@ -213,7 +165,7 @@ module Coradoc
|
|
|
213
165
|
serialize_spa(document, options)
|
|
214
166
|
else
|
|
215
167
|
raise ArgumentError, "Unknown output format: #{format}. " \
|
|
216
|
-
|
|
168
|
+
'Valid formats: :static, :spa'
|
|
217
169
|
end
|
|
218
170
|
end
|
|
219
171
|
|
|
@@ -227,12 +179,15 @@ module Coradoc
|
|
|
227
179
|
|
|
228
180
|
# Check if this format can transform the given model to CoreModel
|
|
229
181
|
#
|
|
230
|
-
# HTML
|
|
182
|
+
# HTML uses Nokogiri as its model layer. Accepts Nokogiri nodes
|
|
183
|
+
# and CoreModel objects (pass-through).
|
|
231
184
|
#
|
|
232
185
|
# @param model [Object] The model to check
|
|
233
|
-
# @return [Boolean] true if the model is
|
|
186
|
+
# @return [Boolean] true if the model is a Nokogiri node or CoreModel
|
|
234
187
|
def self.handles_model?(model)
|
|
235
|
-
model.is_a?(
|
|
188
|
+
model.is_a?(Nokogiri::XML::Node) ||
|
|
189
|
+
model.is_a?(Nokogiri::XML::Document) ||
|
|
190
|
+
model.is_a?(Coradoc::CoreModel::Base)
|
|
236
191
|
end
|
|
237
192
|
|
|
238
193
|
def self.to_core(document)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: coradoc-html
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.13
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
@@ -13,16 +13,16 @@ dependencies:
|
|
|
13
13
|
name: coradoc
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
|
-
- - "
|
|
16
|
+
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '0'
|
|
18
|
+
version: '2.0'
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
|
-
- - "
|
|
23
|
+
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '0'
|
|
25
|
+
version: '2.0'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: coradoc-adoc
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -117,60 +117,30 @@ extra_rdoc_files: []
|
|
|
117
117
|
files:
|
|
118
118
|
- LICENSE.txt
|
|
119
119
|
- lib/coradoc/html.rb
|
|
120
|
-
- lib/coradoc/html/base.rb
|
|
121
120
|
- lib/coradoc/html/config.rb
|
|
122
121
|
- lib/coradoc/html/converter_base.rb
|
|
123
|
-
- lib/coradoc/html/
|
|
124
|
-
- lib/coradoc/html/
|
|
125
|
-
- lib/coradoc/html/
|
|
126
|
-
- lib/coradoc/html/
|
|
127
|
-
- lib/coradoc/html/
|
|
128
|
-
- lib/coradoc/html/
|
|
129
|
-
- lib/coradoc/html/
|
|
130
|
-
- lib/coradoc/html/
|
|
131
|
-
- lib/coradoc/html/
|
|
132
|
-
- lib/coradoc/html/
|
|
133
|
-
- lib/coradoc/html/
|
|
134
|
-
- lib/coradoc/html/
|
|
135
|
-
- lib/coradoc/html/
|
|
136
|
-
- lib/coradoc/html/
|
|
137
|
-
- lib/coradoc/html/
|
|
138
|
-
- lib/coradoc/html/
|
|
139
|
-
- lib/coradoc/html/
|
|
140
|
-
- lib/coradoc/html/
|
|
141
|
-
- lib/coradoc/html/
|
|
142
|
-
- lib/coradoc/html/
|
|
143
|
-
- lib/coradoc/html/
|
|
144
|
-
- lib/coradoc/html/
|
|
145
|
-
- lib/coradoc/html/converters/listing.rb
|
|
146
|
-
- lib/coradoc/html/converters/literal.rb
|
|
147
|
-
- lib/coradoc/html/converters/monospace.rb
|
|
148
|
-
- lib/coradoc/html/converters/open.rb
|
|
149
|
-
- lib/coradoc/html/converters/ordered.rb
|
|
150
|
-
- lib/coradoc/html/converters/paragraph.rb
|
|
151
|
-
- lib/coradoc/html/converters/quote.rb
|
|
152
|
-
- lib/coradoc/html/converters/reviewer_comment.rb
|
|
153
|
-
- lib/coradoc/html/converters/reviewer_note.rb
|
|
154
|
-
- lib/coradoc/html/converters/section.rb
|
|
155
|
-
- lib/coradoc/html/converters/sidebar.rb
|
|
156
|
-
- lib/coradoc/html/converters/source.rb
|
|
157
|
-
- lib/coradoc/html/converters/source_code.rb
|
|
158
|
-
- lib/coradoc/html/converters/span.rb
|
|
159
|
-
- lib/coradoc/html/converters/strikethrough.rb
|
|
160
|
-
- lib/coradoc/html/converters/subscript.rb
|
|
161
|
-
- lib/coradoc/html/converters/superscript.rb
|
|
162
|
-
- lib/coradoc/html/converters/table.rb
|
|
163
|
-
- lib/coradoc/html/converters/table_cell.rb
|
|
164
|
-
- lib/coradoc/html/converters/table_row.rb
|
|
165
|
-
- lib/coradoc/html/converters/template_html_converter.rb
|
|
166
|
-
- lib/coradoc/html/converters/term.rb
|
|
167
|
-
- lib/coradoc/html/converters/text_element.rb
|
|
168
|
-
- lib/coradoc/html/converters/underline.rb
|
|
169
|
-
- lib/coradoc/html/converters/unordered.rb
|
|
170
|
-
- lib/coradoc/html/converters/verse.rb
|
|
171
|
-
- lib/coradoc/html/converters/video.rb
|
|
172
|
-
- lib/coradoc/html/element_mapping.rb
|
|
173
|
-
- lib/coradoc/html/entity.rb
|
|
122
|
+
- lib/coradoc/html/drop/annotation_drop.rb
|
|
123
|
+
- lib/coradoc/html/drop/base.rb
|
|
124
|
+
- lib/coradoc/html/drop/bibliography_drop.rb
|
|
125
|
+
- lib/coradoc/html/drop/bibliography_entry_drop.rb
|
|
126
|
+
- lib/coradoc/html/drop/block_drop.rb
|
|
127
|
+
- lib/coradoc/html/drop/definition_item_drop.rb
|
|
128
|
+
- lib/coradoc/html/drop/definition_list_drop.rb
|
|
129
|
+
- lib/coradoc/html/drop/document_drop.rb
|
|
130
|
+
- lib/coradoc/html/drop/drop_factory.rb
|
|
131
|
+
- lib/coradoc/html/drop/footnote_drop.rb
|
|
132
|
+
- lib/coradoc/html/drop/image_drop.rb
|
|
133
|
+
- lib/coradoc/html/drop/inline_element_drop.rb
|
|
134
|
+
- lib/coradoc/html/drop/list_block_drop.rb
|
|
135
|
+
- lib/coradoc/html/drop/list_item_drop.rb
|
|
136
|
+
- lib/coradoc/html/drop/table_cell_drop.rb
|
|
137
|
+
- lib/coradoc/html/drop/table_drop.rb
|
|
138
|
+
- lib/coradoc/html/drop/table_row_drop.rb
|
|
139
|
+
- lib/coradoc/html/drop/term_drop.rb
|
|
140
|
+
- lib/coradoc/html/drop/text_content_drop.rb
|
|
141
|
+
- lib/coradoc/html/drop/toc_drop.rb
|
|
142
|
+
- lib/coradoc/html/drop/toc_entry_drop.rb
|
|
143
|
+
- lib/coradoc/html/escape.rb
|
|
174
144
|
- lib/coradoc/html/input.rb
|
|
175
145
|
- lib/coradoc/html/input/cleaner.rb
|
|
176
146
|
- lib/coradoc/html/input/config.rb
|
|
@@ -191,15 +161,16 @@ files:
|
|
|
191
161
|
- lib/coradoc/html/input/converters/h.rb
|
|
192
162
|
- lib/coradoc/html/input/converters/head.rb
|
|
193
163
|
- lib/coradoc/html/input/converters/hr.rb
|
|
194
|
-
- lib/coradoc/html/input/converters/ignore.rb
|
|
195
164
|
- lib/coradoc/html/input/converters/img.rb
|
|
196
165
|
- lib/coradoc/html/input/converters/li.rb
|
|
197
166
|
- lib/coradoc/html/input/converters/mark.rb
|
|
198
167
|
- lib/coradoc/html/input/converters/markup.rb
|
|
199
168
|
- lib/coradoc/html/input/converters/math.rb
|
|
169
|
+
- lib/coradoc/html/input/converters/media_base.rb
|
|
200
170
|
- lib/coradoc/html/input/converters/ol.rb
|
|
201
171
|
- lib/coradoc/html/input/converters/p.rb
|
|
202
172
|
- lib/coradoc/html/input/converters/pass_through.rb
|
|
173
|
+
- lib/coradoc/html/input/converters/positional_formatting.rb
|
|
203
174
|
- lib/coradoc/html/input/converters/pre.rb
|
|
204
175
|
- lib/coradoc/html/input/converters/q.rb
|
|
205
176
|
- lib/coradoc/html/input/converters/strong.rb
|
|
@@ -208,7 +179,6 @@ files:
|
|
|
208
179
|
- lib/coradoc/html/input/converters/table.rb
|
|
209
180
|
- lib/coradoc/html/input/converters/td.rb
|
|
210
181
|
- lib/coradoc/html/input/converters/text.rb
|
|
211
|
-
- lib/coradoc/html/input/converters/th.rb
|
|
212
182
|
- lib/coradoc/html/input/converters/tr.rb
|
|
213
183
|
- lib/coradoc/html/input/converters/video.rb
|
|
214
184
|
- lib/coradoc/html/input/errors.rb
|
|
@@ -216,24 +186,20 @@ files:
|
|
|
216
186
|
- lib/coradoc/html/input/plugin.rb
|
|
217
187
|
- lib/coradoc/html/input/plugins/plateau.rb
|
|
218
188
|
- lib/coradoc/html/input/postprocessor.rb
|
|
189
|
+
- lib/coradoc/html/layout_renderer.rb
|
|
219
190
|
- lib/coradoc/html/output.rb
|
|
220
191
|
- lib/coradoc/html/renderer.rb
|
|
192
|
+
- lib/coradoc/html/section_numberable.rb
|
|
221
193
|
- lib/coradoc/html/spa.rb
|
|
222
194
|
- lib/coradoc/html/static.rb
|
|
195
|
+
- lib/coradoc/html/template_caching.rb
|
|
223
196
|
- lib/coradoc/html/template_config.rb
|
|
224
197
|
- lib/coradoc/html/template_helpers.rb
|
|
225
198
|
- lib/coradoc/html/template_locator.rb
|
|
226
199
|
- lib/coradoc/html/theme.rb
|
|
227
|
-
- lib/coradoc/html/
|
|
228
|
-
- lib/coradoc/html/
|
|
229
|
-
- lib/coradoc/html/
|
|
230
|
-
- lib/coradoc/html/theme/modern/css_generator.rb
|
|
231
|
-
- lib/coradoc/html/theme/modern/javascript_generator.rb
|
|
232
|
-
- lib/coradoc/html/theme/modern/serializers/document_serializer.rb
|
|
233
|
-
- lib/coradoc/html/theme/modern/tailwind_config_builder.rb
|
|
234
|
-
- lib/coradoc/html/theme/modern/vue_template_generator.rb
|
|
235
|
-
- lib/coradoc/html/theme/modern_renderer.rb
|
|
236
|
-
- lib/coradoc/html/theme/registry.rb
|
|
200
|
+
- lib/coradoc/html/title_text.rb
|
|
201
|
+
- lib/coradoc/html/toc_builder.rb
|
|
202
|
+
- lib/coradoc/html/toc_serializer.rb
|
|
237
203
|
- lib/coradoc/html/transform/from_core_model.rb
|
|
238
204
|
- lib/coradoc/html/transform/to_core_model.rb
|
|
239
205
|
- lib/coradoc/html/version.rb
|
|
@@ -244,6 +210,7 @@ metadata:
|
|
|
244
210
|
homepage_uri: https://github.com/metanorma/coradoc
|
|
245
211
|
source_code_uri: https://github.com/metanorma/coradoc
|
|
246
212
|
changelog_uri: https://github.com/metanorma/coradoc/releases
|
|
213
|
+
rubygems_mfa_required: 'true'
|
|
247
214
|
rdoc_options: []
|
|
248
215
|
require_paths:
|
|
249
216
|
- lib
|
|
@@ -251,7 +218,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
251
218
|
requirements:
|
|
252
219
|
- - ">="
|
|
253
220
|
- !ruby/object:Gem::Version
|
|
254
|
-
version: 3.
|
|
221
|
+
version: 3.3.0
|
|
255
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
256
223
|
requirements:
|
|
257
224
|
- - ">="
|
data/lib/coradoc/html/base.rb
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Coradoc
|
|
4
|
-
module Html
|
|
5
|
-
# Base module for HTML processing utilities
|
|
6
|
-
module Base
|
|
7
|
-
class << self
|
|
8
|
-
# Convert content to HTML, handling various input types
|
|
9
|
-
def convert_content(content, state = {})
|
|
10
|
-
return '' if content.nil?
|
|
11
|
-
|
|
12
|
-
case content
|
|
13
|
-
when String
|
|
14
|
-
return '' if content.empty?
|
|
15
|
-
|
|
16
|
-
escape_html(content)
|
|
17
|
-
when Array
|
|
18
|
-
return '' if content.empty?
|
|
19
|
-
|
|
20
|
-
content.map { |item| convert_content(item, state) }.join
|
|
21
|
-
else
|
|
22
|
-
# If content responds to a converter, use it
|
|
23
|
-
converter = find_converter(content.class)
|
|
24
|
-
if converter
|
|
25
|
-
converter.to_html(content, state)
|
|
26
|
-
else
|
|
27
|
-
content.to_s
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Find the appropriate converter for a model class
|
|
33
|
-
def find_converter(model_class)
|
|
34
|
-
return nil unless defined?(Coradoc::Html::Converters)
|
|
35
|
-
|
|
36
|
-
converter_name = model_class.name.split('::').last
|
|
37
|
-
|
|
38
|
-
# Use const_get on the Converters module to trigger autoload
|
|
39
|
-
begin
|
|
40
|
-
klass = Coradoc::Html::Converters.const_get(converter_name, false)
|
|
41
|
-
# Return nil if this is the Base class itself (not a real converter)
|
|
42
|
-
# or if it doesn't inherit from Converters::Base
|
|
43
|
-
return nil if klass == Coradoc::Html::Converters::Base
|
|
44
|
-
return nil unless klass <= Coradoc::Html::Converters::Base
|
|
45
|
-
|
|
46
|
-
klass
|
|
47
|
-
rescue NameError
|
|
48
|
-
nil
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Escape HTML special characters
|
|
53
|
-
def escape_html(text)
|
|
54
|
-
return '' if text.nil?
|
|
55
|
-
return text unless text.is_a?(String)
|
|
56
|
-
|
|
57
|
-
text
|
|
58
|
-
.gsub('&', '&')
|
|
59
|
-
.gsub('<', '<')
|
|
60
|
-
.gsub('>', '>')
|
|
61
|
-
.gsub('"', '"')
|
|
62
|
-
.gsub("'", ''')
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Unescape HTML entities
|
|
66
|
-
def unescape_html(text)
|
|
67
|
-
return '' if text.nil?
|
|
68
|
-
return text unless text.is_a?(String)
|
|
69
|
-
|
|
70
|
-
text
|
|
71
|
-
.gsub('&', '&')
|
|
72
|
-
.gsub('<', '<')
|
|
73
|
-
.gsub('>', '>')
|
|
74
|
-
.gsub('"', '"')
|
|
75
|
-
.gsub(''', "'")
|
|
76
|
-
.gsub(''', "'")
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# Build HTML element with attributes
|
|
80
|
-
def build_element(tag, content = nil, attributes = {})
|
|
81
|
-
attrs = build_attributes(attributes)
|
|
82
|
-
attr_string = attrs.empty? ? '' : " #{attrs}"
|
|
83
|
-
|
|
84
|
-
# Handle empty content (String, Array, or nil)
|
|
85
|
-
content_empty = case content
|
|
86
|
-
when nil, String, Array
|
|
87
|
-
content.nil? || content.empty?
|
|
88
|
-
else
|
|
89
|
-
false
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
if content_empty
|
|
93
|
-
# Self-closing for void elements
|
|
94
|
-
if void_element?(tag)
|
|
95
|
-
"<#{tag}#{attr_string}>"
|
|
96
|
-
else
|
|
97
|
-
"<#{tag}#{attr_string}></#{tag}>"
|
|
98
|
-
end
|
|
99
|
-
else
|
|
100
|
-
"<#{tag}#{attr_string}>#{content}</#{tag}>"
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
# Build HTML attributes string
|
|
105
|
-
def build_attributes(attributes)
|
|
106
|
-
return '' if attributes.nil? || attributes.empty?
|
|
107
|
-
|
|
108
|
-
attributes.map do |key, value|
|
|
109
|
-
next if value.nil?
|
|
110
|
-
|
|
111
|
-
escaped_value = escape_html(value.to_s)
|
|
112
|
-
%(#{key}="#{escaped_value}")
|
|
113
|
-
end.compact.join(' ')
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# Check if element is a void element (self-closing)
|
|
117
|
-
def void_element?(tag)
|
|
118
|
-
%w[area base br col embed hr img input link meta param source track wbr].include?(tag.to_s)
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
# Extract attributes from a CoreModel
|
|
122
|
-
#
|
|
123
|
-
# @param model [Coradoc::CoreModel::Base] Model to extract attributes from
|
|
124
|
-
# @return [Hash] Attributes hash
|
|
125
|
-
def extract_attributes(model)
|
|
126
|
-
attrs = {}
|
|
127
|
-
|
|
128
|
-
attrs[:id] = model.id if model.id
|
|
129
|
-
attrs[:title] = model.title if model.title
|
|
130
|
-
|
|
131
|
-
if model.is_a?(Coradoc::CoreModel::StructuralElement) && model.metadata
|
|
132
|
-
attrs[:class] = model.metadata[:class] || model.metadata[:role]
|
|
133
|
-
attrs.merge!(model.metadata.except(:class, :role))
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
attrs
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
# Wrap content with line breaks if needed
|
|
140
|
-
def wrap_lines(content)
|
|
141
|
-
return content unless content.is_a?(String)
|
|
142
|
-
|
|
143
|
-
content.split("\n").join("<br>\n")
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
# Process children of a node (common operation)
|
|
147
|
-
def treat_children(children, state = {})
|
|
148
|
-
return [] if children.nil? || children.empty?
|
|
149
|
-
|
|
150
|
-
Array(children).map do |child|
|
|
151
|
-
convert_content(child, state)
|
|
152
|
-
end
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
end
|