coradoc-adoc 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.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/lib/coradoc/asciidoc/model/admonition.rb +37 -0
- data/lib/coradoc/asciidoc/model/anchorable.rb +64 -0
- data/lib/coradoc/asciidoc/model/attached.rb +26 -0
- data/lib/coradoc/asciidoc/model/attribute.rb +22 -0
- data/lib/coradoc/asciidoc/model/attribute_list/matchers.rb +45 -0
- data/lib/coradoc/asciidoc/model/attribute_list.rb +230 -0
- data/lib/coradoc/asciidoc/model/attribute_list_attribute.rb +11 -0
- data/lib/coradoc/asciidoc/model/audio.rb +44 -0
- data/lib/coradoc/asciidoc/model/author.rb +36 -0
- data/lib/coradoc/asciidoc/model/base.rb +141 -0
- data/lib/coradoc/asciidoc/model/bibliography.rb +37 -0
- data/lib/coradoc/asciidoc/model/bibliography_entry.rb +38 -0
- data/lib/coradoc/asciidoc/model/block/core.rb +139 -0
- data/lib/coradoc/asciidoc/model/block/example.rb +14 -0
- data/lib/coradoc/asciidoc/model/block/listing.rb +14 -0
- data/lib/coradoc/asciidoc/model/block/literal.rb +14 -0
- data/lib/coradoc/asciidoc/model/block/open.rb +14 -0
- data/lib/coradoc/asciidoc/model/block/pass.rb +14 -0
- data/lib/coradoc/asciidoc/model/block/quote.rb +14 -0
- data/lib/coradoc/asciidoc/model/block/reviewer_comment.rb +14 -0
- data/lib/coradoc/asciidoc/model/block/side.rb +14 -0
- data/lib/coradoc/asciidoc/model/block/source_code.rb +14 -0
- data/lib/coradoc/asciidoc/model/block.rb +21 -0
- data/lib/coradoc/asciidoc/model/break.rb +33 -0
- data/lib/coradoc/asciidoc/model/comment_block.rb +33 -0
- data/lib/coradoc/asciidoc/model/comment_line.rb +30 -0
- data/lib/coradoc/asciidoc/model/content_list.rb +334 -0
- data/lib/coradoc/asciidoc/model/document.rb +197 -0
- data/lib/coradoc/asciidoc/model/document_attributes.rb +43 -0
- data/lib/coradoc/asciidoc/model/glossaries.rb +11 -0
- data/lib/coradoc/asciidoc/model/header.rb +57 -0
- data/lib/coradoc/asciidoc/model/highlight.rb +11 -0
- data/lib/coradoc/asciidoc/model/image/block_image/attribute_list.rb +23 -0
- data/lib/coradoc/asciidoc/model/image/block_image.rb +25 -0
- data/lib/coradoc/asciidoc/model/image/core/attribute_list.rb +43 -0
- data/lib/coradoc/asciidoc/model/image/core.rb +72 -0
- data/lib/coradoc/asciidoc/model/image/inline_image.rb +17 -0
- data/lib/coradoc/asciidoc/model/image.rb +14 -0
- data/lib/coradoc/asciidoc/model/include.rb +66 -0
- data/lib/coradoc/asciidoc/model/inline/anchor.rb +41 -0
- data/lib/coradoc/asciidoc/model/inline/attribute_reference.rb +25 -0
- data/lib/coradoc/asciidoc/model/inline/base.rb +15 -0
- data/lib/coradoc/asciidoc/model/inline/bold.rb +38 -0
- data/lib/coradoc/asciidoc/model/inline/cross_reference.rb +29 -0
- data/lib/coradoc/asciidoc/model/inline/cross_reference_arg.rb +15 -0
- data/lib/coradoc/asciidoc/model/inline/footnote.rb +34 -0
- data/lib/coradoc/asciidoc/model/inline/hard_line_break.rb +24 -0
- data/lib/coradoc/asciidoc/model/inline/highlight.rb +36 -0
- data/lib/coradoc/asciidoc/model/inline/italic.rb +38 -0
- data/lib/coradoc/asciidoc/model/inline/link.rb +46 -0
- data/lib/coradoc/asciidoc/model/inline/monospace.rb +39 -0
- data/lib/coradoc/asciidoc/model/inline/quotation.rb +25 -0
- data/lib/coradoc/asciidoc/model/inline/small.rb +25 -0
- data/lib/coradoc/asciidoc/model/inline/span.rb +38 -0
- data/lib/coradoc/asciidoc/model/inline/stem.rb +24 -0
- data/lib/coradoc/asciidoc/model/inline/strikethrough.rb +39 -0
- data/lib/coradoc/asciidoc/model/inline/subscript.rb +33 -0
- data/lib/coradoc/asciidoc/model/inline/superscript.rb +33 -0
- data/lib/coradoc/asciidoc/model/inline/underline.rb +25 -0
- data/lib/coradoc/asciidoc/model/inline.rb +31 -0
- data/lib/coradoc/asciidoc/model/line_break.rb +11 -0
- data/lib/coradoc/asciidoc/model/list/core.rb +61 -0
- data/lib/coradoc/asciidoc/model/list/definition.rb +27 -0
- data/lib/coradoc/asciidoc/model/list/definition_item.rb +43 -0
- data/lib/coradoc/asciidoc/model/list/item.rb +72 -0
- data/lib/coradoc/asciidoc/model/list/nestable.rb +14 -0
- data/lib/coradoc/asciidoc/model/list/ordered.rb +34 -0
- data/lib/coradoc/asciidoc/model/list/unordered.rb +34 -0
- data/lib/coradoc/asciidoc/model/list.rb +29 -0
- data/lib/coradoc/asciidoc/model/named_attribute.rb +12 -0
- data/lib/coradoc/asciidoc/model/paragraph.rb +59 -0
- data/lib/coradoc/asciidoc/model/rejected_positional_attribute.rb +12 -0
- data/lib/coradoc/asciidoc/model/resolvable.rb +71 -0
- data/lib/coradoc/asciidoc/model/resolver.rb +430 -0
- data/lib/coradoc/asciidoc/model/reviewer_note.rb +54 -0
- data/lib/coradoc/asciidoc/model/revision.rb +47 -0
- data/lib/coradoc/asciidoc/model/section.rb +109 -0
- data/lib/coradoc/asciidoc/model/serialization/asciidoc_adapter.rb +28 -0
- data/lib/coradoc/asciidoc/model/serialization/asciidoc_mapping.rb +42 -0
- data/lib/coradoc/asciidoc/model/serialization/asciidoc_mapping_rule.rb +41 -0
- data/lib/coradoc/asciidoc/model/serialization/asciidoc_transform.rb +211 -0
- data/lib/coradoc/asciidoc/model/serialization/errors.rb +57 -0
- data/lib/coradoc/asciidoc/model/serialization.rb +39 -0
- data/lib/coradoc/asciidoc/model/spacing.rb +282 -0
- data/lib/coradoc/asciidoc/model/table.rb +44 -0
- data/lib/coradoc/asciidoc/model/table_cell.rb +122 -0
- data/lib/coradoc/asciidoc/model/table_row.rb +26 -0
- data/lib/coradoc/asciidoc/model/tag.rb +36 -0
- data/lib/coradoc/asciidoc/model/term.rb +48 -0
- data/lib/coradoc/asciidoc/model/text_element.rb +66 -0
- data/lib/coradoc/asciidoc/model/title.rb +85 -0
- data/lib/coradoc/asciidoc/model/video/attribute_list.rb +43 -0
- data/lib/coradoc/asciidoc/model/video.rb +49 -0
- data/lib/coradoc/asciidoc/model.rb +75 -0
- data/lib/coradoc/asciidoc/parse_error.rb +161 -0
- data/lib/coradoc/asciidoc/parser/admonition.rb +26 -0
- data/lib/coradoc/asciidoc/parser/attribute_list.rb +110 -0
- data/lib/coradoc/asciidoc/parser/base.rb +159 -0
- data/lib/coradoc/asciidoc/parser/bibliography.rb +31 -0
- data/lib/coradoc/asciidoc/parser/block.rb +186 -0
- data/lib/coradoc/asciidoc/parser/block_assembler.rb +183 -0
- data/lib/coradoc/asciidoc/parser/cache.rb +155 -0
- data/lib/coradoc/asciidoc/parser/citation.rb +32 -0
- data/lib/coradoc/asciidoc/parser/content.rb +76 -0
- data/lib/coradoc/asciidoc/parser/document_attributes.rb +27 -0
- data/lib/coradoc/asciidoc/parser/fix_files.rb +76 -0
- data/lib/coradoc/asciidoc/parser/header.rb +31 -0
- data/lib/coradoc/asciidoc/parser/inline.rb +199 -0
- data/lib/coradoc/asciidoc/parser/list.rb +130 -0
- data/lib/coradoc/asciidoc/parser/metadata_detector.rb +164 -0
- data/lib/coradoc/asciidoc/parser/paragraph.rb +64 -0
- data/lib/coradoc/asciidoc/parser/section.rb +62 -0
- data/lib/coradoc/asciidoc/parser/stem.rb +19 -0
- data/lib/coradoc/asciidoc/parser/table.rb +166 -0
- data/lib/coradoc/asciidoc/parser/term.rb +70 -0
- data/lib/coradoc/asciidoc/parser/text.rb +156 -0
- data/lib/coradoc/asciidoc/parser.rb +10 -0
- data/lib/coradoc/asciidoc/serializer/adoc_serializer.rb +86 -0
- data/lib/coradoc/asciidoc/serializer/element_registry.rb +95 -0
- data/lib/coradoc/asciidoc/serializer/fallback_serializer.rb +21 -0
- data/lib/coradoc/asciidoc/serializer/formatter.rb +144 -0
- data/lib/coradoc/asciidoc/serializer/registrations.rb +108 -0
- data/lib/coradoc/asciidoc/serializer/serialization_context.rb +238 -0
- data/lib/coradoc/asciidoc/serializer/serializers/admonition.rb +19 -0
- data/lib/coradoc/asciidoc/serializer/serializers/attribute.rb +23 -0
- data/lib/coradoc/asciidoc/serializer/serializers/attribute_list.rb +40 -0
- data/lib/coradoc/asciidoc/serializer/serializers/attribute_list_attribute.rb +18 -0
- data/lib/coradoc/asciidoc/serializer/serializers/audio.rb +33 -0
- data/lib/coradoc/asciidoc/serializer/serializers/author.rb +20 -0
- data/lib/coradoc/asciidoc/serializer/serializers/base.rb +152 -0
- data/lib/coradoc/asciidoc/serializer/serializers/bibliography.rb +35 -0
- data/lib/coradoc/asciidoc/serializer/serializers/bibliography_entry.rb +24 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/core.rb +70 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/example.rb +17 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/listing.rb +22 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/literal.rb +17 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/open.rb +22 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/pass.rb +17 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/quote.rb +17 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/reviewer_comment.rb +17 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/side.rb +22 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block/source_code.rb +22 -0
- data/lib/coradoc/asciidoc/serializer/serializers/block.rb +23 -0
- data/lib/coradoc/asciidoc/serializer/serializers/break.rb +18 -0
- data/lib/coradoc/asciidoc/serializer/serializers/comment_block.rb +22 -0
- data/lib/coradoc/asciidoc/serializer/serializers/comment_line.rb +22 -0
- data/lib/coradoc/asciidoc/serializer/serializers/document.rb +65 -0
- data/lib/coradoc/asciidoc/serializer/serializers/document_attributes.rb +21 -0
- data/lib/coradoc/asciidoc/serializer/serializers/header.rb +24 -0
- data/lib/coradoc/asciidoc/serializer/serializers/highlight.rb +23 -0
- data/lib/coradoc/asciidoc/serializer/serializers/image/core.rb +30 -0
- data/lib/coradoc/asciidoc/serializer/serializers/image.rb +14 -0
- data/lib/coradoc/asciidoc/serializer/serializers/include.rb +19 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/anchor.rb +20 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/attribute_reference.rb +20 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/bold.rb +26 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/cross_reference.rb +30 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/cross_reference_arg.rb +20 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/footnote.rb +24 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/hard_line_break.rb +20 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/highlight.rb +26 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/italic.rb +26 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/link.rb +38 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/monospace.rb +26 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/quotation.rb +21 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/small.rb +20 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/span.rb +35 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/stem.rb +23 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/strikethrough.rb +29 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/subscript.rb +29 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/superscript.rb +26 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline/underline.rb +20 -0
- data/lib/coradoc/asciidoc/serializer/serializers/inline.rb +32 -0
- data/lib/coradoc/asciidoc/serializer/serializers/line_break.rb +18 -0
- data/lib/coradoc/asciidoc/serializer/serializers/list/core.rb +47 -0
- data/lib/coradoc/asciidoc/serializer/serializers/list/definition.rb +35 -0
- data/lib/coradoc/asciidoc/serializer/serializers/list/definition_item.rb +38 -0
- data/lib/coradoc/asciidoc/serializer/serializers/list/item.rb +120 -0
- data/lib/coradoc/asciidoc/serializer/serializers/list/ordered.rb +24 -0
- data/lib/coradoc/asciidoc/serializer/serializers/list/unordered.rb +29 -0
- data/lib/coradoc/asciidoc/serializer/serializers/list.rb +19 -0
- data/lib/coradoc/asciidoc/serializer/serializers/named_attribute.rb +22 -0
- data/lib/coradoc/asciidoc/serializer/serializers/paragraph.rb +65 -0
- data/lib/coradoc/asciidoc/serializer/serializers/reviewer_note.rb +28 -0
- data/lib/coradoc/asciidoc/serializer/serializers/revision.rb +26 -0
- data/lib/coradoc/asciidoc/serializer/serializers/section.rb +37 -0
- data/lib/coradoc/asciidoc/serializer/serializers/table.rb +24 -0
- data/lib/coradoc/asciidoc/serializer/serializers/table_cell.rb +75 -0
- data/lib/coradoc/asciidoc/serializer/serializers/table_row.rb +24 -0
- data/lib/coradoc/asciidoc/serializer/serializers/tag.rb +19 -0
- data/lib/coradoc/asciidoc/serializer/serializers/term.rb +20 -0
- data/lib/coradoc/asciidoc/serializer/serializers/text_element.rb +23 -0
- data/lib/coradoc/asciidoc/serializer/serializers/title.rb +55 -0
- data/lib/coradoc/asciidoc/serializer/serializers/video.rb +33 -0
- data/lib/coradoc/asciidoc/serializer/spacing_strategy.rb +70 -0
- data/lib/coradoc/asciidoc/serializer.rb +75 -0
- data/lib/coradoc/asciidoc/transform/from_core_model.rb +502 -0
- data/lib/coradoc/asciidoc/transform/from_core_model_registrations.rb +126 -0
- data/lib/coradoc/asciidoc/transform/registry.rb +146 -0
- data/lib/coradoc/asciidoc/transform/to_core_model.rb +564 -0
- data/lib/coradoc/asciidoc/transform/to_core_model_registrations.rb +257 -0
- data/lib/coradoc/asciidoc/transform.rb +13 -0
- data/lib/coradoc/asciidoc/transformer/block_rules.rb +101 -0
- data/lib/coradoc/asciidoc/transformer/header_rules.rb +91 -0
- data/lib/coradoc/asciidoc/transformer/inline_rules.rb +179 -0
- data/lib/coradoc/asciidoc/transformer/list_rules.rb +131 -0
- data/lib/coradoc/asciidoc/transformer/misc_rules.rb +196 -0
- data/lib/coradoc/asciidoc/transformer/structural_rules.rb +216 -0
- data/lib/coradoc/asciidoc/transformer/text_rules.rb +107 -0
- data/lib/coradoc/asciidoc/transformer.rb +406 -0
- data/lib/coradoc/asciidoc/version.rb +7 -0
- data/lib/coradoc/asciidoc.rb +148 -0
- data/lib/coradoc/util/asciidoc.rb +71 -0
- data/lib/coradoc/util.rb +8 -0
- metadata +343 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
# Bibliography block element for AsciiDoc documents.
|
|
7
|
+
#
|
|
8
|
+
# Bibliographies contain lists of bibliography entries (references)
|
|
9
|
+
# with support for various citation styles.
|
|
10
|
+
#
|
|
11
|
+
# @!attribute [r] id
|
|
12
|
+
# @return [String, nil] Optional identifier for the bibliography
|
|
13
|
+
#
|
|
14
|
+
# @!attribute [r] title
|
|
15
|
+
# @return [String, nil] Optional bibliography title
|
|
16
|
+
#
|
|
17
|
+
# @!attribute [r] entries
|
|
18
|
+
# @return [Array<Coradoc::AsciiDoc::Model::BibliographyEntry>] Bibliography entry items
|
|
19
|
+
#
|
|
20
|
+
# @example Create a bibliography
|
|
21
|
+
# bib = Coradoc::AsciiDoc::Model::Bibliography.new
|
|
22
|
+
# bib.title = "References"
|
|
23
|
+
# entry = Coradoc::AsciiDoc::Model::BibliographyEntry.new
|
|
24
|
+
# bib.entries << entry
|
|
25
|
+
#
|
|
26
|
+
# @see Coradoc::AsciiDoc::Model::BibliographyEntry Individual bibliography entries
|
|
27
|
+
#
|
|
28
|
+
class Bibliography < Base
|
|
29
|
+
include Coradoc::AsciiDoc::Model::Anchorable
|
|
30
|
+
|
|
31
|
+
attribute :id, :string
|
|
32
|
+
attribute :title, :string
|
|
33
|
+
attribute :entries, Coradoc::AsciiDoc::Model::BibliographyEntry, collection: true
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
# Individual bibliography entry for AsciiDoc documents.
|
|
7
|
+
#
|
|
8
|
+
# Bibliography entries represent single references within a bibliography,
|
|
9
|
+
# with anchor names for citation linking.
|
|
10
|
+
#
|
|
11
|
+
# @!attribute [r] anchor_name
|
|
12
|
+
# @return [String, nil] The anchor name for citing this entry
|
|
13
|
+
#
|
|
14
|
+
# @!attribute [r] document_id
|
|
15
|
+
# @return [String, nil] The document identifier
|
|
16
|
+
#
|
|
17
|
+
# @!attribute [r] ref_text
|
|
18
|
+
# @return [String, nil] The reference text/citation
|
|
19
|
+
#
|
|
20
|
+
# @!attribute [r] line_break
|
|
21
|
+
# @return [String] Line break character (default: "")
|
|
22
|
+
#
|
|
23
|
+
# @example Create a bibliography entry
|
|
24
|
+
# entry = Coradoc::AsciiDoc::Model::BibliographyEntry.new
|
|
25
|
+
# entry.anchor_name = "smith2023"
|
|
26
|
+
# entry.ref_text = "Smith, J. (2023). Example citation."
|
|
27
|
+
#
|
|
28
|
+
# @see Coradoc::AsciiDoc::Model::Bibliography Bibliography container
|
|
29
|
+
#
|
|
30
|
+
class BibliographyEntry < Base
|
|
31
|
+
attribute :anchor_name, :string
|
|
32
|
+
attribute :document_id, :string
|
|
33
|
+
attribute :ref_text, :string
|
|
34
|
+
attribute :line_break, :string, default: -> { '' }
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
# Base class for block elements in AsciiDoc documents.
|
|
8
|
+
#
|
|
9
|
+
# Block elements are delimited content sections that can contain
|
|
10
|
+
# multiple lines, titles, attributes, and attached blocks.
|
|
11
|
+
#
|
|
12
|
+
# Specific block types (Literal, Example, Listing, Quote, etc.) inherit
|
|
13
|
+
# from this class and define their delimiter characters.
|
|
14
|
+
#
|
|
15
|
+
# @!attribute [r] id
|
|
16
|
+
# @return [String, nil] Optional identifier for the block
|
|
17
|
+
#
|
|
18
|
+
# @!attribute [r] title
|
|
19
|
+
# @return [String, Array<Coradoc::AsciiDoc::Model::Base>, nil] Block title (string or array of Model objects)
|
|
20
|
+
#
|
|
21
|
+
# @!attribute [r] attributes
|
|
22
|
+
# @return [Coradoc::AsciiDoc::Model::AttributeList] Block attributes
|
|
23
|
+
#
|
|
24
|
+
# @!attribute [r] lines
|
|
25
|
+
# @return [Array<Lutaml::Model::Type::String, Coradoc::AsciiDoc::Model::TextElement>] Block content lines
|
|
26
|
+
#
|
|
27
|
+
# @!attribute [r] delimiter
|
|
28
|
+
# @return [String, nil] Full delimiter string
|
|
29
|
+
#
|
|
30
|
+
# @!attribute [r] delimiter_char
|
|
31
|
+
# @return [String, nil] Delimiter character (e.g., "=", "-", "*", "_", "+")
|
|
32
|
+
#
|
|
33
|
+
# @!attribute [r] delimiter_len
|
|
34
|
+
# @return [Integer, nil] Delimiter length (number of repeated characters)
|
|
35
|
+
#
|
|
36
|
+
# @!attribute [r] lang
|
|
37
|
+
# @return [String, nil] Language identifier for syntax highlighting
|
|
38
|
+
#
|
|
39
|
+
# @!attribute [r] type_str
|
|
40
|
+
# @return [String, nil] Block type string
|
|
41
|
+
#
|
|
42
|
+
# @example Create a custom block
|
|
43
|
+
# block = Coradoc::AsciiDoc::Model::Block::Core.new
|
|
44
|
+
# block.delimiter_char = "-"
|
|
45
|
+
# block.delimiter_len = 4
|
|
46
|
+
# block.lines = ["Line 1", "Line 2"]
|
|
47
|
+
#
|
|
48
|
+
# @see Coradoc::AsciiDoc::Model::Block::Literal Literal block
|
|
49
|
+
# @see Coradoc::AsciiDoc::Model::Block::Example Example block
|
|
50
|
+
# @see Coradoc::AsciiDoc::Model::Block::Listing Listing block
|
|
51
|
+
# @see Coradoc::AsciiDoc::Model::Block::Quote Quote block
|
|
52
|
+
#
|
|
53
|
+
class Core < Attached
|
|
54
|
+
include Coradoc::AsciiDoc::Model::Anchorable
|
|
55
|
+
|
|
56
|
+
attribute :id, :string
|
|
57
|
+
attribute :title, :string, default: -> { nil } # Polymorphic: string or array of Model objects
|
|
58
|
+
attribute :attributes, Coradoc::AsciiDoc::Model::AttributeList, default: lambda {
|
|
59
|
+
Coradoc::AsciiDoc::Model::AttributeList.new
|
|
60
|
+
}
|
|
61
|
+
attribute :lines,
|
|
62
|
+
Lutaml::Model::Serializable,
|
|
63
|
+
collection: true,
|
|
64
|
+
initialize_empty: true,
|
|
65
|
+
polymorphic: [
|
|
66
|
+
Lutaml::Model::Type::String,
|
|
67
|
+
Coradoc::AsciiDoc::Model::TextElement
|
|
68
|
+
]
|
|
69
|
+
attribute :delimiter, :string
|
|
70
|
+
attribute :delimiter_char, :string
|
|
71
|
+
attribute :delimiter_len, :integer
|
|
72
|
+
attribute :lang, :string
|
|
73
|
+
attribute :type_str, :string
|
|
74
|
+
|
|
75
|
+
# Override title and lines setters to accept polymorphic content without coercion
|
|
76
|
+
|
|
77
|
+
attr_accessor :title
|
|
78
|
+
|
|
79
|
+
attr_writer :lines
|
|
80
|
+
|
|
81
|
+
def lines
|
|
82
|
+
@lines || []
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def initialize(**attributes)
|
|
86
|
+
# Extract title and lines before super to avoid coercion
|
|
87
|
+
title_value = attributes.delete(:title)
|
|
88
|
+
lines_value = attributes.delete(:lines)
|
|
89
|
+
super
|
|
90
|
+
self.title = title_value if title_value
|
|
91
|
+
self.lines = lines_value if lines_value
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# NOTE: This module provides core block functionality.
|
|
95
|
+
# Additional methods may be added as needed for specific block types.
|
|
96
|
+
|
|
97
|
+
# Generate the title string for this block
|
|
98
|
+
#
|
|
99
|
+
# @return [String] The formatted title (e.g., ".Title\n")
|
|
100
|
+
def gen_title
|
|
101
|
+
t = serialize_content(title)
|
|
102
|
+
return '' if t.nil? || t.empty?
|
|
103
|
+
|
|
104
|
+
".#{t}\n"
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
# Generate the attributes string for this block
|
|
108
|
+
#
|
|
109
|
+
# @return [String] The formatted attributes
|
|
110
|
+
def gen_attributes
|
|
111
|
+
attrs = attributes.to_adoc(show_empty: false)
|
|
112
|
+
return "#{attrs}\n" unless attrs.empty?
|
|
113
|
+
|
|
114
|
+
''
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Generate the delimiter string for this block
|
|
118
|
+
#
|
|
119
|
+
# @return [String] The delimiter (e.g., "----", "====")
|
|
120
|
+
# @return [String] Empty string if delimiter_char or delimiter_len is nil
|
|
121
|
+
def gen_delimiter
|
|
122
|
+
return '' if delimiter_char.nil? || delimiter_len.nil?
|
|
123
|
+
|
|
124
|
+
delimiter_char * delimiter_len
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Generate the lines content for this block
|
|
128
|
+
#
|
|
129
|
+
# @return [String] The serialized lines
|
|
130
|
+
def gen_lines
|
|
131
|
+
lines.map do |line|
|
|
132
|
+
serialize_content(line)
|
|
133
|
+
end.join
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class Example < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '=' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 4 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class Listing < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '-' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 4 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class Literal < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '.' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 4 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class Open < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '-' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 2 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class Pass < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '+' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 4 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class Quote < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '_' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 4 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class ReviewerComment < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '*' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 4 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class Side < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '*' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 4 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
class SourceCode < Core
|
|
8
|
+
attribute :delimiter_char, :string, default: -> { '-' }
|
|
9
|
+
attribute :delimiter_len, :integer, default: -> { 4 }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
module Block
|
|
7
|
+
# Autoload block types lazily
|
|
8
|
+
autoload :Core, 'coradoc/asciidoc/model/block/core'
|
|
9
|
+
autoload :Example, 'coradoc/asciidoc/model/block/example'
|
|
10
|
+
autoload :Literal, 'coradoc/asciidoc/model/block/literal'
|
|
11
|
+
autoload :Listing, 'coradoc/asciidoc/model/block/listing'
|
|
12
|
+
autoload :Open, 'coradoc/asciidoc/model/block/open'
|
|
13
|
+
autoload :Pass, 'coradoc/asciidoc/model/block/pass'
|
|
14
|
+
autoload :Quote, 'coradoc/asciidoc/model/block/quote'
|
|
15
|
+
autoload :Side, 'coradoc/asciidoc/model/block/side'
|
|
16
|
+
autoload :SourceCode, 'coradoc/asciidoc/model/block/source_code'
|
|
17
|
+
autoload :ReviewerComment, 'coradoc/asciidoc/model/block/reviewer_comment'
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
# Thematic break elements for AsciiDoc documents.
|
|
7
|
+
#
|
|
8
|
+
module Break
|
|
9
|
+
# Thematic break (horizontal rule) for AsciiDoc documents.
|
|
10
|
+
#
|
|
11
|
+
# Represented by a line of three or more asterisks ('***') in AsciiDoc.
|
|
12
|
+
# Used to separate content sections visually.
|
|
13
|
+
#
|
|
14
|
+
# @example Create a thematic break
|
|
15
|
+
# break = Coradoc::AsciiDoc::Model::Break::ThematicBreak.new
|
|
16
|
+
#
|
|
17
|
+
# @example Serialize to AsciiDoc
|
|
18
|
+
# break = Coradoc::AsciiDoc::Model::Break::ThematicBreak.new
|
|
19
|
+
# break.to_adoc # => "'''\n"
|
|
20
|
+
#
|
|
21
|
+
class ThematicBreak < Base
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Page break for AsciiDoc documents.
|
|
25
|
+
#
|
|
26
|
+
# Represented by <<< in AsciiDoc. Layout-only element;
|
|
27
|
+
# has no CoreModel equivalent and is filtered during ToCoreModel.
|
|
28
|
+
class PageBreak < Base
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
# Comment block element for AsciiDoc documents.
|
|
7
|
+
#
|
|
8
|
+
# Comment blocks contain multi-line comments that are not part
|
|
9
|
+
# of the final document output.
|
|
10
|
+
#
|
|
11
|
+
# @!attribute [r] text
|
|
12
|
+
# @return [String] The comment text
|
|
13
|
+
#
|
|
14
|
+
# @!attribute [r] line_break
|
|
15
|
+
# @return [String] Line break character (default: "\n")
|
|
16
|
+
#
|
|
17
|
+
# @example Create a comment block
|
|
18
|
+
# comment = Coradoc::AsciiDoc::Model::CommentBlock.new
|
|
19
|
+
# comment.text = "This is a multi-line comment"
|
|
20
|
+
#
|
|
21
|
+
# @see Coradoc::AsciiDoc::Model::CommentLine Single-line comments
|
|
22
|
+
#
|
|
23
|
+
class CommentBlock < Base
|
|
24
|
+
def block_level?
|
|
25
|
+
true
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attribute :text, :string
|
|
29
|
+
attribute :line_break, :string, default: -> { "\n" }
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Coradoc
|
|
4
|
+
module AsciiDoc
|
|
5
|
+
module Model
|
|
6
|
+
# Single-line comment element for AsciiDoc documents.
|
|
7
|
+
#
|
|
8
|
+
# Comment lines start with double slash (//) and are not included
|
|
9
|
+
# in the final document output.
|
|
10
|
+
#
|
|
11
|
+
# @!attribute [r] text
|
|
12
|
+
# @return [String] The comment text
|
|
13
|
+
#
|
|
14
|
+
# @!attribute [r] line_break
|
|
15
|
+
# @return [String] Line break character (default: "\n")
|
|
16
|
+
#
|
|
17
|
+
# @example Create a comment line
|
|
18
|
+
# comment = Coradoc::AsciiDoc::Model::CommentLine.new
|
|
19
|
+
# comment.text = "This is a comment"
|
|
20
|
+
# comment.to_adoc # => "// This is a comment\n"
|
|
21
|
+
#
|
|
22
|
+
# @see Coradoc::AsciiDoc::Model::CommentBlock Multi-line comments
|
|
23
|
+
#
|
|
24
|
+
class CommentLine < Base
|
|
25
|
+
attribute :text, :string
|
|
26
|
+
attribute :line_break, :string, default: -> { "\n" }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|