sts 0.6.5 → 0.6.7

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/TODO.roadmap/00-overview.md +80 -0
  3. data/TODO.roadmap/01-lutaml-model-namespace-scope-uri-matching.md +111 -0
  4. data/TODO.roadmap/02-lutaml-model-element-builder-dispatch.md +115 -0
  5. data/TODO.roadmap/03-issue-40-child-bearing-roots.md +57 -0
  6. data/TODO.roadmap/04-issue-40-recursive-roots.md +105 -0
  7. data/TODO.roadmap/05-content-mathml-unification.md +75 -0
  8. data/TODO.roadmap/06-mathml-namespace-deduplication.md +59 -0
  9. data/TODO.roadmap/07-tbxisotml-misclassification-audit.md +82 -0
  10. data/TODO.roadmap/08-register-versioning.md +95 -0
  11. data/TODO.roadmap/09-test-coverage-gaps.md +78 -0
  12. data/TODO.roadmap/10-iso-sts-common-attributes-module.md +115 -0
  13. data/TODO.roadmap/11-docs-and-readme-refresh.md +52 -0
  14. data/TODO.sts-refactor/00-overview.md +3 -3
  15. data/TODO.sts-refactor/03-namespace-coupling.md +24 -5
  16. data/TODO.sts-refactor/09-autoload-cleanup.md +48 -83
  17. data/TODO.sts-refactor/11-duplicate-models.md +32 -2
  18. data/lib/sts/iso_sts/array.rb +1 -1
  19. data/lib/sts/iso_sts/attrib.rb +72 -0
  20. data/lib/sts/iso_sts/boxed_text.rb +2 -0
  21. data/lib/sts/iso_sts/custom_meta.rb +37 -0
  22. data/lib/sts/iso_sts/custom_meta_group.rb +16 -0
  23. data/lib/sts/iso_sts/def_list.rb +1 -1
  24. data/lib/sts/iso_sts/disp_quote.rb +2 -0
  25. data/lib/sts/iso_sts/iso_meta.rb +1 -1
  26. data/lib/sts/iso_sts/license.rb +35 -0
  27. data/lib/sts/iso_sts/license_p.rb +96 -0
  28. data/lib/sts/iso_sts/meta_name.rb +14 -0
  29. data/lib/sts/iso_sts/meta_value.rb +41 -0
  30. data/lib/sts/iso_sts/nat_meta.rb +1 -1
  31. data/lib/sts/iso_sts/permissions.rb +1 -1
  32. data/lib/sts/iso_sts/reg_meta.rb +1 -1
  33. data/lib/sts/iso_sts/table_wrap_foot.rb +1 -1
  34. data/lib/sts/iso_sts/term_head.rb +74 -0
  35. data/lib/sts/iso_sts.rb +8 -3
  36. data/lib/sts/version.rb +1 -1
  37. metadata +22 -4
  38. data/lib/sts/iso_sts/mathml2/math.rb +0 -68
  39. data/lib/sts/iso_sts/mathml2.rb +0 -9
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "nokogiri"
4
-
5
- module Sts
6
- module IsoSts
7
- module Mathml2
8
- class Math < Lutaml::Model::Serializable
9
- attribute :id, :string
10
- attribute :display, :string
11
- attribute :content, :string, collection: true
12
- xml do
13
- namespace ::Sts::Namespaces::MathmlNamespace
14
- element "math"
15
- mixed_content
16
- map_attribute :id, to: :id
17
- map_attribute :display, to: :display
18
- map_content to: :content
19
- end
20
-
21
- MATH_NS = "http://www.w3.org/1998/Math/MathML"
22
-
23
- def to_xml(*)
24
- @original_xml || %{<math xmlns="#{MATH_NS}"/>}
25
- end
26
-
27
- def self.from_xml(input)
28
- input_str = input.respond_to?(:read) ? input.read : input.to_s
29
-
30
- doc = parse_with_namespace(input_str)
31
- math_element = find_math_element(doc)
32
- return new if math_element.nil?
33
-
34
- math = new
35
- math.id = math_element["id"]
36
- math.display = math_element["display"]
37
- math.content = extract_inner_content(math_element)
38
- math.instance_variable_set(:@original_xml, math_element.to_xml)
39
- math
40
- end
41
-
42
- def self.parse_with_namespace(xml_str)
43
- # Detect namespace-prefixed math elements and wrap to resolve prefixes
44
- if xml_str.include?("<mml:") || xml_str.match?(/<\w+:math[\s>]/)
45
- wrapped = "<wrapper xmlns:mml=\"#{MATH_NS}\">#{xml_str}</wrapper>"
46
- Nokogiri::XML(wrapped)
47
- else
48
- Nokogiri::XML(xml_str)
49
- end
50
- end
51
- private_class_method :parse_with_namespace
52
-
53
- def self.find_math_element(doc)
54
- doc.at_xpath("//math[@xmlns='#{MATH_NS}']") ||
55
- doc.at_xpath(".//mml:math", "mml" => MATH_NS) ||
56
- doc.at_xpath(".//*[local-name()='math']")
57
- end
58
- private_class_method :find_math_element
59
-
60
- def self.extract_inner_content(math_element)
61
- content = math_element.children.to_xml
62
- content.empty? ? nil : content
63
- end
64
- private_class_method :extract_inner_content
65
- end
66
- end
67
- end
68
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Sts
4
- module IsoSts
5
- module Mathml2
6
- autoload :Math, "#{__dir__}/mathml2/math"
7
- end
8
- end
9
- end