suma 0.2.6 → 0.4.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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -1
  3. data/.rubocop_todo.yml +170 -13
  4. data/CLAUDE.md +37 -11
  5. data/Gemfile +3 -3
  6. data/README.adoc +127 -13
  7. data/exe/suma +1 -1
  8. data/lib/suma/cli/build.rb +0 -5
  9. data/lib/suma/cli/check_svg_quality.rb +82 -97
  10. data/lib/suma/cli/compare.rb +0 -1
  11. data/lib/suma/cli/convert_jsdai.rb +0 -2
  12. data/lib/suma/cli/core.rb +119 -0
  13. data/lib/suma/cli/export.rb +37 -22
  14. data/lib/suma/cli/extract_terms.rb +5 -8
  15. data/lib/suma/cli/generate_register.rb +34 -0
  16. data/lib/suma/cli/generate_schemas.rb +0 -2
  17. data/lib/suma/cli/reformat.rb +39 -64
  18. data/lib/suma/cli/validate.rb +14 -7
  19. data/lib/suma/cli/validate_links.rb +11 -157
  20. data/lib/suma/cli.rb +12 -141
  21. data/lib/suma/collection_config.rb +0 -2
  22. data/lib/suma/collection_manifest.rb +7 -110
  23. data/lib/suma/eengine/wrapper.rb +0 -1
  24. data/lib/suma/eengine.rb +8 -0
  25. data/lib/suma/express_reformatter.rb +94 -0
  26. data/lib/suma/express_schema.rb +0 -1
  27. data/lib/suma/jsdai/figure.rb +0 -3
  28. data/lib/suma/jsdai.rb +5 -2
  29. data/lib/suma/link_validation.rb +144 -0
  30. data/lib/suma/link_validator.rb +17 -8
  31. data/lib/suma/manifest_traverser.rb +92 -0
  32. data/lib/suma/processor.rb +5 -8
  33. data/lib/suma/register_manifest_generator.rb +163 -0
  34. data/lib/suma/schema_category.rb +83 -0
  35. data/lib/suma/schema_collection.rb +30 -34
  36. data/lib/suma/schema_comparer.rb +4 -3
  37. data/lib/suma/schema_compiler.rb +86 -0
  38. data/lib/suma/schema_discovery.rb +75 -0
  39. data/lib/suma/schema_exporter.rb +14 -42
  40. data/lib/suma/schema_manifest_generator.rb +14 -6
  41. data/lib/suma/schema_naming.rb +111 -0
  42. data/lib/suma/schema_template/document.rb +141 -0
  43. data/lib/suma/schema_template/plain.rb +46 -0
  44. data/lib/suma/schema_template.rb +19 -0
  45. data/lib/suma/svg_quality/batch_report.rb +0 -2
  46. data/lib/suma/svg_quality/formatters.rb +12 -0
  47. data/lib/suma/svg_quality/scanner.rb +61 -0
  48. data/lib/suma/svg_quality.rb +4 -1
  49. data/lib/suma/term_classification.rb +78 -0
  50. data/lib/suma/term_extractor.rb +125 -81
  51. data/lib/suma/urn.rb +61 -0
  52. data/lib/suma/version.rb +1 -1
  53. data/lib/suma.rb +35 -3
  54. data/suma.gemspec +1 -1
  55. metadata +28 -6
  56. data/lib/suma/schema_attachment.rb +0 -103
  57. data/lib/suma/schema_document.rb +0 -118
@@ -1,118 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "schema_attachment"
4
-
5
- module Suma
6
- class SchemaDocument < SchemaAttachment
7
- def bookmark(anchor)
8
- a = anchor.gsub("}}", ' | replace: "\", "-"}}')
9
- "[[#{@id}.#{a}]]"
10
- end
11
-
12
- def schema_anchors
13
- <<~HEREDOC
14
- // _fund_cons.liquid
15
- [[#{@id}_funds]]
16
-
17
- // _constants.liquid
18
- {% if schema.constants.size > 0 %}
19
- #{bookmark('constants')}
20
- {% for thing in schema.constants %}
21
- #{bookmark('{{thing.id}}')}
22
- {% endfor %}
23
- {% endif %}
24
-
25
- // _types.liquid
26
- {% if schema.types.size > 0 %}
27
- #{bookmark('types')}
28
- // _type.liquid
29
- {% for thing in schema.types %}
30
- #{bookmark('{{thing.id}}')}
31
- {% if thing.items.size > 0 %}
32
- // _type_items.liquid
33
- #{bookmark('{{thing.id}}.items')}
34
- {% for item in thing.items %}
35
- #{bookmark('{{thing.id}}.items.{{item.id}}')}
36
- {% endfor %}
37
- {% endif %}
38
- {% endfor %}
39
- {% endif %}
40
-
41
- // _entities.liquid
42
- {% if schema.entities.size > 0 %}
43
- #{bookmark('entities')}
44
- {% for thing in schema.entities %}
45
- // _entity.liquid
46
- #{bookmark('{{thing.id}}')}
47
- {% endfor %}
48
- {% endif %}
49
-
50
- // _subtype_constraints.liquid
51
- {% if schema.subtype_constraints.size > 0 %}
52
- #{bookmark('subtype_constraints')}
53
- // _subtype_constraint.liquid
54
- {% for thing in schema.subtype_constraints %}
55
- #{bookmark('{{thing.id}}')}
56
- {% endfor %}
57
- {% endif %}
58
-
59
- // _functions.liquid
60
- {% if schema.functions.size > 0 %}
61
- #{bookmark('functions')}
62
- // _function.liquid
63
- {% for thing in schema.functions %}
64
- #{bookmark('{{thing.id}}')}
65
- {% endfor %}
66
- {% endif %}
67
-
68
- // _procedures.liquid
69
- {% if schema.procedures.size > 0 %}
70
- #{bookmark('procedures')}
71
- // _procedure.liquid
72
- {% for thing in schema.procedures %}
73
- #{bookmark('{{thing.id}}')}
74
- {% endfor %}
75
- {% endif %}
76
-
77
- // _rules.liquid
78
- {% if schema.rules.size > 0 %}
79
- #{bookmark('rules')}
80
- // _rule.liquid
81
- {% for thing in schema.rules %}
82
- #{bookmark('{{thing.id}}')}
83
- {% endfor %}
84
- {% endif %}
85
- HEREDOC
86
- end
87
-
88
- def output_extensions
89
- "xml"
90
- end
91
-
92
- def to_adoc(path_to_schema_yaml)
93
- <<~HEREDOC
94
- = #{@schema.id}
95
- :lutaml-express-index: schemas; #{path_to_schema_yaml};
96
- :bare: true
97
- :mn-document-class: iso
98
- :mn-output-extensions: xml,html
99
-
100
- [lutaml_express_liquid,schemas,context]
101
- ----
102
- {% for schema in context.schemas %}
103
-
104
- [[#{@id}]]
105
- [%unnumbered,type=express]
106
- == #{@id} #{schema_anchors.gsub(%r{//[^\r\n]+}, '').gsub(/[\n\r]+/, '').gsub(/^[\n\r]/, '')}
107
-
108
- [source%unnumbered]
109
- --
110
- {{ schema.formatted }}
111
- --
112
- {% endfor %}
113
- ----
114
-
115
- HEREDOC
116
- end
117
- end
118
- end