sts 0.5.1 → 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 -2
- 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 -2
- 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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 46ee1bd086e84d831f68bf02a8420e0aca91c321b29f975ed22abb8774042aec
|
|
4
|
+
data.tar.gz: 9339e5dc5256944c96799877a08ba2ccc1676f2a64156fc5c7bdce8bb12c50e1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 498eea9f817087d455c5338a632e9118427cf975c512f0f7be8b725fd7fee34f8e1ed29050b40e272ec6575fddfd47df8aa616117c83ba9732c042a66b395159
|
|
7
|
+
data.tar.gz: 0bb89062547d29d8506cf65cd9f9fbdc75723944ae40f8a8f67a68465a61a82adbdf2664ce3cd12443f755951d3af2edb6910c7529f9d742ca85f88b324e6d42
|
data/.gitmodules
ADDED
data/.rubocop.yml
CHANGED
data/.rubocop_todo.yml
CHANGED
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
# This configuration was generated by
|
|
2
|
-
# `rubocop --auto-gen-config`
|
|
3
|
-
# on 2026-
|
|
2
|
+
# `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 50`
|
|
3
|
+
# on 2026-05-06 01:14:05 UTC using RuboCop version 1.86.1.
|
|
4
4
|
# The point is for the user to remove these configuration records
|
|
5
5
|
# one by one as the offenses are removed from the code base.
|
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
8
8
|
|
|
9
|
-
# Offense count:
|
|
9
|
+
# Offense count: 18
|
|
10
10
|
# This cop supports safe autocorrection (--autocorrect).
|
|
11
11
|
# Configuration parameters: Max, AllowHeredoc, AllowURI, AllowQualifiedName, URISchemes, AllowRBSInlineAnnotation, AllowCopDirectives, AllowedPatterns, SplitStrings.
|
|
12
12
|
# URISchemes: http, https
|
|
13
13
|
Layout/LineLength:
|
|
14
14
|
Exclude:
|
|
15
|
+
- 'lib/sts/iso_sts/content_groups/highlight_elements.rb'
|
|
16
|
+
- 'lib/sts/niso_sts/content_groups/body_elements.rb'
|
|
17
|
+
- 'lib/sts/niso_sts/content_groups/emphasized_text.rb'
|
|
18
|
+
- 'lib/sts/niso_sts/content_groups/highlight_elements.rb'
|
|
19
|
+
- 'lib/sts/niso_sts/content_groups/inside_cell.rb'
|
|
20
|
+
- 'lib/sts/niso_sts/content_groups/styled_content_elements.rb'
|
|
21
|
+
- 'lib/sts/niso_sts/content_groups/table_group_attributes.rb'
|
|
15
22
|
- 'lib/sts/niso_sts/mml_content/containers.rb'
|
|
16
23
|
- 'lib/sts/niso_sts/mml_content/linear_algebra.rb'
|
|
17
24
|
- 'lib/sts/niso_sts/term.rb'
|
|
18
25
|
- 'lib/sts/tbx_iso_tml/lang_set.rb'
|
|
19
26
|
- 'lib/sts/tbx_iso_tml/term_type.rb'
|
|
27
|
+
- 'spec/round_trip/reference_docs_spec.rb'
|
|
20
28
|
- 'spec/spec_helper.rb'
|
|
29
|
+
|
|
30
|
+
# Offense count: 1
|
|
31
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
|
|
32
|
+
Metrics/AbcSize:
|
|
33
|
+
Exclude:
|
|
34
|
+
- 'lib/sts/iso_sts/mathml2/math.rb'
|
data/CLAUDE.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Build and Test Commands
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Run tests
|
|
9
|
+
bundle exec rspec
|
|
10
|
+
|
|
11
|
+
# Run tests with specific file
|
|
12
|
+
bundle exec rspec spec/sts_spec.rb
|
|
13
|
+
|
|
14
|
+
# Run RuboCop linting
|
|
15
|
+
bundle exec rubocop
|
|
16
|
+
|
|
17
|
+
# Run both (default task)
|
|
18
|
+
bundle exec rake
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Architecture
|
|
22
|
+
|
|
23
|
+
This is a Ruby gem for parsing NISO STS (National Information Standards Organization - Science and Technical Standards) XML documents. It uses `lutaml-model` for XML serialization/deserialization.
|
|
24
|
+
|
|
25
|
+
### Namespace Structure
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Sts
|
|
29
|
+
├── NisoSts # NISO STS elements (lib/sts/niso_sts/)
|
|
30
|
+
│ ├── MmlContent # MathML content elements (autoloaded)
|
|
31
|
+
│ └── Xi, Ali # Module elements
|
|
32
|
+
├── TbxIsoTml # TBX ISO TML elements (lib/sts/tbx_iso_tml/)
|
|
33
|
+
├── Mathml # MathML namespace wrapper
|
|
34
|
+
└── Namespaces # XML namespace definitions
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Key Implementation Patterns
|
|
38
|
+
|
|
39
|
+
**Element Classes** (in `lib/sts/niso_sts/`):
|
|
40
|
+
- Inherit from `Lutaml::Model::Serializable`
|
|
41
|
+
- Define attributes and XML mapping in `xml do ... end` block
|
|
42
|
+
- Use `map_element` to map child elements, `map_content` for text content
|
|
43
|
+
- Use `mixed_content` for elements that contain both text and child elements
|
|
44
|
+
|
|
45
|
+
**Example element structure:**
|
|
46
|
+
```ruby
|
|
47
|
+
module Sts
|
|
48
|
+
module NisoSts
|
|
49
|
+
class SomeElement < Lutaml::Model::Serializable
|
|
50
|
+
attribute :id, :string
|
|
51
|
+
attribute :content, :string
|
|
52
|
+
attribute :child, ::Sts::NisoSts::ChildElement
|
|
53
|
+
|
|
54
|
+
xml do
|
|
55
|
+
element "some-element"
|
|
56
|
+
map_attribute "id", to: :id
|
|
57
|
+
map_content to: :content
|
|
58
|
+
map_element "child", to: :child
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Autoload Pattern**: Elements are autoloaded via `lib/sts/niso_sts.rb`. When adding new elements, add autoloads in alphabetical order.
|
|
66
|
+
|
|
67
|
+
**Bold/Italic Elements**: These use `::Sts::TbxIsoTml::Bold` and `::Sts::TbxIsoTml::Italic` types (not `:string`), enabling proper round-tripping of nested markup.
|
|
68
|
+
|
|
69
|
+
### Reference Data
|
|
70
|
+
|
|
71
|
+
- XSD schema: `reference-docs/NISO-STS-extended-1-MathML3-XSD/`
|
|
72
|
+
- Test fixtures: `spec/fixtures/`
|
data/Gemfile
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Shared injection helpers for NisoSts and IsoSts ContentGroups.
|
|
4
|
+
#
|
|
5
|
+
# Element tuple formats:
|
|
6
|
+
# 3-tuple: [name, type, xml_name] -> collection
|
|
7
|
+
# 4-tuple: [name, type, xml_name, singular?] -> explicit
|
|
8
|
+
|
|
9
|
+
module Sts
|
|
10
|
+
module ContentGroups
|
|
11
|
+
module Helpers
|
|
12
|
+
def inject_elements(klass, elements)
|
|
13
|
+
elements.each do |name, type_name, _, is_collection|
|
|
14
|
+
type = Object.const_get(type_name)
|
|
15
|
+
coll = is_collection.nil? || is_collection
|
|
16
|
+
klass.attribute name, type, collection: coll
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def inject_element_mappings(klass, elements)
|
|
21
|
+
elements.each do |name, _, xml_name, _|
|
|
22
|
+
klass.map_element xml_name, to: name
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sts
|
|
4
|
+
module EnumValues
|
|
5
|
+
ALIGN = %w[center char justify left right].freeze
|
|
6
|
+
VALIGN = %w[baseline bottom middle top].freeze
|
|
7
|
+
SCOPE = %w[col colgroup row rowgroup].freeze
|
|
8
|
+
ORIENTATION = %w[landscape portrait].freeze
|
|
9
|
+
POSITION = %w[anchor background float margin].freeze
|
|
10
|
+
FRAME = %w[above below border box hsides lhs rhs void vsides].freeze
|
|
11
|
+
RULES = %w[all cols groups none rows].freeze
|
|
12
|
+
TOGGLE = %w[no yes].freeze
|
|
13
|
+
ARRANGE = %w[stack stagger].freeze
|
|
14
|
+
NAME_STYLE = %w[eastern given-only islensk western].freeze
|
|
15
|
+
AUTHENTICATED = %w[false true].freeze
|
|
16
|
+
end
|
|
17
|
+
end
|
data/lib/sts/iso_sts/app.rb
CHANGED
|
@@ -16,10 +16,24 @@ module Sts
|
|
|
16
16
|
attribute :fn_group, ::Sts::IsoSts::FnGroup, collection: true
|
|
17
17
|
attribute :ref_list, ::Sts::IsoSts::RefList, collection: true
|
|
18
18
|
attribute :permissions, ::Sts::NisoSts::Permissions
|
|
19
|
-
attribute :non_normative_note, ::Sts::IsoSts::NonNormativeNote
|
|
19
|
+
attribute :non_normative_note, ::Sts::IsoSts::NonNormativeNote,
|
|
20
|
+
collection: true
|
|
21
|
+
attribute :non_normative_example, ::Sts::IsoSts::NonNormativeExample,
|
|
22
|
+
collection: true
|
|
23
|
+
attribute :table_wrap, ::Sts::TbxIsoTml::TableWrap, collection: true
|
|
24
|
+
attribute :list, ::Sts::IsoSts::List, collection: true
|
|
25
|
+
attribute :def_list, ::Sts::IsoSts::DefList, collection: true
|
|
26
|
+
attribute :fig, ::Sts::IsoSts::Fig, collection: true
|
|
27
|
+
attribute :array, ::Sts::IsoSts::Array, collection: true
|
|
28
|
+
attribute :graphic, ::Sts::IsoSts::Graphic, collection: true
|
|
29
|
+
attribute :preformat, ::Sts::IsoSts::Preformat, collection: true
|
|
30
|
+
attribute :styled_content, ::Sts::IsoSts::StyledContent, collection: true
|
|
31
|
+
attribute :disp_formula, ::Sts::IsoSts::DispFormula, collection: true
|
|
32
|
+
attribute :inline_formula, ::Sts::IsoSts::InlineFormula, collection: true
|
|
20
33
|
|
|
21
34
|
xml do
|
|
22
35
|
element "app"
|
|
36
|
+
ordered
|
|
23
37
|
|
|
24
38
|
map_attribute "id", to: :id
|
|
25
39
|
map_attribute "content-type", to: :content_type
|
|
@@ -36,6 +50,17 @@ module Sts
|
|
|
36
50
|
map_element "ref-list", to: :ref_list
|
|
37
51
|
map_element "permissions", to: :permissions
|
|
38
52
|
map_element "non-normative-note", to: :non_normative_note
|
|
53
|
+
map_element "non-normative-example", to: :non_normative_example
|
|
54
|
+
map_element "table-wrap", to: :table_wrap
|
|
55
|
+
map_element "list", to: :list
|
|
56
|
+
map_element "def-list", to: :def_list
|
|
57
|
+
map_element "fig", to: :fig
|
|
58
|
+
map_element "array", to: :array
|
|
59
|
+
map_element "graphic", to: :graphic
|
|
60
|
+
map_element "preformat", to: :preformat
|
|
61
|
+
map_element "styled-content", to: :styled_content
|
|
62
|
+
map_element "disp-formula", to: :disp_formula
|
|
63
|
+
map_element "inline-formula", to: :inline_formula
|
|
39
64
|
end
|
|
40
65
|
end
|
|
41
66
|
end
|
data/lib/sts/iso_sts/array.rb
CHANGED
data/lib/sts/iso_sts/back.rb
CHANGED
data/lib/sts/iso_sts/body.rb
CHANGED
|
@@ -22,9 +22,12 @@ module Sts
|
|
|
22
22
|
attribute :array, ::Sts::IsoSts::Array, collection: true
|
|
23
23
|
attribute :ref_list, ::Sts::IsoSts::RefList, collection: true
|
|
24
24
|
attribute :disp_quote, ::Sts::NisoSts::DispQuote, collection: true
|
|
25
|
+
attribute :editing_instruction, ::Sts::NisoSts::EditingInstruction,
|
|
26
|
+
collection: true
|
|
25
27
|
|
|
26
28
|
xml do
|
|
27
29
|
element "body"
|
|
30
|
+
ordered
|
|
28
31
|
|
|
29
32
|
map_attribute "id", to: :id
|
|
30
33
|
map_attribute "content-type", to: :content_type
|
|
@@ -44,6 +47,7 @@ module Sts
|
|
|
44
47
|
map_element "array", to: :array
|
|
45
48
|
map_element "ref-list", to: :ref_list
|
|
46
49
|
map_element "disp-quote", to: :disp_quote
|
|
50
|
+
map_element "editing-instruction", to: :editing_instruction
|
|
47
51
|
end
|
|
48
52
|
end
|
|
49
53
|
end
|
data/lib/sts/iso_sts/bold.rb
CHANGED
|
@@ -6,17 +6,23 @@ module Sts
|
|
|
6
6
|
attribute :id, :string
|
|
7
7
|
attribute :specific_use, :string
|
|
8
8
|
attribute :content, :string, collection: true
|
|
9
|
-
attribute :bold, ::Sts::IsoSts::Bold
|
|
10
|
-
attribute :italic, ::Sts::IsoSts::Italic
|
|
11
|
-
attribute :sub, ::Sts::NisoSts::Sub
|
|
12
|
-
attribute :sup, ::Sts::NisoSts::Sup
|
|
13
|
-
attribute :xref, ::Sts::TbxIsoTml::Xref
|
|
14
|
-
attribute :ext_link, ::Sts::NisoSts::ExtLink
|
|
15
|
-
attribute :uri, ::Sts::NisoSts::Uri
|
|
16
|
-
attribute :inline_formula, ::Sts::IsoSts::InlineFormula
|
|
17
|
-
attribute :named_content, ::Sts::NisoSts::NamedContent
|
|
18
|
-
attribute :styled_content, ::Sts::IsoSts::StyledContent
|
|
19
|
-
attribute :break, ::Sts::IsoSts::Break
|
|
9
|
+
attribute :bold, ::Sts::IsoSts::Bold, collection: true
|
|
10
|
+
attribute :italic, ::Sts::IsoSts::Italic, collection: true
|
|
11
|
+
attribute :sub, ::Sts::NisoSts::Sub, collection: true
|
|
12
|
+
attribute :sup, ::Sts::NisoSts::Sup, collection: true
|
|
13
|
+
attribute :xref, ::Sts::TbxIsoTml::Xref, collection: true
|
|
14
|
+
attribute :ext_link, ::Sts::NisoSts::ExtLink, collection: true
|
|
15
|
+
attribute :uri, ::Sts::NisoSts::Uri, collection: true
|
|
16
|
+
attribute :inline_formula, ::Sts::IsoSts::InlineFormula, collection: true
|
|
17
|
+
attribute :named_content, ::Sts::NisoSts::NamedContent, collection: true
|
|
18
|
+
attribute :styled_content, ::Sts::IsoSts::StyledContent, collection: true
|
|
19
|
+
attribute :break, ::Sts::IsoSts::Break, collection: true
|
|
20
|
+
attribute :std_ref, ::Sts::IsoSts::StdRef, collection: true
|
|
21
|
+
attribute :monospace, ::Sts::NisoSts::Monospace, collection: true
|
|
22
|
+
attribute :sc, ::Sts::NisoSts::Sc, collection: true
|
|
23
|
+
attribute :strike, ::Sts::NisoSts::Strike, collection: true
|
|
24
|
+
attribute :underline, ::Sts::NisoSts::Underline, collection: true
|
|
25
|
+
attribute :fn, ::Sts::TbxIsoTml::Fn, collection: true
|
|
20
26
|
|
|
21
27
|
xml do
|
|
22
28
|
element "bold"
|
|
@@ -38,6 +44,12 @@ module Sts
|
|
|
38
44
|
map_element "named-content", to: :named_content
|
|
39
45
|
map_element "styled-content", to: :styled_content
|
|
40
46
|
map_element "break", to: :break
|
|
47
|
+
map_element "std-ref", to: :std_ref
|
|
48
|
+
map_element "monospace", to: :monospace
|
|
49
|
+
map_element "sc", to: :sc
|
|
50
|
+
map_element "strike", to: :strike
|
|
51
|
+
map_element "underline", to: :underline
|
|
52
|
+
map_element "fn", to: :fn
|
|
41
53
|
end
|
|
42
54
|
end
|
|
43
55
|
end
|
data/lib/sts/iso_sts/caption.rb
CHANGED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "../../content_groups/helpers"
|
|
4
|
+
|
|
5
|
+
# Shared content group methods for IsoSts models.
|
|
6
|
+
# Mirrors NisoSts::ContentGroups but uses IsoSts-specific type references.
|
|
7
|
+
#
|
|
8
|
+
# Content groups defined:
|
|
9
|
+
# - highlight_elements (21 elements) — used by Bold, Italic
|
|
10
|
+
# - styled_content_elements (31 elements) — used by StyledContent
|
|
11
|
+
# - p_elements (35 elements) — used by Paragraph
|
|
12
|
+
# - para_level (28 elements) — used by Sec, App, NonNormativeNote, NonNormativeExample, TermSec
|
|
13
|
+
# - inside_cell (40+ elements) — used by Td, Th
|
|
14
|
+
|
|
15
|
+
module Sts
|
|
16
|
+
module IsoSts
|
|
17
|
+
module ContentGroups
|
|
18
|
+
extend ::Sts::ContentGroups::Helpers
|
|
19
|
+
|
|
20
|
+
HIGHLIGHT_ELEMENTS = [
|
|
21
|
+
[:bold, "Sts::IsoSts::Bold", "bold"],
|
|
22
|
+
[:italic, "Sts::IsoSts::Italic", "italic"],
|
|
23
|
+
[:sub, "Sts::NisoSts::Sub", "sub"],
|
|
24
|
+
[:sup, "Sts::NisoSts::Sup", "sup"],
|
|
25
|
+
[:monospace, "Sts::NisoSts::Monospace", "monospace"],
|
|
26
|
+
[:sc, "Sts::NisoSts::Sc", "sc"],
|
|
27
|
+
[:std_ref, "Sts::IsoSts::StdRef", "std-ref"],
|
|
28
|
+
[:underline, "Sts::NisoSts::Underline", "underline"],
|
|
29
|
+
[:strike, "Sts::NisoSts::Strike", "strike"],
|
|
30
|
+
[:xref, "Sts::TbxIsoTml::Xref", "xref"],
|
|
31
|
+
[:ext_link, "Sts::NisoSts::ExtLink", "ext-link"],
|
|
32
|
+
[:fn, "Sts::TbxIsoTml::Fn", "fn"],
|
|
33
|
+
[:styled_content, "Sts::IsoSts::StyledContent", "styled-content"],
|
|
34
|
+
[:array, "Sts::IsoSts::Array", "array"],
|
|
35
|
+
[:break, "Sts::IsoSts::Break", "break"],
|
|
36
|
+
[:target, "Sts::NisoSts::Target", "target"],
|
|
37
|
+
[:overline, "Sts::NisoSts::Overline", "overline"],
|
|
38
|
+
[:roman, "Sts::NisoSts::Roman", "roman"],
|
|
39
|
+
[:sans_serif, "Sts::NisoSts::SansSerif", "sans-serif"],
|
|
40
|
+
[:ruby, "Sts::NisoSts::Ruby", "ruby"],
|
|
41
|
+
[:named_content, "Sts::NisoSts::NamedContent", "named-content"],
|
|
42
|
+
[:uri, "Sts::NisoSts::Uri", "uri"],
|
|
43
|
+
[:inline_formula, "Sts::IsoSts::InlineFormula", "inline-formula"],
|
|
44
|
+
].freeze
|
|
45
|
+
|
|
46
|
+
def self.highlight_elements(klass)
|
|
47
|
+
inject_elements(klass, HIGHLIGHT_ELEMENTS)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.highlight_elements_mappings(klass)
|
|
51
|
+
inject_element_mappings(klass, HIGHLIGHT_ELEMENTS)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
STYLED_CONTENT_ELEMENTS = [
|
|
55
|
+
*HIGHLIGHT_ELEMENTS,
|
|
56
|
+
[:disp_formula, "Sts::IsoSts::DispFormula", "disp-formula"],
|
|
57
|
+
[:disp_formula_group, "Sts::IsoSts::DispFormula", "disp-formula-group"],
|
|
58
|
+
[:std, "Sts::IsoSts::Std", "std"],
|
|
59
|
+
[:graphic, "Sts::IsoSts::Graphic", "graphic"],
|
|
60
|
+
[:list, "Sts::IsoSts::List", "list"],
|
|
61
|
+
[:def_list, "Sts::IsoSts::DefList", "def-list"],
|
|
62
|
+
[:fig, "Sts::IsoSts::Fig", "fig"],
|
|
63
|
+
[:boxed_text, "Sts::NisoSts::BoxedText", "boxed-text"],
|
|
64
|
+
[:email, "Sts::NisoSts::Email", "email"],
|
|
65
|
+
].freeze
|
|
66
|
+
|
|
67
|
+
def self.styled_content_elements(klass)
|
|
68
|
+
inject_elements(klass, STYLED_CONTENT_ELEMENTS)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def self.styled_content_elements_mappings(klass)
|
|
72
|
+
inject_element_mappings(klass, STYLED_CONTENT_ELEMENTS)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
P_ELEMENTS_EXTRA = [
|
|
76
|
+
[:non_normative_note, "Sts::IsoSts::NonNormativeNote",
|
|
77
|
+
"non-normative-note"],
|
|
78
|
+
[:non_normative_example, "Sts::IsoSts::NonNormativeExample",
|
|
79
|
+
"non-normative-example"],
|
|
80
|
+
[:math, "Sts::TbxIsoTml::Math", "math"],
|
|
81
|
+
[:preformat, "Sts::IsoSts::Preformat", "preformat"],
|
|
82
|
+
].freeze
|
|
83
|
+
|
|
84
|
+
def self.p_elements(klass)
|
|
85
|
+
styled_content_elements(klass)
|
|
86
|
+
inject_elements(klass, P_ELEMENTS_EXTRA)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def self.p_elements_mappings(klass)
|
|
90
|
+
styled_content_elements_mappings(klass)
|
|
91
|
+
inject_element_mappings(klass, P_ELEMENTS_EXTRA)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
PARA_LEVEL_ELEMENTS = [
|
|
95
|
+
[:label, "Sts::IsoSts::Label", "label"],
|
|
96
|
+
[:title, "Sts::IsoSts::Title", "title"],
|
|
97
|
+
[:p, "Sts::IsoSts::Paragraph", "p"],
|
|
98
|
+
[:list, "Sts::IsoSts::List", "list"],
|
|
99
|
+
[:def_list, "Sts::IsoSts::DefList", "def-list"],
|
|
100
|
+
[:disp_formula, "Sts::IsoSts::DispFormula", "disp-formula"],
|
|
101
|
+
[:inline_formula, "Sts::IsoSts::InlineFormula", "inline-formula"],
|
|
102
|
+
[:table_wrap, "Sts::TbxIsoTml::TableWrap", "table-wrap"],
|
|
103
|
+
[:fig, "Sts::IsoSts::Fig", "fig"],
|
|
104
|
+
[:non_normative_note, "Sts::IsoSts::NonNormativeNote",
|
|
105
|
+
"non-normative-note"],
|
|
106
|
+
[:non_normative_example, "Sts::IsoSts::NonNormativeExample",
|
|
107
|
+
"non-normative-example"],
|
|
108
|
+
[:preformat, "Sts::IsoSts::Preformat", "preformat"],
|
|
109
|
+
[:styled_content, "Sts::IsoSts::StyledContent", "styled-content"],
|
|
110
|
+
[:array, "Sts::IsoSts::Array", "array"],
|
|
111
|
+
[:graphic, "Sts::IsoSts::Graphic", "graphic"],
|
|
112
|
+
[:std, "Sts::IsoSts::Std", "std"],
|
|
113
|
+
[:ref_list, "Sts::IsoSts::RefList", "ref-list"],
|
|
114
|
+
[:fn_group, "Sts::IsoSts::FnGroup", "fn-group"],
|
|
115
|
+
[:xref, "Sts::TbxIsoTml::Xref", "xref"],
|
|
116
|
+
[:ext_link, "Sts::NisoSts::ExtLink", "ext-link"],
|
|
117
|
+
[:uri, "Sts::NisoSts::Uri", "uri"],
|
|
118
|
+
[:sec, "Sts::IsoSts::Sec", "sec"],
|
|
119
|
+
[:term_sec, "Sts::IsoSts::TermSec", "term-sec"],
|
|
120
|
+
[:disp_quote, "Sts::NisoSts::DispQuote", "disp-quote"],
|
|
121
|
+
[:fn, "Sts::TbxIsoTml::Fn", "fn"],
|
|
122
|
+
[:editing_instruction, "Sts::NisoSts::EditingInstruction",
|
|
123
|
+
"editing-instruction"],
|
|
124
|
+
].freeze
|
|
125
|
+
|
|
126
|
+
def self.para_level(klass)
|
|
127
|
+
inject_elements(klass, PARA_LEVEL_ELEMENTS)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def self.para_level_mappings(klass)
|
|
131
|
+
inject_element_mappings(klass, PARA_LEVEL_ELEMENTS)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
BODY_ELEMENTS = [
|
|
135
|
+
[:p, "Sts::IsoSts::Paragraph", "p"],
|
|
136
|
+
[:sec, "Sts::IsoSts::Sec", "sec"],
|
|
137
|
+
[:term_sec, "Sts::IsoSts::TermSec", "term-sec"],
|
|
138
|
+
[:list, "Sts::IsoSts::List", "list"],
|
|
139
|
+
[:def_list, "Sts::IsoSts::DefList", "def-list"],
|
|
140
|
+
[:disp_formula, "Sts::IsoSts::DispFormula", "disp-formula"],
|
|
141
|
+
[:table_wrap, "Sts::TbxIsoTml::TableWrap", "table-wrap"],
|
|
142
|
+
[:fig, "Sts::IsoSts::Fig", "fig"],
|
|
143
|
+
[:non_normative_note, "Sts::IsoSts::NonNormativeNote",
|
|
144
|
+
"non-normative-note"],
|
|
145
|
+
[:non_normative_example, "Sts::IsoSts::NonNormativeExample",
|
|
146
|
+
"non-normative-example"],
|
|
147
|
+
[:preformat, "Sts::IsoSts::Preformat", "preformat"],
|
|
148
|
+
[:styled_content, "Sts::IsoSts::StyledContent", "styled-content"],
|
|
149
|
+
[:array, "Sts::IsoSts::Array", "array"],
|
|
150
|
+
[:ref_list, "Sts::IsoSts::RefList", "ref-list"],
|
|
151
|
+
[:disp_quote, "Sts::NisoSts::DispQuote", "disp-quote"],
|
|
152
|
+
[:editing_instruction, "Sts::NisoSts::EditingInstruction",
|
|
153
|
+
"editing-instruction"],
|
|
154
|
+
].freeze
|
|
155
|
+
|
|
156
|
+
def self.body_elements(klass)
|
|
157
|
+
inject_elements(klass, BODY_ELEMENTS)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def self.body_elements_mappings(klass)
|
|
161
|
+
inject_element_mappings(klass, BODY_ELEMENTS)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
INSIDE_CELL_ELEMENTS = [
|
|
165
|
+
[:bold, "Sts::IsoSts::Bold", "bold"],
|
|
166
|
+
[:italic, "Sts::IsoSts::Italic", "italic"],
|
|
167
|
+
[:sub, "Sts::NisoSts::Sub", "sub"],
|
|
168
|
+
[:sup, "Sts::NisoSts::Sup", "sup"],
|
|
169
|
+
[:monospace, "Sts::NisoSts::Monospace", "monospace"],
|
|
170
|
+
[:sc, "Sts::NisoSts::Sc", "sc"],
|
|
171
|
+
[:underline, "Sts::NisoSts::Underline", "underline"],
|
|
172
|
+
[:overline, "Sts::NisoSts::Overline", "overline"],
|
|
173
|
+
[:roman, "Sts::NisoSts::Roman", "roman"],
|
|
174
|
+
[:sans_serif, "Sts::NisoSts::SansSerif", "sans-serif"],
|
|
175
|
+
[:strike, "Sts::NisoSts::Strike", "strike"],
|
|
176
|
+
[:xref, "Sts::TbxIsoTml::Xref", "xref"],
|
|
177
|
+
[:ext_link, "Sts::NisoSts::ExtLink", "ext-link"],
|
|
178
|
+
[:uri, "Sts::NisoSts::Uri", "uri"],
|
|
179
|
+
[:fn, "Sts::TbxIsoTml::Fn", "fn"],
|
|
180
|
+
[:styled_content, "Sts::IsoSts::StyledContent", "styled-content"],
|
|
181
|
+
[:array, "Sts::IsoSts::Array", "array"],
|
|
182
|
+
[:break, "Sts::IsoSts::Break", "break"],
|
|
183
|
+
[:target, "Sts::NisoSts::Target", "target"],
|
|
184
|
+
[:named_content, "Sts::NisoSts::NamedContent", "named-content"],
|
|
185
|
+
[:graphic, "Sts::IsoSts::Graphic", "graphic"],
|
|
186
|
+
[:list, "Sts::IsoSts::List", "list"],
|
|
187
|
+
[:def_list, "Sts::IsoSts::DefList", "def-list"],
|
|
188
|
+
[:p, "Sts::IsoSts::Paragraph", "p"],
|
|
189
|
+
[:non_normative_note, "Sts::IsoSts::NonNormativeNote",
|
|
190
|
+
"non-normative-note"],
|
|
191
|
+
[:non_normative_example, "Sts::IsoSts::NonNormativeExample",
|
|
192
|
+
"non-normative-example"],
|
|
193
|
+
[:inline_formula, "Sts::IsoSts::InlineFormula", "inline-formula"],
|
|
194
|
+
[:disp_formula, "Sts::IsoSts::DispFormula", "disp-formula"],
|
|
195
|
+
[:disp_formula_group, "Sts::IsoSts::DispFormula", "disp-formula-group"],
|
|
196
|
+
[:std, "Sts::IsoSts::Std", "std"],
|
|
197
|
+
[:fig, "Sts::IsoSts::Fig", "fig"],
|
|
198
|
+
[:math, "Sts::TbxIsoTml::Math", "math"],
|
|
199
|
+
[:ruby, "Sts::NisoSts::Ruby", "ruby"],
|
|
200
|
+
].freeze
|
|
201
|
+
|
|
202
|
+
INSIDE_CELL_ATTRIBUTES = %i[id content_type style abbr axis headers scope
|
|
203
|
+
rowspan colspan align char charoff valign].freeze
|
|
204
|
+
INSIDE_CELL_ATTR_XML = {
|
|
205
|
+
id: "id", content_type: "content-type", style: "style",
|
|
206
|
+
abbr: "abbr", axis: "axis", headers: "headers", scope: "scope",
|
|
207
|
+
rowspan: "rowspan", colspan: "colspan", align: "align",
|
|
208
|
+
char: "char", charoff: "charoff", valign: "valign"
|
|
209
|
+
}.freeze
|
|
210
|
+
|
|
211
|
+
def self.inside_cell(klass)
|
|
212
|
+
inject_elements(klass, INSIDE_CELL_ELEMENTS)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def self.inside_cell_mappings(klass)
|
|
216
|
+
inject_element_mappings(klass, INSIDE_CELL_ELEMENTS)
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def self.inside_cell_attributes(klass)
|
|
220
|
+
INSIDE_CELL_ATTRIBUTES.each do |name|
|
|
221
|
+
opts = case name
|
|
222
|
+
when :align then { values: EnumValues::ALIGN }
|
|
223
|
+
when :valign then { values: EnumValues::VALIGN }
|
|
224
|
+
when :scope then { values: EnumValues::SCOPE }
|
|
225
|
+
else {}
|
|
226
|
+
end
|
|
227
|
+
klass.attribute name, :string, **opts
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def self.inside_cell_attribute_mappings(klass, char_value_map: false)
|
|
232
|
+
INSIDE_CELL_ATTR_XML.each do |name, xml_name|
|
|
233
|
+
opts = {}
|
|
234
|
+
if char_value_map && name == :char
|
|
235
|
+
opts[:value_map] = { to: { empty: :empty } }
|
|
236
|
+
end
|
|
237
|
+
klass.map_attribute xml_name, to: name, **opts
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
TABLE_GROUP_ATTRS = %i[id content_type style align char charoff
|
|
242
|
+
valign].freeze
|
|
243
|
+
TABLE_GROUP_ATTR_XML = {
|
|
244
|
+
id: "id", content_type: "content-type", style: "style",
|
|
245
|
+
align: "align", char: "char", charoff: "charoff", valign: "valign"
|
|
246
|
+
}.freeze
|
|
247
|
+
|
|
248
|
+
TABLE_COL_EXTRA_ATTRS = %i[span width].freeze
|
|
249
|
+
TABLE_COL_EXTRA_ATTR_XML = { span: "span", width: "width" }.freeze
|
|
250
|
+
|
|
251
|
+
def self.table_group_attributes(klass)
|
|
252
|
+
TABLE_GROUP_ATTRS.each do |name|
|
|
253
|
+
opts = case name
|
|
254
|
+
when :align then { values: EnumValues::ALIGN }
|
|
255
|
+
when :valign then { values: EnumValues::VALIGN }
|
|
256
|
+
else {}
|
|
257
|
+
end
|
|
258
|
+
klass.attribute name, :string, **opts
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
def self.table_group_attribute_mappings(klass, char_value_map: false)
|
|
263
|
+
TABLE_GROUP_ATTR_XML.each do |name, xml_name|
|
|
264
|
+
opts = {}
|
|
265
|
+
if char_value_map && name == :char
|
|
266
|
+
opts[:value_map] = { to: { empty: :empty } }
|
|
267
|
+
end
|
|
268
|
+
klass.map_attribute xml_name, to: name, **opts
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
def self.table_col_attributes(klass)
|
|
273
|
+
table_group_attributes(klass)
|
|
274
|
+
TABLE_COL_EXTRA_ATTRS.each { |name| klass.attribute name, :string }
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def self.table_col_attribute_mappings(klass, char_value_map: false)
|
|
278
|
+
table_group_attribute_mappings(klass, char_value_map: char_value_map)
|
|
279
|
+
TABLE_COL_EXTRA_ATTR_XML.each do |name, xml_name|
|
|
280
|
+
klass.map_attribute xml_name, to: name
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
end
|
data/lib/sts/iso_sts/def.rb
CHANGED
data/lib/sts/iso_sts/def_item.rb
CHANGED