coradoc 2.0.27 → 2.0.28
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/cli.rb +5 -5
- data/lib/coradoc/configurable.rb +6 -3
- data/lib/coradoc/coradoc.rb +2 -2
- data/lib/coradoc/core_model/attribute_reference_resolver.rb +19 -7
- data/lib/coradoc/core_model/base.rb +45 -2
- data/lib/coradoc/core_model/comment_line.rb +1 -1
- data/lib/coradoc/core_model/definition_item.rb +22 -1
- data/lib/coradoc/core_model/horizontal_rule_block.rb +4 -0
- data/lib/coradoc/core_model/include_level_offset.rb +1 -1
- data/lib/coradoc/core_model/include_options.rb +1 -0
- data/lib/coradoc/core_model/inline_content.rb +1 -0
- data/lib/coradoc/core_model/list_block.rb +1 -1
- data/lib/coradoc/core_model/listing_block.rb +4 -0
- data/lib/coradoc/core_model/literal_block.rb +4 -0
- data/lib/coradoc/core_model/pass_block.rb +4 -0
- data/lib/coradoc/core_model/source_block.rb +4 -0
- data/lib/coradoc/core_model/stem_block.rb +4 -0
- data/lib/coradoc/dispatch.rb +1 -0
- data/lib/coradoc/format_catalog.rb +19 -0
- data/lib/coradoc/hooks.rb +1 -1
- data/lib/coradoc/include_selectors/level_offset.rb +0 -2
- data/lib/coradoc/include_selectors/lines.rb +2 -2
- data/lib/coradoc/include_selectors/tags.rb +2 -4
- data/lib/coradoc/introspection/element_counter.rb +2 -2
- data/lib/coradoc/link_rewriter/visitor.rb +5 -14
- data/lib/coradoc/pipeline.rb +4 -4
- data/lib/coradoc/query.rb +8 -8
- data/lib/coradoc/registry.rb +6 -6
- data/lib/coradoc/resolve_includes.rb +2 -2
- data/lib/coradoc/validation.rb +4 -4
- data/lib/coradoc/version.rb +1 -1
- data/lib/coradoc.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6f0dbc8feba7133bc83baf88a6458774f364f7266b79625a0afc50434beeac89
|
|
4
|
+
data.tar.gz: f4fe999b18666604d2b615545acb073e1b6f74d7b26c3ff8fa8fd403ee45ec5d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c4c0f7a479cfdf622faa4a26cad085c60b4e943d3ba30348e5d0426ebb10c9fbd417ceb5d069225f1e72dd9ff0960ca5e5304572d6d6cf4018236a579c4c391c
|
|
7
|
+
data.tar.gz: 6e4e649b83732a5cbf77c1edf16c70fb04a167d2d3b7ad3c3c657a029ebea5b079408dc78641f432241ac8737afb2a46fc1d3b6e2113c01075c332c2efadde9e
|
data/lib/coradoc/cli.rb
CHANGED
|
@@ -23,15 +23,15 @@ module Coradoc
|
|
|
23
23
|
option :section_number_levels, desc: 'Section numbering depth (1-6)', type: :numeric, default: 3
|
|
24
24
|
option :lang, desc: 'Document language code', type: :string, default: 'en'
|
|
25
25
|
option :resolve_includes, desc: 'Resolve include:: directives inline (default: leave as link nodes)',
|
|
26
|
-
|
|
26
|
+
type: :boolean, default: false
|
|
27
27
|
option :base_dir, desc: 'Base directory for include resolution (default: dirname of FILE)',
|
|
28
|
-
|
|
28
|
+
type: :string
|
|
29
29
|
option :missing_include, desc: 'Policy for missing includes: error, warn, silent, passthrough',
|
|
30
|
-
|
|
30
|
+
type: :string, default: 'error'
|
|
31
31
|
option :max_include_depth, desc: 'Maximum include nesting depth', type: :numeric,
|
|
32
|
-
|
|
32
|
+
default: 64
|
|
33
33
|
option :allow_unsafe_includes, desc: 'Disable path-traversal protection (asciidoctor :unsafe mode)',
|
|
34
|
-
|
|
34
|
+
type: :boolean, default: false
|
|
35
35
|
def convert(file)
|
|
36
36
|
source_format = resolve_format(file, :from)
|
|
37
37
|
target_format = options[:to] ? Coradoc.normalize_format(options[:to]) : Coradoc.resolve_output_format(options[:output])
|
data/lib/coradoc/configurable.rb
CHANGED
|
@@ -99,7 +99,10 @@ module Coradoc
|
|
|
99
99
|
def apply_options(options)
|
|
100
100
|
options.each do |key, value|
|
|
101
101
|
setter = "#{key}="
|
|
102
|
-
|
|
102
|
+
# Use public_send (not instance_variable_set) so we route
|
|
103
|
+
# through the public setter method — encapsulation is
|
|
104
|
+
# preserved and any setter-side validation runs.
|
|
105
|
+
public_send(setter, value) if public_methods.include?(setter.to_sym)
|
|
103
106
|
end
|
|
104
107
|
end
|
|
105
108
|
end
|
|
@@ -521,7 +524,7 @@ module Coradoc
|
|
|
521
524
|
#
|
|
522
525
|
# @yield [Configuration]
|
|
523
526
|
# @return [void]
|
|
524
|
-
def self.configure(&
|
|
525
|
-
Configurable.configure(&
|
|
527
|
+
def self.configure(&)
|
|
528
|
+
Configurable.configure(&) if block_given?
|
|
526
529
|
end
|
|
527
530
|
end
|
data/lib/coradoc/coradoc.rb
CHANGED
|
@@ -56,8 +56,8 @@ module Coradoc
|
|
|
56
56
|
|
|
57
57
|
def registry = FormatCatalog.registry
|
|
58
58
|
|
|
59
|
-
def register_format(format_name, format_module, **
|
|
60
|
-
FormatCatalog.register_format(format_name, format_module, **
|
|
59
|
+
def register_format(format_name, format_module, **)
|
|
60
|
+
FormatCatalog.register_format(format_name, format_module, **)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def get_format(format_name) = FormatCatalog.get_format(format_name)
|
|
@@ -61,7 +61,7 @@ module Coradoc
|
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
def rebuild_children(node)
|
|
64
|
-
return node unless node.
|
|
64
|
+
return node unless node.is_a?(CoreModel::HasChildren)
|
|
65
65
|
|
|
66
66
|
original = node.children
|
|
67
67
|
return node if original.nil?
|
|
@@ -79,23 +79,27 @@ module Coradoc
|
|
|
79
79
|
original = node.public_send(attr_name)
|
|
80
80
|
return node if original.nil?
|
|
81
81
|
|
|
82
|
-
updated = original.is_a?(Array)
|
|
83
|
-
original.map { |c| visit(c) }
|
|
82
|
+
updated = if original.is_a?(Array)
|
|
83
|
+
original.map { |c| visit(c) }
|
|
84
|
+
else
|
|
84
85
|
visit(original)
|
|
86
|
+
end
|
|
85
87
|
return node if updated == original
|
|
86
88
|
|
|
87
89
|
node.dup.tap { |copy| copy.public_send("#{attr_name}=", updated) }
|
|
88
90
|
end
|
|
89
91
|
|
|
90
92
|
def rebuild_block(node)
|
|
91
|
-
return node unless node.
|
|
93
|
+
return node unless node.is_a?(CoreModel::HasChildren)
|
|
92
94
|
|
|
93
95
|
original_children = node.children
|
|
94
96
|
return node if original_children.nil?
|
|
95
97
|
|
|
96
|
-
updated_children = original_children.is_a?(Array)
|
|
97
|
-
original_children.map { |c| visit(c) }
|
|
98
|
+
updated_children = if original_children.is_a?(Array)
|
|
99
|
+
original_children.map { |c| visit(c) }
|
|
100
|
+
else
|
|
98
101
|
visit(original_children)
|
|
102
|
+
end
|
|
99
103
|
|
|
100
104
|
if inline_resolvable?(node)
|
|
101
105
|
original_content = node.content
|
|
@@ -113,7 +117,15 @@ module Coradoc
|
|
|
113
117
|
end
|
|
114
118
|
|
|
115
119
|
def inline_resolvable?(node)
|
|
116
|
-
|
|
120
|
+
# Capability check: nodes that include ChildrenContent expose a
|
|
121
|
+
# `content` attribute alongside `children`. We resolve attribute
|
|
122
|
+
# references only when content is a String (plain-text inline
|
|
123
|
+
# content). Using is_a?(ChildrenContent) instead of
|
|
124
|
+
# respond_to?(:content) catches type drift early: if a node
|
|
125
|
+
# acquires string content without including ChildrenContent,
|
|
126
|
+
# this method returns false (no resolution) rather than
|
|
127
|
+
# silently resolving on a mis-typed node.
|
|
128
|
+
node.is_a?(CoreModel::ChildrenContent) && node.content.is_a?(String)
|
|
117
129
|
end
|
|
118
130
|
|
|
119
131
|
# Resolve attribute references inside a flat content string.
|
|
@@ -147,7 +147,7 @@ module Coradoc
|
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
def flat_text
|
|
150
|
-
|
|
150
|
+
''
|
|
151
151
|
end
|
|
152
152
|
|
|
153
153
|
# Flatten this element to a plain-text string.
|
|
@@ -160,7 +160,50 @@ module Coradoc
|
|
|
160
160
|
#
|
|
161
161
|
# @return [String]
|
|
162
162
|
def flat_text
|
|
163
|
-
|
|
163
|
+
''
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# True when this node counts as real body content for empty-body
|
|
167
|
+
# detection and similar structural queries. Default is true;
|
|
168
|
+
# ephemeral and metadata nodes override to false.
|
|
169
|
+
#
|
|
170
|
+
# Override sites: CommentBlock, CommentLine, FrontmatterBlock.
|
|
171
|
+
# Adding a new "skip me" type = overriding this method locally —
|
|
172
|
+
# no central walker to edit (OCP).
|
|
173
|
+
#
|
|
174
|
+
# @return [Boolean]
|
|
175
|
+
def body_content?
|
|
176
|
+
true
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# True when this node's text content should be processed by text
|
|
180
|
+
# consumers (link rewriters, spell checkers, search indexers, etc.).
|
|
181
|
+
# Default delegates to +body_content?+ — ephemeral/metadata nodes
|
|
182
|
+
# (CommentBlock, FrontmatterBlock, …) are not prose because they
|
|
183
|
+
# are not body content. Verbatim block subclasses (SourceBlock,
|
|
184
|
+
# ListingBlock, LiteralBlock, PassBlock, StemBlock) override this
|
|
185
|
+
# to false because their text is literal, not subject to
|
|
186
|
+
# substitution or spell-checking.
|
|
187
|
+
#
|
|
188
|
+
# Override sites for verbatim: SourceBlock, ListingBlock,
|
|
189
|
+
# LiteralBlock, PassBlock, StemBlock, HorizontalRuleBlock.
|
|
190
|
+
#
|
|
191
|
+
# Distinct from +body_content?+: a SourceBlock IS body content
|
|
192
|
+
# (the doc has real substance) but its text is not prose (a link
|
|
193
|
+
# shaped string inside source is literal text, not a link).
|
|
194
|
+
#
|
|
195
|
+
# @return [Boolean]
|
|
196
|
+
def prose?
|
|
197
|
+
body_content?
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# True when this node is structurally present but carries no
|
|
201
|
+
# visible characters (e.g., a paragraph whose text strips to
|
|
202
|
+
# empty). Default is false; inline content and paragraphs override.
|
|
203
|
+
#
|
|
204
|
+
# @return [Boolean]
|
|
205
|
+
def whitespace_only?
|
|
206
|
+
false
|
|
164
207
|
end
|
|
165
208
|
|
|
166
209
|
# Accept a visitor to traverse this element
|
|
@@ -3,14 +3,35 @@
|
|
|
3
3
|
module Coradoc
|
|
4
4
|
module CoreModel
|
|
5
5
|
class DefinitionItem < Base
|
|
6
|
+
# Primary term (first term in source order). For multi-term `<dt>`'s
|
|
7
|
+
# (AsciiDoc `term1::\nterm2::`), use {#terms} which carries the
|
|
8
|
+
# full list. `term` is kept as the singular accessor for legacy
|
|
9
|
+
# consumers; new consumers should prefer {#terms}.
|
|
6
10
|
attribute :term, :string
|
|
11
|
+
|
|
12
|
+
# All terms on this `<dt>`. Single-element for the common case;
|
|
13
|
+
# multi-element for shared-`<dd>` AsciiDoc forms like
|
|
14
|
+
# term1::
|
|
15
|
+
# term2::
|
|
16
|
+
# shared definition
|
|
17
|
+
# Order matches source order. Renderers emit one `<dt>` per entry.
|
|
18
|
+
attribute :terms, :string, collection: true, default: []
|
|
19
|
+
|
|
7
20
|
attribute :definitions, :string, collection: true
|
|
8
21
|
attribute :nested, DefinitionList
|
|
22
|
+
# `+`-continuation blocks attached to this dd in AsciiDoc source.
|
|
23
|
+
# Each entry is a CoreModel block (ParagraphBlock, AdmonitionBlock,
|
|
24
|
+
# etc.) that followed the dd after a `+` line — rendered as
|
|
25
|
+
# additional children of the dd.
|
|
26
|
+
attribute :attached_children, Base, collection: true, initialize_empty: true
|
|
9
27
|
|
|
10
28
|
def initialize(args = {})
|
|
11
29
|
@term_children = args.delete(:term_children) || []
|
|
12
30
|
@definition_children = args.delete(:definition_children) || []
|
|
13
31
|
super
|
|
32
|
+
# Backward-compat: if caller passed only `term:` (no `terms:`),
|
|
33
|
+
# seed the collection so #terms is always consistent with #term.
|
|
34
|
+
self.terms = [term].compact if terms.empty? && !term.to_s.empty?
|
|
14
35
|
end
|
|
15
36
|
|
|
16
37
|
attr_reader :term_children, :definition_children
|
|
@@ -40,7 +61,7 @@ module Coradoc
|
|
|
40
61
|
private
|
|
41
62
|
|
|
42
63
|
def comparable_attributes
|
|
43
|
-
super + %i[term definitions nested term_children definition_children]
|
|
64
|
+
super + %i[term terms definitions nested term_children definition_children attached_children]
|
|
44
65
|
end
|
|
45
66
|
end
|
|
46
67
|
end
|
|
@@ -58,7 +58,7 @@ module Coradoc
|
|
|
58
58
|
private
|
|
59
59
|
|
|
60
60
|
def matched_offset(trimmed)
|
|
61
|
-
|
|
61
|
+
/\A(?<sign>[+-]?)(?<digits>\d+)\z/.match(trimmed) do |m|
|
|
62
62
|
digits = m[:digits].to_i
|
|
63
63
|
signed = m[:sign] == '-' ? -digits : digits
|
|
64
64
|
mode = m[:sign].empty? ? 'absolute' : 'relative'
|
|
@@ -119,7 +119,7 @@ module Coradoc
|
|
|
119
119
|
# end
|
|
120
120
|
#
|
|
121
121
|
# Returns self for chaining at the list level.
|
|
122
|
-
def add_item(marker:
|
|
122
|
+
def add_item(marker: marker_type == 'ordered' ? '.' : '*')
|
|
123
123
|
item = ListItem.build(marker: marker) { |li| yield li if block_given? }
|
|
124
124
|
self.items = Array(items) + [item]
|
|
125
125
|
self
|
data/lib/coradoc/dispatch.rb
CHANGED
|
@@ -18,6 +18,25 @@ module Coradoc
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def get_format(format_name)
|
|
21
|
+
registry.get(format_name) || lazy_load_format(format_name)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# If a format gem (e.g. coradoc-adoc) is in the bundle but has not
|
|
25
|
+
# been required yet, attempt to require it on first lookup. This
|
|
26
|
+
# removes the friction where `Coradoc.parse(text, format: :asciidoc)`
|
|
27
|
+
# blows up just because the user only wrote `require "coradoc"` and
|
|
28
|
+
# never explicitly required `coradoc/asciidoc`. The require is for
|
|
29
|
+
# an external gem, not internal library code, so it stays within
|
|
30
|
+
# the autoload-over-require_relative rule.
|
|
31
|
+
def lazy_load_format(format_name)
|
|
32
|
+
return nil if format_name.nil? || format_name.to_s.empty?
|
|
33
|
+
|
|
34
|
+
begin
|
|
35
|
+
require "coradoc/#{format_name}"
|
|
36
|
+
rescue LoadError
|
|
37
|
+
return nil
|
|
38
|
+
end
|
|
39
|
+
|
|
21
40
|
registry.get(format_name)
|
|
22
41
|
end
|
|
23
42
|
|
data/lib/coradoc/hooks.rb
CHANGED
|
@@ -89,7 +89,7 @@ module Coradoc
|
|
|
89
89
|
modified_args = invoke(hook_point, *args, **kwargs)
|
|
90
90
|
result = yield(*modified_args)
|
|
91
91
|
|
|
92
|
-
after_point = "after_#{hook_point.to_s.sub('before_', '')}"
|
|
92
|
+
after_point = :"after_#{hook_point.to_s.sub('before_', '')}"
|
|
93
93
|
result = invoke(after_point, result, **kwargs) if HOOK_POINTS.key?(after_point)
|
|
94
94
|
|
|
95
95
|
result
|
|
@@ -11,12 +11,12 @@ module Coradoc
|
|
|
11
11
|
# Out-of-bounds clamps gracefully (SPEC 3.4). One-based indexing
|
|
12
12
|
# (asciidoctor convention).
|
|
13
13
|
module Lines
|
|
14
|
-
SPEC_PART =
|
|
14
|
+
SPEC_PART = /
|
|
15
15
|
\A
|
|
16
16
|
(?<start>\d+)
|
|
17
17
|
(?:\.\.(?<finish>\d+))?
|
|
18
18
|
\z
|
|
19
|
-
|
|
19
|
+
/x
|
|
20
20
|
|
|
21
21
|
# @param text [String]
|
|
22
22
|
# @param options [Coradoc::CoreModel::IncludeOptions]
|
|
@@ -17,8 +17,8 @@ module Coradoc
|
|
|
17
17
|
# Markers may appear on their own line; they must be the first
|
|
18
18
|
# non-whitespace token on that line (asciidoctor convention).
|
|
19
19
|
module Tags
|
|
20
|
-
MARKER_OPEN =
|
|
21
|
-
MARKER_CLOSE =
|
|
20
|
+
MARKER_OPEN = %r{\A[[:space:]]*(?://+|#+)[[:space:]]*tag::([^\[\]]+)\[[[:space:]]*\]}
|
|
21
|
+
MARKER_CLOSE = %r{\A[[:space:]]*(?://+|#+)[[:space:]]*end::([^\[\]]+)\[[[:space:]]*\]}
|
|
22
22
|
|
|
23
23
|
# @param text [String] raw included file content
|
|
24
24
|
# @param options [Coradoc::CoreModel::IncludeOptions]
|
|
@@ -134,5 +134,3 @@ module Coradoc
|
|
|
134
134
|
end
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
|
-
|
|
138
|
-
require 'set'
|
|
@@ -17,10 +17,10 @@ module Coradoc
|
|
|
17
17
|
attr_reader :counts
|
|
18
18
|
|
|
19
19
|
def visit(element)
|
|
20
|
-
return super
|
|
20
|
+
return super unless element.is_a?(CoreModel::Base)
|
|
21
21
|
|
|
22
22
|
@counts[type_key_for(element)] += 1
|
|
23
|
-
super
|
|
23
|
+
super
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
private
|
|
@@ -12,23 +12,14 @@ module Coradoc
|
|
|
12
12
|
# new link-bearing subclass means overriding +link_kind+ on it,
|
|
13
13
|
# not editing a case/when here (OCP).
|
|
14
14
|
#
|
|
15
|
-
# Verbatim block
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
15
|
+
# Verbatim block recognition is delegated to +CoreModel::Base#prose?+
|
|
16
|
+
# — each block class answers "is my text live or literal?". Adding a
|
|
17
|
+
# new verbatim block type means overriding +prose?+ on it, not editing
|
|
18
|
+
# a list here. The visitor is closed for that change.
|
|
19
19
|
#
|
|
20
20
|
# Dispatch is class-based (no +respond_to?+ duck-typing). Unrecognized
|
|
21
21
|
# classes are returned unchanged — the visitor is closed by design.
|
|
22
22
|
class Visitor
|
|
23
|
-
# Verbatim block classes — content is raw, no link semantics.
|
|
24
|
-
VERBATIM_TYPES = [
|
|
25
|
-
Coradoc::CoreModel::SourceBlock,
|
|
26
|
-
Coradoc::CoreModel::ListingBlock,
|
|
27
|
-
Coradoc::CoreModel::LiteralBlock,
|
|
28
|
-
Coradoc::CoreModel::PassBlock,
|
|
29
|
-
Coradoc::CoreModel::StemBlock
|
|
30
|
-
].freeze
|
|
31
|
-
|
|
32
23
|
# Structural/container classes that own a child collection. Each
|
|
33
24
|
# entry maps the class to the reader method that exposes its
|
|
34
25
|
# children. MECE — every "recurse into the children" case lands
|
|
@@ -68,7 +59,7 @@ module Coradoc
|
|
|
68
59
|
private
|
|
69
60
|
|
|
70
61
|
def visit_subtree(node)
|
|
71
|
-
return node
|
|
62
|
+
return node unless node.prose?
|
|
72
63
|
return rewrite_inline(node) if node.is_a?(Coradoc::CoreModel::InlineElement)
|
|
73
64
|
|
|
74
65
|
reader = reader_for(node)
|
data/lib/coradoc/pipeline.rb
CHANGED
|
@@ -42,8 +42,8 @@ module Coradoc
|
|
|
42
42
|
)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
def rewrite_links(document, rewriter: nil, &
|
|
46
|
-
Coradoc::LinkRewriter.rewrite(document, rewriter: rewriter, &
|
|
45
|
+
def rewrite_links(document, rewriter: nil, &)
|
|
46
|
+
Coradoc::LinkRewriter.rewrite(document, rewriter: rewriter, &)
|
|
47
47
|
end
|
|
48
48
|
|
|
49
49
|
def convert(text, from:, to:, **)
|
|
@@ -72,8 +72,8 @@ module Coradoc
|
|
|
72
72
|
Hooks.invoke(:after_serialize, result, format: to)
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
def build(&
|
|
76
|
-
CoreModel::DocumentElement.build(children: [], &
|
|
75
|
+
def build(&)
|
|
76
|
+
CoreModel::DocumentElement.build(children: [], &)
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
def parse_file(path, format: nil)
|
data/lib/coradoc/query.rb
CHANGED
|
@@ -234,8 +234,8 @@ module Coradoc
|
|
|
234
234
|
@elements = Array(elements).compact
|
|
235
235
|
end
|
|
236
236
|
|
|
237
|
-
def each(&
|
|
238
|
-
@elements.each(&
|
|
237
|
+
def each(&)
|
|
238
|
+
@elements.each(&)
|
|
239
239
|
end
|
|
240
240
|
|
|
241
241
|
def [](index)
|
|
@@ -272,16 +272,16 @@ module Coradoc
|
|
|
272
272
|
ResultSet.new(results.uniq)
|
|
273
273
|
end
|
|
274
274
|
|
|
275
|
-
def map(&
|
|
276
|
-
ResultSet.new(@elements.map(&
|
|
275
|
+
def map(&)
|
|
276
|
+
ResultSet.new(@elements.map(&))
|
|
277
277
|
end
|
|
278
278
|
|
|
279
|
-
def select(&
|
|
280
|
-
ResultSet.new(@elements.select(&
|
|
279
|
+
def select(&)
|
|
280
|
+
ResultSet.new(@elements.select(&))
|
|
281
281
|
end
|
|
282
282
|
|
|
283
|
-
def reject(&
|
|
284
|
-
ResultSet.new(@elements.reject(&
|
|
283
|
+
def reject(&)
|
|
284
|
+
ResultSet.new(@elements.reject(&))
|
|
285
285
|
end
|
|
286
286
|
|
|
287
287
|
def to_a
|
data/lib/coradoc/registry.rb
CHANGED
|
@@ -102,24 +102,24 @@ module Coradoc
|
|
|
102
102
|
#
|
|
103
103
|
# @yield [Symbol, Object] name and item
|
|
104
104
|
# @return [Enumerator]
|
|
105
|
-
def each(&
|
|
106
|
-
@items.each(&
|
|
105
|
+
def each(&)
|
|
106
|
+
@items.each(&)
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
# Iterate over item values
|
|
110
110
|
#
|
|
111
111
|
# @yield [Object]
|
|
112
112
|
# @return [Enumerator]
|
|
113
|
-
def each_value(&
|
|
114
|
-
@items.each_value(&
|
|
113
|
+
def each_value(&)
|
|
114
|
+
@items.each_value(&)
|
|
115
115
|
end
|
|
116
116
|
|
|
117
117
|
# Iterate over item names
|
|
118
118
|
#
|
|
119
119
|
# @yield [Symbol]
|
|
120
120
|
# @return [Enumerator]
|
|
121
|
-
def each_key(&
|
|
122
|
-
@items.each_key(&
|
|
121
|
+
def each_key(&)
|
|
122
|
+
@items.each_key(&)
|
|
123
123
|
end
|
|
124
124
|
|
|
125
125
|
# Find an item whose processor_match? returns true for the given filename
|
|
@@ -24,8 +24,8 @@ module Coradoc
|
|
|
24
24
|
DEFAULT_MAX_DEPTH = 64
|
|
25
25
|
|
|
26
26
|
class << self
|
|
27
|
-
def call(core, resolver:, base_dir:, **
|
|
28
|
-
new(resolver: resolver, base_dir: base_dir, **
|
|
27
|
+
def call(core, resolver:, base_dir:, **)
|
|
28
|
+
new(resolver: resolver, base_dir: base_dir, **).call(core)
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
data/lib/coradoc/validation.rb
CHANGED
|
@@ -600,8 +600,8 @@ module Coradoc
|
|
|
600
600
|
#
|
|
601
601
|
# @yield Schema definition block
|
|
602
602
|
# @return [Schema] The defined schema
|
|
603
|
-
def define(&
|
|
604
|
-
Schema.define(&
|
|
603
|
+
def define(&)
|
|
604
|
+
Schema.define(&)
|
|
605
605
|
end
|
|
606
606
|
|
|
607
607
|
# Generate a validation schema from a CoreModel class
|
|
@@ -614,8 +614,8 @@ module Coradoc
|
|
|
614
614
|
# schema = Coradoc::Validation.auto_schema(Coradoc::CoreModel::Block)
|
|
615
615
|
# result = schema.validate(document)
|
|
616
616
|
#
|
|
617
|
-
def auto_schema(model_class, **
|
|
618
|
-
SchemaGenerator.generate(model_class, **
|
|
617
|
+
def auto_schema(model_class, **)
|
|
618
|
+
SchemaGenerator.generate(model_class, **)
|
|
619
619
|
end
|
|
620
620
|
|
|
621
621
|
# Validate a document with default schema
|
data/lib/coradoc/version.rb
CHANGED
data/lib/coradoc.rb
CHANGED
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
# Coradoc.serialize(doc, to: :html)
|
|
31
31
|
|
|
32
32
|
require_relative 'coradoc/coradoc'
|
|
33
|
-
require_relative 'coradoc/version'
|
|
34
33
|
|
|
35
34
|
module Coradoc
|
|
35
|
+
autoload :VERSION, 'coradoc/version'
|
|
36
36
|
autoload :CLI, 'coradoc/cli'
|
|
37
37
|
autoload :Visitor, 'coradoc/visitor'
|
|
38
38
|
autoload :LinkRewriter, 'coradoc/link_rewriter'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: coradoc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.0.
|
|
4
|
+
version: 2.0.28
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
@@ -144,6 +144,7 @@ metadata:
|
|
|
144
144
|
homepage_uri: https://github.com/lutaml/coradoc
|
|
145
145
|
source_code_uri: https://github.com/lutaml/coradoc
|
|
146
146
|
changelog_uri: https://github.com/lutaml/coradoc/blob/main/CHANGELOG.md
|
|
147
|
+
rubygems_mfa_required: 'true'
|
|
147
148
|
rdoc_options: []
|
|
148
149
|
require_paths:
|
|
149
150
|
- lib
|