sts 0.5.2 → 0.5.3
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/.gitmodules +3 -0
- data/.rubocop.yml +3 -0
- data/.rubocop_todo.yml +17 -3
- data/CLAUDE.md +72 -0
- data/Gemfile +1 -1
- data/lib/sts/content_groups/helpers.rb +27 -0
- data/lib/sts/enum_values.rb +17 -0
- data/lib/sts/iso_sts/app.rb +26 -1
- data/lib/sts/iso_sts/app_group.rb +1 -0
- data/lib/sts/iso_sts/array.rb +1 -0
- data/lib/sts/iso_sts/back.rb +1 -0
- data/lib/sts/iso_sts/body.rb +4 -0
- data/lib/sts/iso_sts/bold.rb +23 -11
- data/lib/sts/iso_sts/caption.rb +1 -0
- data/lib/sts/iso_sts/content_groups/highlight_elements.rb +285 -0
- data/lib/sts/iso_sts/def.rb +1 -0
- data/lib/sts/iso_sts/def_item.rb +1 -0
- data/lib/sts/iso_sts/def_list.rb +1 -0
- data/lib/sts/iso_sts/disp_formula.rb +5 -1
- data/lib/sts/iso_sts/document_identification.rb +1 -0
- data/lib/sts/iso_sts/fig.rb +1 -0
- data/lib/sts/iso_sts/fn.rb +1 -0
- data/lib/sts/iso_sts/fn_group.rb +1 -0
- data/lib/sts/iso_sts/front.rb +3 -0
- data/lib/sts/iso_sts/graphic.rb +5 -0
- data/lib/sts/iso_sts/inline_formula.rb +1 -1
- data/lib/sts/iso_sts/iso_meta.rb +2 -1
- data/lib/sts/iso_sts/italic.rb +23 -11
- data/lib/sts/iso_sts/list.rb +1 -0
- data/lib/sts/iso_sts/list_item.rb +7 -4
- data/lib/sts/iso_sts/mathml2/math.rb +20 -18
- data/lib/sts/iso_sts/mixed_citation.rb +34 -10
- data/lib/sts/iso_sts/nat_meta.rb +1 -0
- data/lib/sts/iso_sts/non_normative_example.rb +5 -0
- data/lib/sts/iso_sts/non_normative_note.rb +1 -0
- data/lib/sts/iso_sts/paragraph.rb +32 -20
- data/lib/sts/iso_sts/permissions.rb +1 -0
- data/lib/sts/iso_sts/preformat.rb +8 -5
- data/lib/sts/iso_sts/ref.rb +1 -0
- data/lib/sts/iso_sts/ref_list.rb +1 -0
- data/lib/sts/iso_sts/reg_meta.rb +1 -0
- data/lib/sts/iso_sts/sec.rb +10 -0
- data/lib/sts/iso_sts/standard.rb +6 -0
- data/lib/sts/iso_sts/standard_cross_reference.rb +1 -0
- data/lib/sts/iso_sts/standard_identification.rb +1 -0
- data/lib/sts/iso_sts/std.rb +4 -4
- data/lib/sts/iso_sts/styled_content.rb +17 -15
- data/lib/sts/iso_sts/table.rb +1 -0
- data/lib/sts/iso_sts/table_wrap.rb +1 -0
- data/lib/sts/iso_sts/table_wrap_foot.rb +1 -0
- data/lib/sts/iso_sts/td.rb +32 -14
- data/lib/sts/iso_sts/term.rb +1 -1
- data/lib/sts/iso_sts/term_sec.rb +1 -0
- data/lib/sts/iso_sts/th.rb +32 -14
- data/lib/sts/iso_sts/title.rb +15 -7
- data/lib/sts/iso_sts/title_wrap.rb +1 -0
- data/lib/sts/iso_sts/tr.rb +1 -0
- data/lib/sts/iso_sts.rb +2 -0
- data/lib/sts/{niso_sts/mathml.rb → mathml.rb} +1 -3
- data/lib/sts/namespaces.rb +1 -0
- data/lib/sts/niso_sts/abstract.rb +1 -0
- data/lib/sts/niso_sts/ack.rb +1 -1
- data/lib/sts/niso_sts/address.rb +1 -0
- data/lib/sts/niso_sts/adoption.rb +1 -1
- data/lib/sts/niso_sts/adoption_front.rb +1 -0
- data/lib/sts/niso_sts/alternatives.rb +1 -4
- data/lib/sts/niso_sts/annotation.rb +1 -3
- data/lib/sts/niso_sts/app.rb +14 -1
- data/lib/sts/niso_sts/app_group.rb +5 -0
- data/lib/sts/niso_sts/author_comment.rb +1 -3
- data/lib/sts/niso_sts/author_notes.rb +1 -1
- data/lib/sts/niso_sts/award_group.rb +1 -0
- data/lib/sts/niso_sts/back.rb +5 -4
- data/lib/sts/niso_sts/bio.rb +1 -3
- data/lib/sts/niso_sts/body.rb +36 -0
- data/lib/sts/niso_sts/boxed_text.rb +5 -1
- data/lib/sts/niso_sts/break.rb +11 -0
- data/lib/sts/niso_sts/caption.rb +7 -1
- data/lib/sts/niso_sts/chem_struct_wrap.rb +1 -0
- data/lib/sts/niso_sts/citation_alternatives.rb +1 -0
- data/lib/sts/niso_sts/collab.rb +8 -0
- data/lib/sts/niso_sts/conference.rb +1 -0
- data/lib/sts/niso_sts/content_groups/body_elements.rb +50 -0
- data/lib/sts/niso_sts/content_groups/citation_elements.rb +74 -0
- data/lib/sts/niso_sts/content_groups/emphasized_text.rb +67 -0
- data/lib/sts/niso_sts/content_groups/highlight_elements.rb +51 -0
- data/lib/sts/niso_sts/content_groups/inside_cell.rb +116 -0
- data/lib/sts/niso_sts/content_groups/p_elements.rb +41 -0
- data/lib/sts/niso_sts/content_groups/para_level.rb +67 -0
- data/lib/sts/niso_sts/content_groups/styled_content_elements.rb +93 -0
- data/lib/sts/niso_sts/content_groups/table_group_attributes.rb +62 -0
- data/lib/sts/niso_sts/content_groups.rb +8 -0
- data/lib/sts/niso_sts/contrib.rb +1 -0
- data/lib/sts/niso_sts/contrib_group.rb +1 -0
- data/lib/sts/niso_sts/counts.rb +1 -0
- data/lib/sts/niso_sts/custom_meta.rb +1 -0
- data/lib/sts/niso_sts/date.rb +1 -0
- data/lib/sts/niso_sts/def_item.rb +9 -0
- data/lib/sts/niso_sts/def_list.rb +6 -1
- data/lib/sts/niso_sts/disp_formula_group.rb +3 -4
- data/lib/sts/niso_sts/disp_quote.rb +1 -1
- data/lib/sts/niso_sts/display_formula.rb +12 -0
- data/lib/sts/niso_sts/document_identification.rb +1 -0
- data/lib/sts/niso_sts/editing_instruction.rb +1 -3
- data/lib/sts/niso_sts/element_citation.rb +1 -1
- data/lib/sts/niso_sts/ext_link.rb +16 -2
- data/lib/sts/niso_sts/fig_group.rb +1 -0
- data/lib/sts/niso_sts/figure.rb +14 -1
- data/lib/sts/niso_sts/floats_group.rb +1 -4
- data/lib/sts/niso_sts/fn.rb +2 -1
- data/lib/sts/niso_sts/front.rb +1 -0
- data/lib/sts/niso_sts/funding_group.rb +1 -0
- data/lib/sts/niso_sts/glossary.rb +1 -1
- data/lib/sts/niso_sts/graphic.rb +2 -0
- data/lib/sts/niso_sts/ics.rb +2 -0
- data/lib/sts/niso_sts/index_term.rb +1 -0
- data/lib/sts/niso_sts/inline_formula.rb +11 -0
- data/lib/sts/niso_sts/institution_wrap.rb +1 -0
- data/lib/sts/niso_sts/kwd_group.rb +1 -0
- data/lib/sts/niso_sts/label.rb +3 -2
- data/lib/sts/niso_sts/list.rb +7 -2
- data/lib/sts/niso_sts/list_item.rb +7 -2
- data/lib/sts/niso_sts/media.rb +1 -0
- data/lib/sts/niso_sts/meta_note.rb +1 -1
- data/lib/sts/niso_sts/metadata_iso.rb +1 -1
- data/lib/sts/niso_sts/metadata_std.rb +16 -6
- data/lib/sts/niso_sts/milestone_end.rb +1 -3
- data/lib/sts/niso_sts/milestone_start.rb +1 -3
- data/lib/sts/niso_sts/mixed_citation.rb +22 -0
- data/lib/sts/niso_sts/monospace.rb +9 -0
- data/lib/sts/niso_sts/name.rb +1 -0
- data/lib/sts/niso_sts/nat_meta.rb +1 -0
- data/lib/sts/niso_sts/nested_kwd.rb +1 -0
- data/lib/sts/niso_sts/nlm_citation.rb +1 -1
- data/lib/sts/niso_sts/non_normative_example.rb +15 -2
- data/lib/sts/niso_sts/non_normative_note.rb +12 -2
- data/lib/sts/niso_sts/normative_example.rb +1 -1
- data/lib/sts/niso_sts/normative_note.rb +1 -1
- data/lib/sts/niso_sts/note.rb +1 -1
- data/lib/sts/niso_sts/notes.rb +1 -1
- data/lib/sts/niso_sts/notes_group.rb +1 -0
- data/lib/sts/niso_sts/open_access.rb +1 -4
- data/lib/sts/niso_sts/paragraph.rb +37 -7
- data/lib/sts/niso_sts/permissions.rb +1 -0
- data/lib/sts/niso_sts/preformat.rb +15 -0
- data/lib/sts/niso_sts/private_char.rb +1 -3
- data/lib/sts/niso_sts/pub_date.rb +2 -0
- data/lib/sts/niso_sts/publisher.rb +1 -0
- data/lib/sts/niso_sts/reference.rb +1 -0
- data/lib/sts/niso_sts/reference_list.rb +6 -1
- data/lib/sts/niso_sts/reference_standard.rb +2 -0
- data/lib/sts/niso_sts/reg_meta.rb +1 -0
- data/lib/sts/niso_sts/release_date.rb +9 -6
- data/lib/sts/niso_sts/ruby.rb +1 -0
- data/lib/sts/niso_sts/section.rb +39 -4
- data/lib/sts/niso_sts/speech.rb +1 -1
- data/lib/sts/niso_sts/standard.rb +3 -0
- data/lib/sts/niso_sts/standard_identification.rb +1 -1
- data/lib/sts/niso_sts/statement.rb +1 -1
- data/lib/sts/niso_sts/std_doc_meta.rb +1 -0
- data/lib/sts/niso_sts/std_org.rb +1 -0
- data/lib/sts/niso_sts/styled_content.rb +37 -0
- data/lib/sts/niso_sts/sub.rb +11 -0
- data/lib/sts/niso_sts/subj_group.rb +1 -0
- data/lib/sts/niso_sts/sup.rb +13 -0
- data/lib/sts/niso_sts/supplementary_material.rb +1 -0
- data/lib/sts/niso_sts/term_display.rb +1 -0
- data/lib/sts/niso_sts/term_section.rb +3 -3
- data/lib/sts/niso_sts/title.rb +20 -0
- data/lib/sts/niso_sts/trans_abstract.rb +1 -0
- data/lib/sts/niso_sts/underline.rb +5 -0
- data/lib/sts/niso_sts/uri.rb +2 -0
- data/lib/sts/niso_sts/verse_group.rb +1 -1
- data/lib/sts/niso_sts/volume_issue_group.rb +1 -4
- data/lib/sts/tbx_iso_tml/bold.rb +28 -1
- data/lib/sts/tbx_iso_tml/col.rb +10 -0
- data/lib/sts/tbx_iso_tml/definition.rb +16 -2
- data/lib/sts/tbx_iso_tml/example.rb +9 -1
- data/lib/sts/tbx_iso_tml/fn.rb +3 -2
- data/lib/sts/tbx_iso_tml/italic.rb +25 -1
- data/lib/sts/tbx_iso_tml/msup.rb +2 -1
- data/lib/sts/tbx_iso_tml/note.rb +11 -7
- data/lib/sts/tbx_iso_tml/source.rb +4 -0
- data/lib/sts/tbx_iso_tml/table.rb +1 -0
- data/lib/sts/tbx_iso_tml/table_wrap.rb +3 -0
- data/lib/sts/tbx_iso_tml/table_wrap_foot.rb +1 -0
- data/lib/sts/tbx_iso_tml/tbody.rb +9 -1
- data/lib/sts/tbx_iso_tml/td.rb +22 -8
- data/lib/sts/tbx_iso_tml/term.rb +9 -5
- data/lib/sts/tbx_iso_tml/tfoot.rb +5 -1
- data/lib/sts/tbx_iso_tml/th.rb +27 -6
- data/lib/sts/tbx_iso_tml/thead.rb +9 -1
- data/lib/sts/tbx_iso_tml/tr.rb +16 -0
- data/lib/sts/version.rb +1 -1
- data/lib/sts.rb +10 -0
- metadata +19 -3
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared method to inject body-elements content group into a model class.
|
|
4
|
+
# This is a subset of para_level containing exactly the elements allowed in <body>.
|
|
5
|
+
# Used by Body.
|
|
6
|
+
#
|
|
7
|
+
# Call inside the class body:
|
|
8
|
+
#
|
|
9
|
+
# ContentGroups.body_elements(self)
|
|
10
|
+
#
|
|
11
|
+
# And inside xml do ... end:
|
|
12
|
+
#
|
|
13
|
+
# ContentGroups.body_elements_mappings(self)
|
|
14
|
+
|
|
15
|
+
module Sts
|
|
16
|
+
module NisoSts
|
|
17
|
+
module ContentGroups
|
|
18
|
+
BODY_ELEMENTS = [
|
|
19
|
+
[:sec, "Sts::NisoSts::Section", "sec"],
|
|
20
|
+
[:term_sec, "Sts::NisoSts::TermSection", "term-sec"],
|
|
21
|
+
[:p, "Sts::NisoSts::Paragraph", "p"],
|
|
22
|
+
[:list, "Sts::NisoSts::List", "list"],
|
|
23
|
+
[:def_list, "Sts::NisoSts::DefList", "def-list"],
|
|
24
|
+
[:table_wrap, "Sts::TbxIsoTml::TableWrap", "table-wrap"],
|
|
25
|
+
[:fig, "Sts::NisoSts::Figure", "fig"],
|
|
26
|
+
[:non_normative_note, "Sts::NisoSts::NonNormativeNote",
|
|
27
|
+
"non-normative-note"],
|
|
28
|
+
[:non_normative_example, "Sts::NisoSts::NonNormativeExample",
|
|
29
|
+
"non-normative-example"],
|
|
30
|
+
[:preformat, "Sts::NisoSts::Preformat", "preformat"],
|
|
31
|
+
[:styled_content, "Sts::NisoSts::StyledContent", "styled-content"],
|
|
32
|
+
[:array, "Sts::NisoSts::SectionArray", "array"],
|
|
33
|
+
[:disp_formula, "Sts::NisoSts::DisplayFormula", "disp-formula"],
|
|
34
|
+
[:disp_formula_group, "Sts::NisoSts::DispFormulaGroup",
|
|
35
|
+
"disp-formula-group"],
|
|
36
|
+
[:editing_instruction, "Sts::NisoSts::EditingInstruction",
|
|
37
|
+
"editing-instruction"],
|
|
38
|
+
[:disp_quote, "Sts::NisoSts::DispQuote", "disp-quote"],
|
|
39
|
+
].freeze
|
|
40
|
+
|
|
41
|
+
def self.body_elements(klass)
|
|
42
|
+
inject_elements(klass, BODY_ELEMENTS)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.body_elements_mappings(klass)
|
|
46
|
+
inject_element_mappings(klass, BODY_ELEMENTS)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared method to inject citation-elements content group into a model class.
|
|
4
|
+
# This is the set of child elements shared by ElementCitation and NlmCitation.
|
|
5
|
+
#
|
|
6
|
+
# Call inside the class body:
|
|
7
|
+
#
|
|
8
|
+
# ContentGroups.citation_elements(self)
|
|
9
|
+
#
|
|
10
|
+
# And inside xml do ... end:
|
|
11
|
+
#
|
|
12
|
+
# ContentGroups.citation_elements_mappings(self)
|
|
13
|
+
|
|
14
|
+
module Sts
|
|
15
|
+
module NisoSts
|
|
16
|
+
module ContentGroups
|
|
17
|
+
# 4-tuple: [ruby_name, type_class_name, xml_element_name, collection?]
|
|
18
|
+
CITATION_ELEMENTS = [
|
|
19
|
+
[:publisher, "Sts::NisoSts::Publisher", "publisher", false],
|
|
20
|
+
[:person_group, "Sts::NisoSts::PersonGroup", "person-group", true],
|
|
21
|
+
[:article_title, "Sts::NisoSts::ArticleTitle", "article-title", false],
|
|
22
|
+
[:source, "Sts::NisoSts::Source", "source", false],
|
|
23
|
+
[:trans_source, "Sts::NisoSts::TransSource", "trans-source", false],
|
|
24
|
+
[:chapter_title, "Sts::NisoSts::ChapterTitle", "chapter-title", false],
|
|
25
|
+
[:data_title, "Sts::NisoSts::DataTitle", "data-title", false],
|
|
26
|
+
[:trans_title, "Sts::NisoSts::TransTitle", "trans-title", false],
|
|
27
|
+
[:trans_title_group, "Sts::NisoSts::TransTitleGroup",
|
|
28
|
+
"trans-title-group", false],
|
|
29
|
+
[:edition, "Sts::NisoSts::Edition", "edition", false],
|
|
30
|
+
[:volume, "Sts::NisoSts::Volume", "volume", false],
|
|
31
|
+
[:issue, "Sts::NisoSts::Issue", "issue", false],
|
|
32
|
+
[:pub_id, "Sts::NisoSts::PubId", "pub-id", true],
|
|
33
|
+
[:isbn, "Sts::NisoSts::Isbn", "isbn", false],
|
|
34
|
+
[:issn, "Sts::NisoSts::Issn", "issn", false],
|
|
35
|
+
[:issn_l, "Sts::NisoSts::IssnL", "issn-l", false],
|
|
36
|
+
[:fpage, "Sts::NisoSts::Fpage", "fpage", false],
|
|
37
|
+
[:lpage, "Sts::NisoSts::Lpage", "lpage", false],
|
|
38
|
+
[:page_range, "Sts::NisoSts::PageRange", "page-range", false],
|
|
39
|
+
[:elocation_id, "Sts::NisoSts::ElocationId", "elocation-id", false],
|
|
40
|
+
[:date, "Sts::NisoSts::Date", "date", false],
|
|
41
|
+
[:date_in_citation, "Sts::NisoSts::DateInCitation", "date-in-citation",
|
|
42
|
+
false],
|
|
43
|
+
[:access_date, "Sts::NisoSts::AccessDate", "access-date", false],
|
|
44
|
+
[:time_stamp, "Sts::NisoSts::TimeStamp", "time-stamp", false],
|
|
45
|
+
[:conf_name, "Sts::NisoSts::ConfName", "conf-name", false],
|
|
46
|
+
[:conf_date, "Sts::NisoSts::ConfDate", "conf-date", false],
|
|
47
|
+
[:conf_loc, "Sts::NisoSts::ConfLoc", "conf-loc", false],
|
|
48
|
+
[:conference, "Sts::NisoSts::Conference", "conference", false],
|
|
49
|
+
[:size, "Sts::NisoSts::Size", "size", false],
|
|
50
|
+
[:series, "Sts::NisoSts::Series", "series", false],
|
|
51
|
+
[:series_title, "Sts::NisoSts::SeriesTitle", "series-title", false],
|
|
52
|
+
[:series_text, "Sts::NisoSts::SeriesText", "series-text", false],
|
|
53
|
+
[:comment, "Sts::NisoSts::Comment", "comment", false],
|
|
54
|
+
[:annotation, "Sts::NisoSts::Annotation", "annotation", false],
|
|
55
|
+
[:patent, "Sts::NisoSts::Patent", "patent", false],
|
|
56
|
+
[:gov, "Sts::NisoSts::Gov", "gov", false],
|
|
57
|
+
[:aff, "Sts::NisoSts::Aff", "aff", true],
|
|
58
|
+
[:aff_alternatives, "Sts::NisoSts::AffAlternatives",
|
|
59
|
+
"aff-alternatives", false],
|
|
60
|
+
[:collab, "Sts::NisoSts::Collab", "collab", true],
|
|
61
|
+
[:etal, "Sts::NisoSts::Etal", "etal", false],
|
|
62
|
+
[:ext_link, "Sts::NisoSts::ExtLink", "ext-link", true],
|
|
63
|
+
].freeze
|
|
64
|
+
|
|
65
|
+
def self.citation_elements(klass)
|
|
66
|
+
inject_elements(klass, CITATION_ELEMENTS)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def self.citation_elements_mappings(klass)
|
|
70
|
+
inject_element_mappings(klass, CITATION_ELEMENTS)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "../../content_groups/helpers"
|
|
4
|
+
|
|
5
|
+
# Shared method to inject emphasized-text XSD content group into a model class.
|
|
6
|
+
# Call inside the class body (not inside xml do ... end):
|
|
7
|
+
#
|
|
8
|
+
# class MyElement < Lutaml::Model::Serializable
|
|
9
|
+
# Sts::NisoSts::ContentGroups.emphasized_text(self)
|
|
10
|
+
# ...
|
|
11
|
+
# end
|
|
12
|
+
#
|
|
13
|
+
# And inside xml do ... end:
|
|
14
|
+
#
|
|
15
|
+
# Sts::NisoSts::ContentGroups.emphasized_text_mappings(self)
|
|
16
|
+
#
|
|
17
|
+
module Sts
|
|
18
|
+
module NisoSts
|
|
19
|
+
module ContentGroups
|
|
20
|
+
extend ::Sts::ContentGroups::Helpers
|
|
21
|
+
|
|
22
|
+
# [ruby_name, type_class_name, xml_element_name]
|
|
23
|
+
EMPHASIZED_TEXT_ELEMENTS = [
|
|
24
|
+
[:bold, "Sts::TbxIsoTml::Bold", "bold"],
|
|
25
|
+
[:italic, "Sts::TbxIsoTml::Italic", "italic"],
|
|
26
|
+
[:monospace, "Sts::NisoSts::Monospace", "monospace"],
|
|
27
|
+
[:overline, "Sts::NisoSts::Overline", "overline"],
|
|
28
|
+
[:roman, "Sts::NisoSts::Roman", "roman"],
|
|
29
|
+
[:sans_serif, "Sts::NisoSts::SansSerif", "sans-serif"],
|
|
30
|
+
[:sc, "Sts::NisoSts::Sc", "sc"],
|
|
31
|
+
[:strike, "Sts::NisoSts::Strike", "strike"],
|
|
32
|
+
[:underline, "Sts::NisoSts::Underline", "underline"],
|
|
33
|
+
[:ruby, "Sts::NisoSts::Ruby", "ruby"],
|
|
34
|
+
[:sub, "Sts::NisoSts::Sub", "sub"],
|
|
35
|
+
[:sup, "Sts::NisoSts::Sup", "sup"],
|
|
36
|
+
[:styled_content, "Sts::NisoSts::StyledContent", "styled-content"],
|
|
37
|
+
[:named_content, "Sts::NisoSts::NamedContent", "named-content"],
|
|
38
|
+
[:target, "Sts::NisoSts::Target", "target"],
|
|
39
|
+
[:fn, "Sts::NisoSts::Fn", "fn"],
|
|
40
|
+
[:xref, "Sts::TbxIsoTml::Xref", "xref"],
|
|
41
|
+
[:ext_link, "Sts::NisoSts::ExtLink", "ext-link"],
|
|
42
|
+
[:uri, "Sts::NisoSts::Uri", "uri"],
|
|
43
|
+
[:email, "Sts::NisoSts::Email", "email"],
|
|
44
|
+
[:inline_graphic, "Sts::NisoSts::InlineGraphic", "inline-graphic"],
|
|
45
|
+
[:private_char, "Sts::NisoSts::PrivateChar", "private-char"],
|
|
46
|
+
[:inline_formula, "Sts::NisoSts::InlineFormula", "inline-formula"],
|
|
47
|
+
[:chem_struct, "Sts::NisoSts::ChemStruct", "chem-struct"],
|
|
48
|
+
[:tex_math, "Sts::NisoSts::TexMath", "tex-math"],
|
|
49
|
+
[:math, "Sts::TbxIsoTml::Math", "math"],
|
|
50
|
+
[:std, "Sts::NisoSts::ReferenceStandard", "std"],
|
|
51
|
+
[:std_ref, "Sts::NisoSts::StandardRef", "std-ref"],
|
|
52
|
+
[:related_article, "Sts::NisoSts::RelatedArticle", "related-article"],
|
|
53
|
+
[:related_object, "Sts::NisoSts::RelatedObject", "related-object"],
|
|
54
|
+
[:inline_supplementary_material,
|
|
55
|
+
"Sts::NisoSts::InlineSupplementaryMaterial", "inline-supplementary-material"],
|
|
56
|
+
].freeze
|
|
57
|
+
|
|
58
|
+
def self.emphasized_text(klass)
|
|
59
|
+
inject_elements(klass, EMPHASIZED_TEXT_ELEMENTS)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def self.emphasized_text_mappings(klass)
|
|
63
|
+
inject_element_mappings(klass, EMPHASIZED_TEXT_ELEMENTS)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared method to inject highlight-elements XSD content group into a model class.
|
|
4
|
+
# This is the set of child elements shared by Bold and Italic (excluding their
|
|
5
|
+
# self-referencing attribute, which each model declares separately).
|
|
6
|
+
#
|
|
7
|
+
# Call inside the class body:
|
|
8
|
+
#
|
|
9
|
+
# ContentGroups.highlight_elements(self)
|
|
10
|
+
#
|
|
11
|
+
# And inside xml do ... end:
|
|
12
|
+
#
|
|
13
|
+
# ContentGroups.highlight_elements_mappings(self)
|
|
14
|
+
|
|
15
|
+
module Sts
|
|
16
|
+
module NisoSts
|
|
17
|
+
module ContentGroups
|
|
18
|
+
HIGHLIGHT_ELEMENTS = [
|
|
19
|
+
[:sub, "Sts::NisoSts::Sub", "sub"],
|
|
20
|
+
[:sup, "Sts::NisoSts::Sup", "sup"],
|
|
21
|
+
[:monospace, "Sts::NisoSts::Monospace", "monospace"],
|
|
22
|
+
[:sc, "Sts::NisoSts::Sc", "sc"],
|
|
23
|
+
[:std_ref, "Sts::NisoSts::StandardRef", "std-ref"],
|
|
24
|
+
[:underline, "Sts::NisoSts::Underline", "underline"],
|
|
25
|
+
[:strike, "Sts::NisoSts::Strike", "strike"],
|
|
26
|
+
[:xref, "Sts::TbxIsoTml::Xref", "xref"],
|
|
27
|
+
[:ext_link, "Sts::NisoSts::ExtLink", "ext-link"],
|
|
28
|
+
[:fn, "Sts::NisoSts::Fn", "fn"],
|
|
29
|
+
[:styled_content, "Sts::NisoSts::StyledContent", "styled-content"],
|
|
30
|
+
[:array, "Sts::NisoSts::SectionArray", "array"],
|
|
31
|
+
[:break, "Sts::TbxIsoTml::TableBreak", "break"],
|
|
32
|
+
[:target, "Sts::NisoSts::Target", "target"],
|
|
33
|
+
[:overline, "Sts::NisoSts::Overline", "overline"],
|
|
34
|
+
[:roman, "Sts::NisoSts::Roman", "roman"],
|
|
35
|
+
[:sans_serif, "Sts::NisoSts::SansSerif", "sans-serif"],
|
|
36
|
+
[:ruby, "Sts::NisoSts::Ruby", "ruby"],
|
|
37
|
+
[:named_content, "Sts::NisoSts::NamedContent", "named-content"],
|
|
38
|
+
[:uri, "Sts::NisoSts::Uri", "uri"],
|
|
39
|
+
[:inline_formula, "Sts::NisoSts::InlineFormula", "inline-formula"],
|
|
40
|
+
].freeze
|
|
41
|
+
|
|
42
|
+
def self.highlight_elements(klass)
|
|
43
|
+
inject_elements(klass, HIGHLIGHT_ELEMENTS)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def self.highlight_elements_mappings(klass)
|
|
47
|
+
inject_element_mappings(klass, HIGHLIGHT_ELEMENTS)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared method to inject inside-cell XSD content group into a model class.
|
|
4
|
+
# This content group represents the elements allowed inside <td> and <th>.
|
|
5
|
+
#
|
|
6
|
+
# Call inside the class body:
|
|
7
|
+
#
|
|
8
|
+
# ContentGroups.inside_cell(self)
|
|
9
|
+
#
|
|
10
|
+
# And inside xml do ... end:
|
|
11
|
+
#
|
|
12
|
+
# ContentGroups.inside_cell_mappings(self)
|
|
13
|
+
|
|
14
|
+
module Sts
|
|
15
|
+
module NisoSts
|
|
16
|
+
module ContentGroups
|
|
17
|
+
INSIDE_CELL_ELEMENTS = [
|
|
18
|
+
[:bold, "Sts::TbxIsoTml::Bold", "bold"],
|
|
19
|
+
[:italic, "Sts::TbxIsoTml::Italic", "italic"],
|
|
20
|
+
[:xref, "Sts::TbxIsoTml::Xref", "xref"],
|
|
21
|
+
[:std, "Sts::NisoSts::ReferenceStandard", "std"],
|
|
22
|
+
[:list, "Sts::NisoSts::List", "list"],
|
|
23
|
+
[:inline_formula, "Sts::NisoSts::InlineFormula", "inline-formula"],
|
|
24
|
+
[:non_normative_note, "Sts::NisoSts::NonNormativeNote",
|
|
25
|
+
"non-normative-note"],
|
|
26
|
+
[:non_normative_example, "Sts::NisoSts::NonNormativeExample",
|
|
27
|
+
"non-normative-example"],
|
|
28
|
+
[:normative_note, "Sts::NisoSts::NormativeNote", "normative-note"],
|
|
29
|
+
[:normative_example, "Sts::NisoSts::NormativeExample",
|
|
30
|
+
"normative-example"],
|
|
31
|
+
[:notes_group, "Sts::NisoSts::NotesGroup", "notes-group"],
|
|
32
|
+
[:graphic, "Sts::NisoSts::Graphic", "graphic"],
|
|
33
|
+
[:def_list, "Sts::NisoSts::DefList", "def-list"],
|
|
34
|
+
[:p, "Sts::NisoSts::Paragraph", "p"],
|
|
35
|
+
[:fn, "Sts::TbxIsoTml::Fn", "fn"],
|
|
36
|
+
[:styled_content, "Sts::NisoSts::StyledContent", "styled-content"],
|
|
37
|
+
[:monospace, "Sts::NisoSts::Monospace", "monospace"],
|
|
38
|
+
[:underline, "Sts::NisoSts::Underline", "underline"],
|
|
39
|
+
[:sup, "Sts::NisoSts::Sup", "sup"],
|
|
40
|
+
[:sub, "Sts::NisoSts::Sub", "sub"],
|
|
41
|
+
[:break, "Sts::TbxIsoTml::TableBreak", "break"],
|
|
42
|
+
[:array, "Sts::NisoSts::SectionArray", "array"],
|
|
43
|
+
[:fig, "Sts::NisoSts::Figure", "fig"],
|
|
44
|
+
[:fig_group, "Sts::NisoSts::FigGroup", "fig-group"],
|
|
45
|
+
[:media, "Sts::NisoSts::Media", "media"],
|
|
46
|
+
[:disp_formula, "Sts::NisoSts::DisplayFormula", "disp-formula"],
|
|
47
|
+
[:disp_formula_group, "Sts::NisoSts::DispFormulaGroup",
|
|
48
|
+
"disp-formula-group"],
|
|
49
|
+
[:math, "Sts::TbxIsoTml::Math", "math"],
|
|
50
|
+
[:tex_math, "Sts::NisoSts::TexMath", "tex-math"],
|
|
51
|
+
[:chem_struct, "Sts::NisoSts::ChemStruct", "chem-struct"],
|
|
52
|
+
[:ext_link, "Sts::NisoSts::ExtLink", "ext-link"],
|
|
53
|
+
[:uri, "Sts::NisoSts::Uri", "uri"],
|
|
54
|
+
[:email, "Sts::NisoSts::Email", "email"],
|
|
55
|
+
[:sc, "Sts::NisoSts::Sc", "sc"],
|
|
56
|
+
[:overline, "Sts::NisoSts::Overline", "overline"],
|
|
57
|
+
[:roman, "Sts::NisoSts::Roman", "roman"],
|
|
58
|
+
[:sans_serif, "Sts::NisoSts::SansSerif", "sans-serif"],
|
|
59
|
+
[:strike, "Sts::NisoSts::Strike", "strike"],
|
|
60
|
+
[:ruby, "Sts::NisoSts::Ruby", "ruby"],
|
|
61
|
+
[:named_content, "Sts::NisoSts::NamedContent", "named-content"],
|
|
62
|
+
[:target, "Sts::NisoSts::Target", "target"],
|
|
63
|
+
[:entailed_term, "Sts::TbxIsoTml::EntailedTerm", "entailedTerm"],
|
|
64
|
+
[:inline_graphic, "Sts::NisoSts::InlineGraphic", "inline-graphic"],
|
|
65
|
+
[:private_char, "Sts::NisoSts::PrivateChar", "private-char"],
|
|
66
|
+
[:preformat, "Sts::NisoSts::Preformat", "preformat"],
|
|
67
|
+
[:alternatives, "Sts::NisoSts::Alternatives", "alternatives"],
|
|
68
|
+
[:address, "Sts::NisoSts::Address", "address"],
|
|
69
|
+
[:related_article, "Sts::NisoSts::RelatedArticle", "related-article"],
|
|
70
|
+
[:related_object, "Sts::NisoSts::RelatedObject", "related-object"],
|
|
71
|
+
[:index_term, "Sts::NisoSts::IndexTerm", "index-term"],
|
|
72
|
+
[:milestone_end, "Sts::NisoSts::MilestoneEnd", "milestone-end"],
|
|
73
|
+
[:milestone_start, "Sts::NisoSts::MilestoneStart", "milestone-start"],
|
|
74
|
+
].freeze
|
|
75
|
+
|
|
76
|
+
def self.inside_cell(klass)
|
|
77
|
+
inject_elements(klass, INSIDE_CELL_ELEMENTS)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def self.inside_cell_mappings(klass)
|
|
81
|
+
inject_element_mappings(klass, INSIDE_CELL_ELEMENTS)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
INSIDE_CELL_ATTRIBUTES = %i[id content_type style abbr axis headers scope
|
|
85
|
+
rowspan colspan align char charoff valign].freeze
|
|
86
|
+
INSIDE_CELL_ATTR_XML = {
|
|
87
|
+
id: "id", content_type: "content-type", style: "style",
|
|
88
|
+
abbr: "abbr", axis: "axis", headers: "headers", scope: "scope",
|
|
89
|
+
rowspan: "rowspan", colspan: "colspan", align: "align",
|
|
90
|
+
char: "char", charoff: "charoff", valign: "valign"
|
|
91
|
+
}.freeze
|
|
92
|
+
|
|
93
|
+
def self.inside_cell_attributes(klass)
|
|
94
|
+
INSIDE_CELL_ATTRIBUTES.each do |name|
|
|
95
|
+
opts = case name
|
|
96
|
+
when :align then { values: EnumValues::ALIGN }
|
|
97
|
+
when :valign then { values: EnumValues::VALIGN }
|
|
98
|
+
when :scope then { values: EnumValues::SCOPE }
|
|
99
|
+
else {}
|
|
100
|
+
end
|
|
101
|
+
klass.attribute name, :string, **opts
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def self.inside_cell_attribute_mappings(klass, char_value_map: false)
|
|
106
|
+
INSIDE_CELL_ATTR_XML.each do |name, xml_name|
|
|
107
|
+
opts = {}
|
|
108
|
+
if char_value_map && name == :char
|
|
109
|
+
opts[:value_map] = { to: { empty: :empty } }
|
|
110
|
+
end
|
|
111
|
+
klass.map_attribute xml_name, to: name, **opts
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared method to inject p-elements XSD content group into a model class.
|
|
4
|
+
# Extends styled_content_elements with citation and funding elements.
|
|
5
|
+
# Used by Paragraph.
|
|
6
|
+
#
|
|
7
|
+
# Call inside the class body:
|
|
8
|
+
#
|
|
9
|
+
# ContentGroups.p_elements(self)
|
|
10
|
+
#
|
|
11
|
+
# And inside xml do ... end:
|
|
12
|
+
#
|
|
13
|
+
# ContentGroups.p_elements_mappings(self)
|
|
14
|
+
|
|
15
|
+
module Sts
|
|
16
|
+
module NisoSts
|
|
17
|
+
module ContentGroups
|
|
18
|
+
P_ELEMENTS_EXTRA = [
|
|
19
|
+
[:ref_list, "Sts::NisoSts::ReferenceList", "ref-list"],
|
|
20
|
+
[:citation_alternatives, "Sts::NisoSts::CitationAlternatives",
|
|
21
|
+
"citation-alternatives"],
|
|
22
|
+
[:element_citation, "Sts::NisoSts::ElementCitation",
|
|
23
|
+
"element-citation"],
|
|
24
|
+
[:mixed_citation, "Sts::NisoSts::MixedCitation", "mixed-citation"],
|
|
25
|
+
[:award_id, "Sts::NisoSts::AwardId", "award-id"],
|
|
26
|
+
[:funding_source, "Sts::NisoSts::FundingSource", "funding-source"],
|
|
27
|
+
[:open_access, "Sts::NisoSts::OpenAccess", "open-access"],
|
|
28
|
+
].freeze
|
|
29
|
+
|
|
30
|
+
def self.p_elements(klass)
|
|
31
|
+
styled_content_elements(klass)
|
|
32
|
+
inject_elements(klass, P_ELEMENTS_EXTRA)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def self.p_elements_mappings(klass)
|
|
36
|
+
styled_content_elements_mappings(klass)
|
|
37
|
+
inject_element_mappings(klass, P_ELEMENTS_EXTRA)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared method to inject para-level XSD content group into a model class.
|
|
4
|
+
# This content group represents the common block-level elements shared by
|
|
5
|
+
# Section, App, NonNormativeNote, NonNormativeExample, NormativeNote,
|
|
6
|
+
# NormativeExample, BoxedText, DispQuote, and Glossary.
|
|
7
|
+
#
|
|
8
|
+
# Call inside the class body:
|
|
9
|
+
#
|
|
10
|
+
# ContentGroups.para_level(self)
|
|
11
|
+
#
|
|
12
|
+
# And inside xml do ... end:
|
|
13
|
+
#
|
|
14
|
+
# ContentGroups.para_level_mappings(self)
|
|
15
|
+
|
|
16
|
+
module Sts
|
|
17
|
+
module NisoSts
|
|
18
|
+
module ContentGroups
|
|
19
|
+
PARA_LEVEL_ELEMENTS = [
|
|
20
|
+
[:p, "Sts::NisoSts::Paragraph", "p"],
|
|
21
|
+
[:array, "Sts::NisoSts::SectionArray", "array"],
|
|
22
|
+
[:list, "Sts::NisoSts::List", "list"],
|
|
23
|
+
[:def_list, "Sts::NisoSts::DefList", "def-list"],
|
|
24
|
+
[:preformat, "Sts::NisoSts::Preformat", "preformat"],
|
|
25
|
+
[:fig, "Sts::NisoSts::Figure", "fig"],
|
|
26
|
+
[:fig_group, "Sts::NisoSts::FigGroup", "fig-group"],
|
|
27
|
+
[:graphic, "Sts::NisoSts::Graphic", "graphic"],
|
|
28
|
+
[:media, "Sts::NisoSts::Media", "media"],
|
|
29
|
+
[:table_wrap, "Sts::TbxIsoTml::TableWrap", "table-wrap"],
|
|
30
|
+
[:disp_formula, "Sts::NisoSts::DisplayFormula", "disp-formula"],
|
|
31
|
+
[:disp_formula_group, "Sts::NisoSts::DispFormulaGroup",
|
|
32
|
+
"disp-formula-group"],
|
|
33
|
+
[:disp_quote, "Sts::NisoSts::DispQuote", "disp-quote"],
|
|
34
|
+
[:chem_struct_wrap, "Sts::NisoSts::ChemStructWrap", "chem-struct-wrap"],
|
|
35
|
+
[:supplementary_material, "Sts::NisoSts::SupplementaryMaterial",
|
|
36
|
+
"supplementary-material"],
|
|
37
|
+
[:editing_instruction, "Sts::NisoSts::EditingInstruction",
|
|
38
|
+
"editing-instruction"],
|
|
39
|
+
[:address, "Sts::NisoSts::Address", "address"],
|
|
40
|
+
[:alternatives, "Sts::NisoSts::Alternatives", "alternatives"],
|
|
41
|
+
[:non_normative_note, "Sts::NisoSts::NonNormativeNote",
|
|
42
|
+
"non-normative-note"],
|
|
43
|
+
[:non_normative_example, "Sts::NisoSts::NonNormativeExample",
|
|
44
|
+
"non-normative-example"],
|
|
45
|
+
[:normative_note, "Sts::NisoSts::NormativeNote", "normative-note"],
|
|
46
|
+
[:normative_example, "Sts::NisoSts::NormativeExample",
|
|
47
|
+
"normative-example"],
|
|
48
|
+
[:notes_group, "Sts::NisoSts::NotesGroup", "notes-group"],
|
|
49
|
+
[:related_article, "Sts::NisoSts::RelatedArticle", "related-article"],
|
|
50
|
+
[:related_object, "Sts::NisoSts::RelatedObject", "related-object"],
|
|
51
|
+
[:speech, "Sts::NisoSts::Speech", "speech"],
|
|
52
|
+
[:statement, "Sts::NisoSts::Statement", "statement"],
|
|
53
|
+
[:verse_group, "Sts::NisoSts::VerseGroup", "verse-group"],
|
|
54
|
+
[:math, "Sts::TbxIsoTml::Math", "math"],
|
|
55
|
+
[:tex_math, "Sts::NisoSts::TexMath", "tex-math"],
|
|
56
|
+
].freeze
|
|
57
|
+
|
|
58
|
+
def self.para_level(klass)
|
|
59
|
+
inject_elements(klass, PARA_LEVEL_ELEMENTS)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def self.para_level_mappings(klass)
|
|
63
|
+
inject_element_mappings(klass, PARA_LEVEL_ELEMENTS)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared method to inject styled-content-elements XSD content group into a model class.
|
|
4
|
+
# This is the largest content group, used by StyledContent and extended by p_elements.
|
|
5
|
+
#
|
|
6
|
+
# Call inside the class body:
|
|
7
|
+
#
|
|
8
|
+
# ContentGroups.styled_content_elements(self)
|
|
9
|
+
#
|
|
10
|
+
# And inside xml do ... end:
|
|
11
|
+
#
|
|
12
|
+
# ContentGroups.styled_content_elements_mappings(self)
|
|
13
|
+
|
|
14
|
+
module Sts
|
|
15
|
+
module NisoSts
|
|
16
|
+
module ContentGroups
|
|
17
|
+
STYLED_CONTENT_ELEMENTS = [
|
|
18
|
+
[:bold, "Sts::TbxIsoTml::Bold", "bold"],
|
|
19
|
+
[:italic, "Sts::TbxIsoTml::Italic", "italic"],
|
|
20
|
+
[:sub, "Sts::NisoSts::Sub", "sub"],
|
|
21
|
+
[:sup, "Sts::NisoSts::Sup", "sup"],
|
|
22
|
+
[:sc, "Sts::NisoSts::Sc", "sc"],
|
|
23
|
+
[:monospace, "Sts::NisoSts::Monospace", "monospace"],
|
|
24
|
+
[:underline, "Sts::NisoSts::Underline", "underline"],
|
|
25
|
+
[:overline, "Sts::NisoSts::Overline", "overline"],
|
|
26
|
+
[:roman, "Sts::NisoSts::Roman", "roman"],
|
|
27
|
+
[:sans_serif, "Sts::NisoSts::SansSerif", "sans-serif"],
|
|
28
|
+
[:strike, "Sts::NisoSts::Strike", "strike"],
|
|
29
|
+
[:xref, "Sts::TbxIsoTml::Xref", "xref"],
|
|
30
|
+
[:ext_link, "Sts::NisoSts::ExtLink", "ext-link"],
|
|
31
|
+
[:uri, "Sts::NisoSts::Uri", "uri"],
|
|
32
|
+
[:fn, "Sts::NisoSts::Fn", "fn"],
|
|
33
|
+
[:inline_formula, "Sts::NisoSts::InlineFormula", "inline-formula"],
|
|
34
|
+
[:break, "Sts::NisoSts::Break", "break"],
|
|
35
|
+
[:target, "Sts::NisoSts::Target", "target"],
|
|
36
|
+
[:named_content, "Sts::NisoSts::NamedContent", "named-content"],
|
|
37
|
+
[:styled_content, "Sts::NisoSts::StyledContent", "styled-content"],
|
|
38
|
+
[:array, "Sts::NisoSts::SectionArray", "array"],
|
|
39
|
+
[:std, "Sts::NisoSts::ReferenceStandard", "std"],
|
|
40
|
+
[:graphic, "Sts::NisoSts::Graphic", "graphic"],
|
|
41
|
+
[:inline_graphic, "Sts::NisoSts::InlineGraphic", "inline-graphic"],
|
|
42
|
+
[:private_char, "Sts::NisoSts::PrivateChar", "private-char"],
|
|
43
|
+
[:preformat, "Sts::NisoSts::Preformat", "preformat"],
|
|
44
|
+
[:fig, "Sts::NisoSts::Figure", "fig"],
|
|
45
|
+
[:fig_group, "Sts::NisoSts::FigGroup", "fig-group"],
|
|
46
|
+
[:media, "Sts::NisoSts::Media", "media"],
|
|
47
|
+
[:table_wrap, "Sts::TbxIsoTml::TableWrap", "table-wrap"],
|
|
48
|
+
[:boxed_text, "Sts::NisoSts::BoxedText", "boxed-text"],
|
|
49
|
+
[:chem_struct_wrap, "Sts::NisoSts::ChemStructWrap", "chem-struct-wrap"],
|
|
50
|
+
[:chem_struct, "Sts::NisoSts::ChemStruct", "chem-struct"],
|
|
51
|
+
[:list, "Sts::NisoSts::List", "list"],
|
|
52
|
+
[:def_list, "Sts::NisoSts::DefList", "def-list"],
|
|
53
|
+
[:disp_formula, "Sts::NisoSts::DisplayFormula", "disp-formula"],
|
|
54
|
+
[:disp_formula_group, "Sts::NisoSts::DispFormulaGroup",
|
|
55
|
+
"disp-formula-group"],
|
|
56
|
+
[:disp_quote, "Sts::NisoSts::DispQuote", "disp-quote"],
|
|
57
|
+
[:speech, "Sts::NisoSts::Speech", "speech"],
|
|
58
|
+
[:statement, "Sts::NisoSts::Statement", "statement"],
|
|
59
|
+
[:verse_group, "Sts::NisoSts::VerseGroup", "verse-group"],
|
|
60
|
+
[:non_normative_note, "Sts::NisoSts::NonNormativeNote",
|
|
61
|
+
"non-normative-note"],
|
|
62
|
+
[:non_normative_example, "Sts::NisoSts::NonNormativeExample",
|
|
63
|
+
"non-normative-example"],
|
|
64
|
+
[:normative_note, "Sts::NisoSts::NormativeNote", "normative-note"],
|
|
65
|
+
[:normative_example, "Sts::NisoSts::NormativeExample",
|
|
66
|
+
"normative-example"],
|
|
67
|
+
[:notes_group, "Sts::NisoSts::NotesGroup", "notes-group"],
|
|
68
|
+
[:supplementary_material, "Sts::NisoSts::SupplementaryMaterial",
|
|
69
|
+
"supplementary-material"],
|
|
70
|
+
[:address, "Sts::NisoSts::Address", "address"],
|
|
71
|
+
[:alternatives, "Sts::NisoSts::Alternatives", "alternatives"],
|
|
72
|
+
[:related_article, "Sts::NisoSts::RelatedArticle", "related-article"],
|
|
73
|
+
[:related_object, "Sts::NisoSts::RelatedObject", "related-object"],
|
|
74
|
+
[:math, "Sts::TbxIsoTml::Math", "math"],
|
|
75
|
+
[:tex_math, "Sts::NisoSts::TexMath", "tex-math"],
|
|
76
|
+
[:ruby, "Sts::NisoSts::Ruby", "ruby"],
|
|
77
|
+
[:email, "Sts::NisoSts::Email", "email"],
|
|
78
|
+
[:entailed_term, "Sts::TbxIsoTml::EntailedTerm", "entailedTerm"],
|
|
79
|
+
[:index_term, "Sts::NisoSts::IndexTerm", "index-term"],
|
|
80
|
+
[:milestone_end, "Sts::NisoSts::MilestoneEnd", "milestone-end"],
|
|
81
|
+
[:milestone_start, "Sts::NisoSts::MilestoneStart", "milestone-start"],
|
|
82
|
+
].freeze
|
|
83
|
+
|
|
84
|
+
def self.styled_content_elements(klass)
|
|
85
|
+
inject_elements(klass, STYLED_CONTENT_ELEMENTS)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def self.styled_content_elements_mappings(klass)
|
|
89
|
+
inject_element_mappings(klass, STYLED_CONTENT_ELEMENTS)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared method to inject table group attributes (id, content_type, style,
|
|
4
|
+
# align, char, charoff, valign) into table row/column models.
|
|
5
|
+
# Used by Thead, Tbody, Tfoot, Tr, Col, Colgroup in both NisoSts and IsoSts/TbxIsoTml.
|
|
6
|
+
#
|
|
7
|
+
# Call inside the class body:
|
|
8
|
+
#
|
|
9
|
+
# ContentGroups.table_group_attributes(self)
|
|
10
|
+
#
|
|
11
|
+
# And inside xml do ... end:
|
|
12
|
+
#
|
|
13
|
+
# ContentGroups.table_group_attribute_mappings(self, char_value_map: true)
|
|
14
|
+
|
|
15
|
+
module Sts
|
|
16
|
+
module NisoSts
|
|
17
|
+
module ContentGroups
|
|
18
|
+
TABLE_GROUP_ATTRS = %i[id content_type style align char charoff
|
|
19
|
+
valign].freeze
|
|
20
|
+
TABLE_GROUP_ATTR_XML = {
|
|
21
|
+
id: "id", content_type: "content-type", style: "style",
|
|
22
|
+
align: "align", char: "char", charoff: "charoff", valign: "valign"
|
|
23
|
+
}.freeze
|
|
24
|
+
|
|
25
|
+
TABLE_COL_EXTRA_ATTRS = %i[span width].freeze
|
|
26
|
+
TABLE_COL_EXTRA_ATTR_XML = { span: "span", width: "width" }.freeze
|
|
27
|
+
|
|
28
|
+
def self.table_group_attributes(klass)
|
|
29
|
+
TABLE_GROUP_ATTRS.each do |name|
|
|
30
|
+
opts = case name
|
|
31
|
+
when :align then { values: EnumValues::ALIGN }
|
|
32
|
+
when :valign then { values: EnumValues::VALIGN }
|
|
33
|
+
else {}
|
|
34
|
+
end
|
|
35
|
+
klass.attribute name, :string, **opts
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def self.table_group_attribute_mappings(klass, char_value_map: false)
|
|
40
|
+
TABLE_GROUP_ATTR_XML.each do |name, xml_name|
|
|
41
|
+
opts = {}
|
|
42
|
+
if char_value_map && name == :char
|
|
43
|
+
opts[:value_map] = { to: { empty: :empty } }
|
|
44
|
+
end
|
|
45
|
+
klass.map_attribute xml_name, to: name, **opts
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def self.table_col_attributes(klass)
|
|
50
|
+
table_group_attributes(klass)
|
|
51
|
+
TABLE_COL_EXTRA_ATTRS.each { |name| klass.attribute name, :string }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.table_col_attribute_mappings(klass, char_value_map: false)
|
|
55
|
+
table_group_attribute_mappings(klass, char_value_map: char_value_map)
|
|
56
|
+
TABLE_COL_EXTRA_ATTR_XML.each do |name, xml_name|
|
|
57
|
+
klass.map_attribute xml_name, to: name
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
data/lib/sts/niso_sts/contrib.rb
CHANGED