docbook 0.1.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/CHANGELOG.md +5 -0
- data/CLAUDE.md +19 -0
- data/CODE_OF_CONDUCT.md +10 -0
- data/README.adoc +335 -0
- data/Rakefile +12 -0
- data/docs/.lycheeignore +33 -0
- data/docs/Gemfile +10 -0
- data/docs/INDEX.adoc +67 -0
- data/docs/_config.yml +186 -0
- data/docs/advanced/element-classes.adoc +185 -0
- data/docs/advanced/frontend-customization.adoc +193 -0
- data/docs/advanced/index.adoc +14 -0
- data/docs/advanced/templates.adoc +123 -0
- data/docs/features/element-coverage.adoc +373 -0
- data/docs/features/html-output/data-model.adoc +285 -0
- data/docs/features/html-output/directory-mode.adoc +180 -0
- data/docs/features/html-output/index.adoc +90 -0
- data/docs/features/html-output/single-file-mode.adoc +125 -0
- data/docs/features/index-generation.adoc +197 -0
- data/docs/features/index.adoc +63 -0
- data/docs/features/numbering.adoc +183 -0
- data/docs/features/toc-generation.adoc +150 -0
- data/docs/features/xinclude/fragid-schemes.adoc +287 -0
- data/docs/features/xinclude/index.adoc +119 -0
- data/docs/features/xinclude/text-includes.adoc +123 -0
- data/docs/features/xinclude/xml-includes.adoc +167 -0
- data/docs/getting-started/index.adoc +50 -0
- data/docs/getting-started/installation.adoc +113 -0
- data/docs/getting-started/quick-start.adoc +161 -0
- data/docs/guides/converting-article.adoc +188 -0
- data/docs/guides/converting-book.adoc +192 -0
- data/docs/guides/index.adoc +12 -0
- data/docs/guides/roundtrip-testing.adoc +129 -0
- data/docs/interfaces/cli/format-command.adoc +109 -0
- data/docs/interfaces/cli/index.adoc +73 -0
- data/docs/interfaces/cli/roundtrip-command.adoc +125 -0
- data/docs/interfaces/cli/to-html-command.adoc +178 -0
- data/docs/interfaces/cli/validate-command.adoc +104 -0
- data/docs/interfaces/index.adoc +101 -0
- data/docs/interfaces/ruby-api/html-output.adoc +186 -0
- data/docs/interfaces/ruby-api/index.adoc +111 -0
- data/docs/interfaces/ruby-api/parsing.adoc +202 -0
- data/docs/interfaces/ruby-api/xinclude.adoc +162 -0
- data/docs/interfaces/ruby-api/xref-resolution.adoc +156 -0
- data/docs/lychee.toml +42 -0
- data/docs/reference/cli-options.adoc +155 -0
- data/docs/reference/content-block-types.adoc +243 -0
- data/docs/reference/glossary.adoc +119 -0
- data/docs/reference/index.adoc +12 -0
- data/docs/reference/supported-elements.adoc +749 -0
- data/docs/understanding/architecture.adoc +145 -0
- data/docs/understanding/content-pipeline.adoc +102 -0
- data/docs/understanding/data-models.adoc +156 -0
- data/docs/understanding/index.adoc +34 -0
- data/exe/docbook +7 -0
- data/frontend/dist/app.css +1 -0
- data/frontend/dist/app.iife.js +24 -0
- data/frontend/package-lock.json +1445 -0
- data/frontend/package.json +22 -0
- data/frontend/src/App.vue +230 -0
- data/frontend/src/app.ts +8 -0
- data/frontend/src/components/AppSidebar.vue +116 -0
- data/frontend/src/components/AppendixSection.vue +39 -0
- data/frontend/src/components/BlockRenderer.vue +358 -0
- data/frontend/src/components/ChapterSection.vue +32 -0
- data/frontend/src/components/ContentRenderer.vue +13 -0
- data/frontend/src/components/EbookContainer.vue +147 -0
- data/frontend/src/components/EbookTopBar.vue +116 -0
- data/frontend/src/components/PartSection.vue +44 -0
- data/frontend/src/components/ReferenceEntry.vue +80 -0
- data/frontend/src/components/SearchModal.vue +286 -0
- data/frontend/src/components/SectionContent.vue +31 -0
- data/frontend/src/components/SettingsPanel.vue +236 -0
- data/frontend/src/components/TocTreeItem.vue +135 -0
- data/frontend/src/composables/useEbookStore.ts +191 -0
- data/frontend/src/composables/useSearch.ts +249 -0
- data/frontend/src/env.d.ts +7 -0
- data/frontend/src/stores/documentStore.ts +221 -0
- data/frontend/src/stores/uiStore.ts +98 -0
- data/frontend/src/styles.css +253 -0
- data/frontend/tsconfig.json +24 -0
- data/frontend/tsconfig.node.json +11 -0
- data/frontend/vite.config.ts +30 -0
- data/lib/docbook/cli.rb +123 -0
- data/lib/docbook/document.rb +67 -0
- data/lib/docbook/elements/abbrev.rb +16 -0
- data/lib/docbook/elements/acknowledgements.rb +22 -0
- data/lib/docbook/elements/address.rb +18 -0
- data/lib/docbook/elements/alt.rb +16 -0
- data/lib/docbook/elements/annotation.rb +18 -0
- data/lib/docbook/elements/appendix.rb +34 -0
- data/lib/docbook/elements/article.rb +31 -0
- data/lib/docbook/elements/att.rb +15 -0
- data/lib/docbook/elements/attribution.rb +20 -0
- data/lib/docbook/elements/audioobject.rb +18 -0
- data/lib/docbook/elements/author.rb +18 -0
- data/lib/docbook/elements/bibliography.rb +24 -0
- data/lib/docbook/elements/bibliomixed.rb +40 -0
- data/lib/docbook/elements/biblioref.rb +20 -0
- data/lib/docbook/elements/blockquote.rb +26 -0
- data/lib/docbook/elements/book.rb +36 -0
- data/lib/docbook/elements/buildtarget.rb +16 -0
- data/lib/docbook/elements/callout.rb +22 -0
- data/lib/docbook/elements/calloutlist.rb +22 -0
- data/lib/docbook/elements/caution.rb +30 -0
- data/lib/docbook/elements/chapter.rb +62 -0
- data/lib/docbook/elements/citation.rb +16 -0
- data/lib/docbook/elements/citerefentry.rb +26 -0
- data/lib/docbook/elements/citetitle.rb +20 -0
- data/lib/docbook/elements/classname.rb +16 -0
- data/lib/docbook/elements/code.rb +16 -0
- data/lib/docbook/elements/colophon.rb +22 -0
- data/lib/docbook/elements/computeroutput.rb +18 -0
- data/lib/docbook/elements/copyright.rb +17 -0
- data/lib/docbook/elements/danger.rb +28 -0
- data/lib/docbook/elements/date.rb +16 -0
- data/lib/docbook/elements/dedication.rb +22 -0
- data/lib/docbook/elements/dir.rb +16 -0
- data/lib/docbook/elements/emphasis.rb +18 -0
- data/lib/docbook/elements/entry.rb +30 -0
- data/lib/docbook/elements/entrytbl.rb +22 -0
- data/lib/docbook/elements/equation.rb +26 -0
- data/lib/docbook/elements/example.rb +30 -0
- data/lib/docbook/elements/fieldsynopsis.rb +21 -0
- data/lib/docbook/elements/figure.rb +28 -0
- data/lib/docbook/elements/filename.rb +16 -0
- data/lib/docbook/elements/firstname.rb +16 -0
- data/lib/docbook/elements/firstterm.rb +18 -0
- data/lib/docbook/elements/footnote.rb +22 -0
- data/lib/docbook/elements/footnoteref.rb +21 -0
- data/lib/docbook/elements/foreignphrase.rb +18 -0
- data/lib/docbook/elements/formalpara.rb +20 -0
- data/lib/docbook/elements/function.rb +16 -0
- data/lib/docbook/elements/glossary.rb +24 -0
- data/lib/docbook/elements/glossdef.rb +18 -0
- data/lib/docbook/elements/glossentry.rb +26 -0
- data/lib/docbook/elements/glosssee.rb +18 -0
- data/lib/docbook/elements/glossseealso.rb +18 -0
- data/lib/docbook/elements/glossterm.rb +18 -0
- data/lib/docbook/elements/holder.rb +16 -0
- data/lib/docbook/elements/honorific.rb +16 -0
- data/lib/docbook/elements/imagedata.rb +29 -0
- data/lib/docbook/elements/imageobject.rb +22 -0
- data/lib/docbook/elements/important.rb +30 -0
- data/lib/docbook/elements/index.rb +26 -0
- data/lib/docbook/elements/indexdiv.rb +22 -0
- data/lib/docbook/elements/indexentry.rb +22 -0
- data/lib/docbook/elements/indexterm.rb +34 -0
- data/lib/docbook/elements/info.rb +25 -0
- data/lib/docbook/elements/informalexample.rb +24 -0
- data/lib/docbook/elements/informalfigure.rb +20 -0
- data/lib/docbook/elements/inlinemediaobject.rb +22 -0
- data/lib/docbook/elements/itemizedlist.rb +21 -0
- data/lib/docbook/elements/legalnotice.rb +22 -0
- data/lib/docbook/elements/link.rb +26 -0
- data/lib/docbook/elements/listitem.rb +32 -0
- data/lib/docbook/elements/literal.rb +16 -0
- data/lib/docbook/elements/literallayout.rb +22 -0
- data/lib/docbook/elements/mediaobject.rb +26 -0
- data/lib/docbook/elements/msg.rb +20 -0
- data/lib/docbook/elements/msgexplan.rb +22 -0
- data/lib/docbook/elements/msgset.rb +22 -0
- data/lib/docbook/elements/note.rb +30 -0
- data/lib/docbook/elements/orderedlist.rb +23 -0
- data/lib/docbook/elements/orgname.rb +16 -0
- data/lib/docbook/elements/para.rb +61 -0
- data/lib/docbook/elements/paragraph_like.rb +18 -0
- data/lib/docbook/elements/parameter.rb +16 -0
- data/lib/docbook/elements/part.rb +38 -0
- data/lib/docbook/elements/personname.rb +22 -0
- data/lib/docbook/elements/phrase.rb +20 -0
- data/lib/docbook/elements/preface.rb +58 -0
- data/lib/docbook/elements/primary.rb +16 -0
- data/lib/docbook/elements/procedure.rb +24 -0
- data/lib/docbook/elements/productname.rb +18 -0
- data/lib/docbook/elements/productnumber.rb +16 -0
- data/lib/docbook/elements/programlisting.rb +28 -0
- data/lib/docbook/elements/property.rb +16 -0
- data/lib/docbook/elements/pubdate.rb +16 -0
- data/lib/docbook/elements/publishername.rb +16 -0
- data/lib/docbook/elements/quotation.rb +24 -0
- data/lib/docbook/elements/quote.rb +18 -0
- data/lib/docbook/elements/refentry.rb +32 -0
- data/lib/docbook/elements/refentrytitle.rb +16 -0
- data/lib/docbook/elements/reference.rb +26 -0
- data/lib/docbook/elements/refmeta.rb +29 -0
- data/lib/docbook/elements/refmiscinfo.rb +16 -0
- data/lib/docbook/elements/refname.rb +16 -0
- data/lib/docbook/elements/refnamediv.rb +22 -0
- data/lib/docbook/elements/refpurpose.rb +16 -0
- data/lib/docbook/elements/refsect1.rb +22 -0
- data/lib/docbook/elements/refsect2.rb +22 -0
- data/lib/docbook/elements/refsect3.rb +22 -0
- data/lib/docbook/elements/refsection.rb +32 -0
- data/lib/docbook/elements/releaseinfo.rb +16 -0
- data/lib/docbook/elements/remark.rb +20 -0
- data/lib/docbook/elements/replaceable.rb +16 -0
- data/lib/docbook/elements/row.rb +15 -0
- data/lib/docbook/elements/screen.rb +28 -0
- data/lib/docbook/elements/secondary.rb +16 -0
- data/lib/docbook/elements/sect1.rb +26 -0
- data/lib/docbook/elements/sect2.rb +24 -0
- data/lib/docbook/elements/sect3.rb +24 -0
- data/lib/docbook/elements/sect4.rb +24 -0
- data/lib/docbook/elements/sect5.rb +22 -0
- data/lib/docbook/elements/section.rb +66 -0
- data/lib/docbook/elements/see.rb +16 -0
- data/lib/docbook/elements/seealso.rb +18 -0
- data/lib/docbook/elements/set.rb +26 -0
- data/lib/docbook/elements/setindex.rb +24 -0
- data/lib/docbook/elements/sidebar.rb +22 -0
- data/lib/docbook/elements/simplesect.rb +32 -0
- data/lib/docbook/elements/step.rb +26 -0
- data/lib/docbook/elements/substeps.rb +18 -0
- data/lib/docbook/elements/subtitle.rb +16 -0
- data/lib/docbook/elements/surname.rb +16 -0
- data/lib/docbook/elements/table.rb +24 -0
- data/lib/docbook/elements/tag.rb +20 -0
- data/lib/docbook/elements/tbody.rb +15 -0
- data/lib/docbook/elements/term.rb +37 -0
- data/lib/docbook/elements/tertiary.rb +16 -0
- data/lib/docbook/elements/textobject.rb +18 -0
- data/lib/docbook/elements/tfoot.rb +15 -0
- data/lib/docbook/elements/tgroup.rb +21 -0
- data/lib/docbook/elements/thead.rb +15 -0
- data/lib/docbook/elements/tip.rb +30 -0
- data/lib/docbook/elements/title.rb +16 -0
- data/lib/docbook/elements/toc.rb +24 -0
- data/lib/docbook/elements/tocdiv.rb +22 -0
- data/lib/docbook/elements/tocentry.rb +20 -0
- data/lib/docbook/elements/topic.rb +26 -0
- data/lib/docbook/elements/type.rb +16 -0
- data/lib/docbook/elements/uri.rb +16 -0
- data/lib/docbook/elements/userinput.rb +18 -0
- data/lib/docbook/elements/variable.rb +16 -0
- data/lib/docbook/elements/variablelist.rb +19 -0
- data/lib/docbook/elements/varlistentry.rb +17 -0
- data/lib/docbook/elements/version.rb +16 -0
- data/lib/docbook/elements/videoobject.rb +18 -0
- data/lib/docbook/elements/warning.rb +30 -0
- data/lib/docbook/elements/xref.rb +18 -0
- data/lib/docbook/elements/year.rb +16 -0
- data/lib/docbook/elements.rb +204 -0
- data/lib/docbook/models/document_metadata.rb +30 -0
- data/lib/docbook/models/document_root.rb +33 -0
- data/lib/docbook/models/index_entry.rb +28 -0
- data/lib/docbook/models/reading_position.rb +22 -0
- data/lib/docbook/models/section_number.rb +18 -0
- data/lib/docbook/models/section_root.rb +29 -0
- data/lib/docbook/models/toc_node.rb +24 -0
- data/lib/docbook/models.rb +16 -0
- data/lib/docbook/output/data.rb +196 -0
- data/lib/docbook/output/html.rb +1450 -0
- data/lib/docbook/output/index_generator.rb +281 -0
- data/lib/docbook/output.rb +8 -0
- data/lib/docbook/services/document_builder.rb +258 -0
- data/lib/docbook/services/element_to_hash.rb +287 -0
- data/lib/docbook/services/index_generator.rb +134 -0
- data/lib/docbook/services/numbering_service.rb +186 -0
- data/lib/docbook/services/toc_generator.rb +138 -0
- data/lib/docbook/services.rb +14 -0
- data/lib/docbook/templates/document.html.liquid +20 -0
- data/lib/docbook/templates/partials/_head.liquid +39 -0
- data/lib/docbook/templates/partials/_scripts.liquid +10 -0
- data/lib/docbook/version.rb +5 -0
- data/lib/docbook/xinclude_resolver.rb +217 -0
- data/lib/docbook/xref_resolver.rb +78 -0
- data/lib/docbook.rb +17 -0
- data/sig/docbook.rbs +4 -0
- metadata +385 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Docbook
|
|
5
|
+
module Elements
|
|
6
|
+
class UserInput < Lutaml::Model::Serializable
|
|
7
|
+
attribute :content, :string
|
|
8
|
+
attribute :xml_id, Lutaml::Xml::W3c::XmlIdType
|
|
9
|
+
|
|
10
|
+
xml do
|
|
11
|
+
element "userinput"
|
|
12
|
+
mixed_content
|
|
13
|
+
map_content to: :content
|
|
14
|
+
map_attribute "xml:id", to: :xml_id
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Docbook
|
|
5
|
+
module Elements
|
|
6
|
+
class Variable < Lutaml::Model::Serializable
|
|
7
|
+
attribute :content, :string
|
|
8
|
+
|
|
9
|
+
xml do
|
|
10
|
+
element "variable"
|
|
11
|
+
mixed_content
|
|
12
|
+
map_content to: :content
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Docbook
|
|
5
|
+
module Elements
|
|
6
|
+
class VariableList < Lutaml::Model::Serializable
|
|
7
|
+
attribute :xml_id, Lutaml::Xml::W3c::XmlIdType
|
|
8
|
+
attribute :role, :string
|
|
9
|
+
attribute :varlistentry, Varlistentry, collection: true
|
|
10
|
+
|
|
11
|
+
xml do
|
|
12
|
+
element "variablelist"
|
|
13
|
+
map_attribute "xml:id", to: :xml_id
|
|
14
|
+
map_attribute "role", to: :role
|
|
15
|
+
map_element "varlistentry", to: :varlistentry
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Docbook
|
|
5
|
+
module Elements
|
|
6
|
+
class Varlistentry < Lutaml::Model::Serializable
|
|
7
|
+
attribute :term, Term, collection: true
|
|
8
|
+
attribute :listitem, ListItem
|
|
9
|
+
|
|
10
|
+
xml do
|
|
11
|
+
element "varlistentry"
|
|
12
|
+
map_element "term", to: :term
|
|
13
|
+
map_element "listitem", to: :listitem
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Docbook
|
|
5
|
+
module Elements
|
|
6
|
+
class Version < Lutaml::Model::Serializable
|
|
7
|
+
attribute :content, :string
|
|
8
|
+
|
|
9
|
+
xml do
|
|
10
|
+
element "version"
|
|
11
|
+
mixed_content
|
|
12
|
+
map_content to: :content
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Docbook
|
|
5
|
+
module Elements
|
|
6
|
+
class VideoObject < Lutaml::Model::Serializable
|
|
7
|
+
attribute :content, :string
|
|
8
|
+
attribute :xml_id, Lutaml::Xml::W3c::XmlIdType
|
|
9
|
+
|
|
10
|
+
xml do
|
|
11
|
+
element "videoobject"
|
|
12
|
+
mixed_content
|
|
13
|
+
map_content to: :content
|
|
14
|
+
map_attribute "xml:id", to: :xml_id
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Docbook
|
|
5
|
+
module Elements
|
|
6
|
+
class Warning < Lutaml::Model::Serializable
|
|
7
|
+
attribute :content, :string
|
|
8
|
+
attribute :xml_id, Lutaml::Xml::W3c::XmlIdType
|
|
9
|
+
attribute :role, :string
|
|
10
|
+
attribute :title, Title
|
|
11
|
+
attribute :para, Para, collection: true
|
|
12
|
+
attribute :programlisting, ProgramListing, collection: true
|
|
13
|
+
attribute :screen, Screen, collection: true
|
|
14
|
+
attribute :literallayout, LiteralLayout, collection: true
|
|
15
|
+
|
|
16
|
+
xml do
|
|
17
|
+
element "warning"
|
|
18
|
+
mixed_content
|
|
19
|
+
map_content to: :content
|
|
20
|
+
map_attribute "xml:id", to: :xml_id
|
|
21
|
+
map_attribute "role", to: :role
|
|
22
|
+
map_element "title", to: :title
|
|
23
|
+
map_element "para", to: :para
|
|
24
|
+
map_element "programlisting", to: :programlisting
|
|
25
|
+
map_element "screen", to: :screen
|
|
26
|
+
map_element "literallayout", to: :literallayout
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
module Docbook
|
|
5
|
+
module Elements
|
|
6
|
+
class Xref < Lutaml::Model::Serializable
|
|
7
|
+
attribute :content, :string
|
|
8
|
+
attribute :linkend, :string
|
|
9
|
+
|
|
10
|
+
xml do
|
|
11
|
+
element "xref"
|
|
12
|
+
mixed_content
|
|
13
|
+
map_content to: :content
|
|
14
|
+
map_attribute "linkend", to: :linkend
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Elements
|
|
5
|
+
# Structural elements
|
|
6
|
+
autoload :Article, "#{__dir__}/elements/article"
|
|
7
|
+
autoload :Book, "#{__dir__}/elements/book"
|
|
8
|
+
autoload :Chapter, "#{__dir__}/elements/chapter"
|
|
9
|
+
autoload :Part, "#{__dir__}/elements/part"
|
|
10
|
+
autoload :Section, "#{__dir__}/elements/section"
|
|
11
|
+
autoload :Appendix, "#{__dir__}/elements/appendix"
|
|
12
|
+
autoload :Preface, "#{__dir__}/elements/preface"
|
|
13
|
+
autoload :SetIndex, "#{__dir__}/elements/setindex"
|
|
14
|
+
autoload :RefEntry, "#{__dir__}/elements/refentry"
|
|
15
|
+
autoload :RefSection, "#{__dir__}/elements/refsection"
|
|
16
|
+
autoload :RefSect1, "#{__dir__}/elements/refsect1"
|
|
17
|
+
autoload :RefSect2, "#{__dir__}/elements/refsect2"
|
|
18
|
+
autoload :RefSect3, "#{__dir__}/elements/refsect3"
|
|
19
|
+
autoload :Sect1, "#{__dir__}/elements/sect1"
|
|
20
|
+
autoload :Sect2, "#{__dir__}/elements/sect2"
|
|
21
|
+
autoload :Sect3, "#{__dir__}/elements/sect3"
|
|
22
|
+
autoload :Sect4, "#{__dir__}/elements/sect4"
|
|
23
|
+
autoload :Sect5, "#{__dir__}/elements/sect5"
|
|
24
|
+
autoload :Dedication, "#{__dir__}/elements/dedication"
|
|
25
|
+
autoload :Acknowledgements, "#{__dir__}/elements/acknowledgements"
|
|
26
|
+
autoload :Colophon, "#{__dir__}/elements/colophon"
|
|
27
|
+
autoload :Set, "#{__dir__}/elements/set"
|
|
28
|
+
autoload :Reference, "#{__dir__}/elements/reference"
|
|
29
|
+
autoload :Topic, "#{__dir__}/elements/topic"
|
|
30
|
+
|
|
31
|
+
# Metadata elements
|
|
32
|
+
autoload :Info, "#{__dir__}/elements/info"
|
|
33
|
+
autoload :Title, "#{__dir__}/elements/title"
|
|
34
|
+
autoload :Subtitle, "#{__dir__}/elements/subtitle"
|
|
35
|
+
autoload :Author, "#{__dir__}/elements/author"
|
|
36
|
+
autoload :PersonName, "#{__dir__}/elements/personname"
|
|
37
|
+
autoload :FirstName, "#{__dir__}/elements/firstname"
|
|
38
|
+
autoload :Surname, "#{__dir__}/elements/surname"
|
|
39
|
+
autoload :Honorific, "#{__dir__}/elements/honorific"
|
|
40
|
+
autoload :Copyright, "#{__dir__}/elements/copyright"
|
|
41
|
+
autoload :Year, "#{__dir__}/elements/year"
|
|
42
|
+
autoload :Holder, "#{__dir__}/elements/holder"
|
|
43
|
+
autoload :LegalNotice, "#{__dir__}/elements/legalnotice"
|
|
44
|
+
autoload :ReleaseInfo, "#{__dir__}/elements/releaseinfo"
|
|
45
|
+
autoload :PubDate, "#{__dir__}/elements/pubdate"
|
|
46
|
+
autoload :Date, "#{__dir__}/elements/date"
|
|
47
|
+
autoload :ProductName, "#{__dir__}/elements/productname"
|
|
48
|
+
autoload :ProductNumber, "#{__dir__}/elements/productnumber"
|
|
49
|
+
autoload :Version, "#{__dir__}/elements/version"
|
|
50
|
+
|
|
51
|
+
# Block elements
|
|
52
|
+
autoload :Para, "#{__dir__}/elements/para"
|
|
53
|
+
autoload :FormalPara, "#{__dir__}/elements/formalpara"
|
|
54
|
+
autoload :Simplesect, "#{__dir__}/elements/simplesect"
|
|
55
|
+
autoload :SimPara, "#{__dir__}/elements/paragraph_like"
|
|
56
|
+
|
|
57
|
+
# List elements
|
|
58
|
+
autoload :OrderedList, "#{__dir__}/elements/orderedlist"
|
|
59
|
+
autoload :ItemizedList, "#{__dir__}/elements/itemizedlist"
|
|
60
|
+
autoload :VariableList, "#{__dir__}/elements/variablelist"
|
|
61
|
+
autoload :ListItem, "#{__dir__}/elements/listitem"
|
|
62
|
+
autoload :Varlistentry, "#{__dir__}/elements/varlistentry"
|
|
63
|
+
autoload :Term, "#{__dir__}/elements/term"
|
|
64
|
+
|
|
65
|
+
# Link elements
|
|
66
|
+
autoload :Link, "#{__dir__}/elements/link"
|
|
67
|
+
autoload :Xref, "#{__dir__}/elements/xref"
|
|
68
|
+
autoload :Uri, "#{__dir__}/elements/uri"
|
|
69
|
+
|
|
70
|
+
# Inline elements
|
|
71
|
+
autoload :Emphasis, "#{__dir__}/elements/emphasis"
|
|
72
|
+
autoload :Property, "#{__dir__}/elements/property"
|
|
73
|
+
autoload :Code, "#{__dir__}/elements/code"
|
|
74
|
+
autoload :Literal, "#{__dir__}/elements/literal"
|
|
75
|
+
autoload :Filename, "#{__dir__}/elements/filename"
|
|
76
|
+
autoload :ClassName, "#{__dir__}/elements/classname"
|
|
77
|
+
autoload :Function, "#{__dir__}/elements/function"
|
|
78
|
+
autoload :Parameter, "#{__dir__}/elements/parameter"
|
|
79
|
+
autoload :Variable, "#{__dir__}/elements/variable"
|
|
80
|
+
autoload :Type, "#{__dir__}/elements/type"
|
|
81
|
+
autoload :Tag, "#{__dir__}/elements/tag"
|
|
82
|
+
autoload :Att, "#{__dir__}/elements/att"
|
|
83
|
+
autoload :Quote, "#{__dir__}/elements/quote"
|
|
84
|
+
autoload :Citation, "#{__dir__}/elements/citation"
|
|
85
|
+
autoload :CiterefEntry, "#{__dir__}/elements/citerefentry"
|
|
86
|
+
autoload :Citetitle, "#{__dir__}/elements/citetitle"
|
|
87
|
+
autoload :Abbrev, "#{__dir__}/elements/abbrev"
|
|
88
|
+
autoload :FirstTerm, "#{__dir__}/elements/firstterm"
|
|
89
|
+
autoload :Glossterm, "#{__dir__}/elements/glossterm"
|
|
90
|
+
autoload :ForeignPhrase, "#{__dir__}/elements/foreignphrase"
|
|
91
|
+
autoload :Phrase, "#{__dir__}/elements/phrase"
|
|
92
|
+
autoload :BuildTarget, "#{__dir__}/elements/buildtarget"
|
|
93
|
+
autoload :Dir, "#{__dir__}/elements/dir"
|
|
94
|
+
autoload :Replaceable, "#{__dir__}/elements/replaceable"
|
|
95
|
+
|
|
96
|
+
# Media elements
|
|
97
|
+
autoload :MediaObject, "#{__dir__}/elements/mediaobject"
|
|
98
|
+
autoload :ImageObject, "#{__dir__}/elements/imageobject"
|
|
99
|
+
autoload :ImageData, "#{__dir__}/elements/imagedata"
|
|
100
|
+
autoload :Alt, "#{__dir__}/elements/alt"
|
|
101
|
+
autoload :Figure, "#{__dir__}/elements/figure"
|
|
102
|
+
autoload :InformalFigure, "#{__dir__}/elements/informalfigure"
|
|
103
|
+
autoload :Inlinemediaobject, "#{__dir__}/elements/inlinemediaobject"
|
|
104
|
+
autoload :ProgramListing, "#{__dir__}/elements/programlisting"
|
|
105
|
+
autoload :Screen, "#{__dir__}/elements/screen"
|
|
106
|
+
autoload :ComputerOutput, "#{__dir__}/elements/computeroutput"
|
|
107
|
+
autoload :UserInput, "#{__dir__}/elements/userinput"
|
|
108
|
+
autoload :TextObject, "#{__dir__}/elements/textobject"
|
|
109
|
+
autoload :AudioObject, "#{__dir__}/elements/audioobject"
|
|
110
|
+
autoload :VideoObject, "#{__dir__}/elements/videoobject"
|
|
111
|
+
|
|
112
|
+
# Table elements
|
|
113
|
+
autoload :Table, "#{__dir__}/elements/table"
|
|
114
|
+
autoload :TGroup, "#{__dir__}/elements/tgroup"
|
|
115
|
+
autoload :THead, "#{__dir__}/elements/thead"
|
|
116
|
+
autoload :TBody, "#{__dir__}/elements/tbody"
|
|
117
|
+
autoload :TFoot, "#{__dir__}/elements/tfoot"
|
|
118
|
+
autoload :Row, "#{__dir__}/elements/row"
|
|
119
|
+
autoload :Entry, "#{__dir__}/elements/entry"
|
|
120
|
+
autoload :EntryTbl, "#{__dir__}/elements/entrytbl"
|
|
121
|
+
|
|
122
|
+
# Admonition elements
|
|
123
|
+
autoload :Note, "#{__dir__}/elements/note"
|
|
124
|
+
autoload :Warning, "#{__dir__}/elements/warning"
|
|
125
|
+
autoload :Caution, "#{__dir__}/elements/caution"
|
|
126
|
+
autoload :Important, "#{__dir__}/elements/important"
|
|
127
|
+
autoload :Tip, "#{__dir__}/elements/tip"
|
|
128
|
+
autoload :Danger, "#{__dir__}/elements/danger"
|
|
129
|
+
|
|
130
|
+
# Bibliography elements
|
|
131
|
+
autoload :Bibliography, "#{__dir__}/elements/bibliography"
|
|
132
|
+
autoload :Bibliomixed, "#{__dir__}/elements/bibliomixed"
|
|
133
|
+
autoload :Biblioref, "#{__dir__}/elements/biblioref"
|
|
134
|
+
autoload :OrgName, "#{__dir__}/elements/orgname"
|
|
135
|
+
autoload :PublisherName, "#{__dir__}/elements/publishername"
|
|
136
|
+
|
|
137
|
+
# Glossary elements
|
|
138
|
+
autoload :Glossary, "#{__dir__}/elements/glossary"
|
|
139
|
+
autoload :GlossEntry, "#{__dir__}/elements/glossentry"
|
|
140
|
+
autoload :GlossDef, "#{__dir__}/elements/glossdef"
|
|
141
|
+
autoload :GlossSee, "#{__dir__}/elements/glosssee"
|
|
142
|
+
autoload :GlossSeeAlso, "#{__dir__}/elements/glossseealso"
|
|
143
|
+
|
|
144
|
+
# Index elements
|
|
145
|
+
autoload :Index, "#{__dir__}/elements/index"
|
|
146
|
+
autoload :IndexTerm, "#{__dir__}/elements/indexterm"
|
|
147
|
+
autoload :IndexDiv, "#{__dir__}/elements/indexdiv"
|
|
148
|
+
autoload :IndexEntry, "#{__dir__}/elements/indexentry"
|
|
149
|
+
autoload :Primary, "#{__dir__}/elements/primary"
|
|
150
|
+
autoload :Secondary, "#{__dir__}/elements/secondary"
|
|
151
|
+
autoload :Tertiary, "#{__dir__}/elements/tertiary"
|
|
152
|
+
autoload :See, "#{__dir__}/elements/see"
|
|
153
|
+
autoload :SeeAlso, "#{__dir__}/elements/seealso"
|
|
154
|
+
|
|
155
|
+
# TOC elements
|
|
156
|
+
autoload :Toc, "#{__dir__}/elements/toc"
|
|
157
|
+
autoload :TocDiv, "#{__dir__}/elements/tocdiv"
|
|
158
|
+
autoload :TocEntry, "#{__dir__}/elements/tocentry"
|
|
159
|
+
|
|
160
|
+
# Footnote elements
|
|
161
|
+
autoload :Footnote, "#{__dir__}/elements/footnote"
|
|
162
|
+
autoload :FootnoteRef, "#{__dir__}/elements/footnoteref"
|
|
163
|
+
|
|
164
|
+
# Callout elements
|
|
165
|
+
autoload :Callout, "#{__dir__}/elements/callout"
|
|
166
|
+
autoload :CalloutList, "#{__dir__}/elements/calloutlist"
|
|
167
|
+
|
|
168
|
+
# Example / Equation elements
|
|
169
|
+
autoload :Example, "#{__dir__}/elements/example"
|
|
170
|
+
autoload :InformalExample, "#{__dir__}/elements/informalexample"
|
|
171
|
+
autoload :Equation, "#{__dir__}/elements/equation"
|
|
172
|
+
|
|
173
|
+
# Procedure elements
|
|
174
|
+
autoload :Procedure, "#{__dir__}/elements/procedure"
|
|
175
|
+
autoload :Step, "#{__dir__}/elements/step"
|
|
176
|
+
autoload :SubSteps, "#{__dir__}/elements/substeps"
|
|
177
|
+
|
|
178
|
+
# Sidebar
|
|
179
|
+
autoload :SideBar, "#{__dir__}/elements/sidebar"
|
|
180
|
+
|
|
181
|
+
# Remark
|
|
182
|
+
autoload :Remark, "#{__dir__}/elements/remark"
|
|
183
|
+
|
|
184
|
+
# Other elements
|
|
185
|
+
autoload :BlockQuote, "#{__dir__}/elements/blockquote"
|
|
186
|
+
autoload :Quotation, "#{__dir__}/elements/quotation"
|
|
187
|
+
autoload :Attribution, "#{__dir__}/elements/attribution"
|
|
188
|
+
autoload :MsgSet, "#{__dir__}/elements/msgset"
|
|
189
|
+
autoload :Msg, "#{__dir__}/elements/msg"
|
|
190
|
+
autoload :Msgexplan, "#{__dir__}/elements/msgexplan"
|
|
191
|
+
autoload :LiteralLayout, "#{__dir__}/elements/literallayout"
|
|
192
|
+
autoload :Address, "#{__dir__}/elements/address"
|
|
193
|
+
autoload :Annotation, "#{__dir__}/elements/annotation"
|
|
194
|
+
|
|
195
|
+
# RefEntry elements
|
|
196
|
+
autoload :RefMeta, "#{__dir__}/elements/refmeta"
|
|
197
|
+
autoload :RefNamediv, "#{__dir__}/elements/refnamediv"
|
|
198
|
+
autoload :RefPurpose, "#{__dir__}/elements/refpurpose"
|
|
199
|
+
autoload :RefName, "#{__dir__}/elements/refname"
|
|
200
|
+
autoload :RefEntryTitle, "#{__dir__}/elements/refentrytitle"
|
|
201
|
+
autoload :RefMiscInfo, "#{__dir__}/elements/refmiscinfo"
|
|
202
|
+
autoload :FieldSynopsis, "#{__dir__}/elements/fieldsynopsis"
|
|
203
|
+
end
|
|
204
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Models
|
|
5
|
+
# Document Metadata - document-level information
|
|
6
|
+
class DocumentMetadata < Lutaml::Model::Serializable
|
|
7
|
+
attribute :author, :string
|
|
8
|
+
attribute :author_name, :string
|
|
9
|
+
attribute :title, :string
|
|
10
|
+
attribute :subtitle, :string
|
|
11
|
+
attribute :productname, :string
|
|
12
|
+
attribute :version, :string
|
|
13
|
+
attribute :pubdate, :string
|
|
14
|
+
attribute :release_info, :string
|
|
15
|
+
attribute :abstract, :string
|
|
16
|
+
|
|
17
|
+
json do
|
|
18
|
+
map "author", to: :author
|
|
19
|
+
map "authorName", to: :author_name
|
|
20
|
+
map "title", to: :title
|
|
21
|
+
map "subtitle", to: :subtitle
|
|
22
|
+
map "productname", to: :productname
|
|
23
|
+
map "version", to: :version
|
|
24
|
+
map "pubdate", to: :pubdate
|
|
25
|
+
map "releaseInfo", to: :release_info
|
|
26
|
+
map "abstract", to: :abstract
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Models
|
|
5
|
+
# DocumentRoot - top-level document structure for Vue SPA
|
|
6
|
+
# Combines Lutaml XML models with Ruby-generated pre-computed data
|
|
7
|
+
class DocumentRoot < Lutaml::Model::Serializable
|
|
8
|
+
attribute :title, :string
|
|
9
|
+
attribute :metadata, DocumentMetadata
|
|
10
|
+
attribute :toc, TocNode, collection: true
|
|
11
|
+
attribute :sections, SectionRoot, collection: true
|
|
12
|
+
attribute :index, IndexEntry, collection: true
|
|
13
|
+
attribute :numbering, SectionNumber, collection: true
|
|
14
|
+
attribute :reading_position, ReadingPosition
|
|
15
|
+
|
|
16
|
+
# Version info for debugging
|
|
17
|
+
attribute :generator, :string
|
|
18
|
+
attribute :generated_at, :string
|
|
19
|
+
|
|
20
|
+
json do
|
|
21
|
+
map "title", to: :title
|
|
22
|
+
map "metadata", to: :metadata
|
|
23
|
+
map "toc", to: :toc
|
|
24
|
+
map "sections", to: :sections
|
|
25
|
+
map "index", to: :index
|
|
26
|
+
map "numbering", to: :numbering
|
|
27
|
+
map "readingPosition", to: :reading_position
|
|
28
|
+
map "generator", to: :generator
|
|
29
|
+
map "generatedAt", to: :generated_at
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Models
|
|
5
|
+
# Index Entry - represents a single entry in the generated index
|
|
6
|
+
class IndexEntry < Lutaml::Model::Serializable
|
|
7
|
+
attribute :primary, :string
|
|
8
|
+
attribute :secondary, :string, collection: true
|
|
9
|
+
attribute :tertiary, :string, collection: true
|
|
10
|
+
attribute :see_also, :string, collection: true
|
|
11
|
+
attribute :section_id, :string
|
|
12
|
+
attribute :section_title, :string
|
|
13
|
+
|
|
14
|
+
# Sort key for alphabetical ordering (lowercased, stripped)
|
|
15
|
+
attribute :sort_key, :string
|
|
16
|
+
|
|
17
|
+
json do
|
|
18
|
+
map "primary", to: :primary
|
|
19
|
+
map "secondary", to: :secondary
|
|
20
|
+
map "tertiary", to: :tertiary
|
|
21
|
+
map "seeAlso", to: :see_also
|
|
22
|
+
map "sectionId", to: :section_id
|
|
23
|
+
map "sectionTitle", to: :section_title
|
|
24
|
+
map "sortKey", to: :sort_key
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Models
|
|
5
|
+
# Reading Position - user's reading progress
|
|
6
|
+
class ReadingPosition < Lutaml::Model::Serializable
|
|
7
|
+
attribute :section_id, :string
|
|
8
|
+
attribute :percentage, :float
|
|
9
|
+
attribute :last_read_at, :string
|
|
10
|
+
attribute :reading_mode, :string # scroll, page, chapter, reference
|
|
11
|
+
attribute :scroll_position, :integer
|
|
12
|
+
|
|
13
|
+
json do
|
|
14
|
+
map "sectionId", to: :section_id
|
|
15
|
+
map "percentage", to: :percentage
|
|
16
|
+
map "lastReadAt", to: :last_read_at
|
|
17
|
+
map "readingMode", to: :reading_mode
|
|
18
|
+
map "scrollPosition", to: :scroll_position
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Models
|
|
5
|
+
# Section Number - pre-computed numbering for sections
|
|
6
|
+
class SectionNumber < Lutaml::Model::Serializable
|
|
7
|
+
attribute :id, :string
|
|
8
|
+
attribute :number, :string # "I", "1", "1.2", "A", etc.
|
|
9
|
+
attribute :type, :string # part, chapter, section, appendix, refentry
|
|
10
|
+
|
|
11
|
+
json do
|
|
12
|
+
map "id", to: :id
|
|
13
|
+
map "number", to: :number
|
|
14
|
+
map "type", to: :type
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Models
|
|
5
|
+
# SectionRoot - wraps a section's XML content with pre-computed metadata
|
|
6
|
+
# This combines the Lutaml model with Ruby-generated data (numbering, etc.)
|
|
7
|
+
class SectionRoot < Lutaml::Model::Serializable
|
|
8
|
+
attribute :id, :string
|
|
9
|
+
attribute :type, :string # chapter, section, appendix, part, reference, refentry
|
|
10
|
+
attribute :title, :string
|
|
11
|
+
attribute :number, :string # Pre-computed number like "I", "1.2", "A"
|
|
12
|
+
|
|
13
|
+
# Nested child sections
|
|
14
|
+
attribute :children, SectionRoot, collection: true
|
|
15
|
+
|
|
16
|
+
# For reference entries: the refname
|
|
17
|
+
attribute :refname, :string
|
|
18
|
+
|
|
19
|
+
json do
|
|
20
|
+
map "id", to: :id
|
|
21
|
+
map "type", to: :type
|
|
22
|
+
map "title", to: :title
|
|
23
|
+
map "number", to: :number
|
|
24
|
+
map "children", to: :children
|
|
25
|
+
map "refname", to: :refname
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Models
|
|
5
|
+
# TOC Node - represents a single entry in the table of contents
|
|
6
|
+
class TocNode < Lutaml::Model::Serializable
|
|
7
|
+
attribute :id, :string
|
|
8
|
+
attribute :title, :string
|
|
9
|
+
attribute :type, :string # part, chapter, section, appendix, reference
|
|
10
|
+
attribute :number, :string
|
|
11
|
+
attribute :children, TocNode, collection: true
|
|
12
|
+
attribute :page, :integer # Page number for PDF navigation
|
|
13
|
+
|
|
14
|
+
json do
|
|
15
|
+
map "id", to: :id
|
|
16
|
+
map "title", to: :title
|
|
17
|
+
map "type", to: :type
|
|
18
|
+
map "number", to: :number
|
|
19
|
+
map "children", to: :children
|
|
20
|
+
map "page", to: :page
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Docbook
|
|
4
|
+
module Models
|
|
5
|
+
# Pre-computed models for Vue SPA
|
|
6
|
+
MODELS_DIR = "#{__dir__}/models"
|
|
7
|
+
|
|
8
|
+
autoload :TocNode, "#{MODELS_DIR}/toc_node"
|
|
9
|
+
autoload :IndexEntry, "#{MODELS_DIR}/index_entry"
|
|
10
|
+
autoload :SectionNumber, "#{MODELS_DIR}/section_number"
|
|
11
|
+
autoload :ReadingPosition, "#{MODELS_DIR}/reading_position"
|
|
12
|
+
autoload :DocumentMetadata, "#{MODELS_DIR}/document_metadata"
|
|
13
|
+
autoload :SectionRoot, "#{MODELS_DIR}/section_root"
|
|
14
|
+
autoload :DocumentRoot, "#{MODELS_DIR}/document_root"
|
|
15
|
+
end
|
|
16
|
+
end
|