unitsdb 2.2.2 → 2.2.4

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/opal.yml +36 -0
  3. data/.gitignore +3 -0
  4. data/Gemfile +2 -1
  5. data/Rakefile +3 -1
  6. data/lib/unitsdb/cli.rb +5 -41
  7. data/lib/unitsdb/commands/_modify.rb +1 -34
  8. data/lib/unitsdb/commands/check_si/si_formatter.rb +6 -6
  9. data/lib/unitsdb/commands/check_si/si_matcher.rb +202 -292
  10. data/lib/unitsdb/commands/check_si/si_updater.rb +16 -36
  11. data/lib/unitsdb/commands/entity_presenter.rb +98 -0
  12. data/lib/unitsdb/commands/get.rb +16 -113
  13. data/lib/unitsdb/commands/qudt/formatter.rb +16 -27
  14. data/lib/unitsdb/commands/qudt/matcher.rb +18 -28
  15. data/lib/unitsdb/commands/qudt/updater.rb +8 -11
  16. data/lib/unitsdb/commands/qudt.rb +1 -34
  17. data/lib/unitsdb/commands/search.rb +33 -188
  18. data/lib/unitsdb/commands/thor.rb +41 -0
  19. data/lib/unitsdb/commands/ucum/formatter.rb +9 -18
  20. data/lib/unitsdb/commands/ucum/matcher.rb +4 -4
  21. data/lib/unitsdb/commands/ucum/updater.rb +3 -5
  22. data/lib/unitsdb/commands/ucum.rb +1 -34
  23. data/lib/unitsdb/commands/validate/qudt_references.rb +29 -70
  24. data/lib/unitsdb/commands/validate/references.rb +5 -303
  25. data/lib/unitsdb/commands/validate/si_references.rb +30 -66
  26. data/lib/unitsdb/commands/validate/ucum_references.rb +30 -64
  27. data/lib/unitsdb/commands/validate.rb +1 -36
  28. data/lib/unitsdb/commands.rb +2 -0
  29. data/lib/unitsdb/config.rb +83 -29
  30. data/lib/unitsdb/database/loader.rb +135 -0
  31. data/lib/unitsdb/database/reference_validator.rb +227 -0
  32. data/lib/unitsdb/database/uniqueness_validator.rb +80 -0
  33. data/lib/unitsdb/database.rb +124 -584
  34. data/lib/unitsdb/dimension.rb +0 -27
  35. data/lib/unitsdb/dimensions.rb +0 -2
  36. data/lib/unitsdb/opal.rb +43 -0
  37. data/lib/unitsdb/prefix.rb +0 -13
  38. data/lib/unitsdb/prefixes.rb +0 -2
  39. data/lib/unitsdb/quantities.rb +0 -1
  40. data/lib/unitsdb/quantity.rb +0 -2
  41. data/lib/unitsdb/quantity_reference.rb +0 -2
  42. data/lib/unitsdb/root_unit_reference.rb +0 -2
  43. data/lib/unitsdb/scale.rb +0 -2
  44. data/lib/unitsdb/scale_properties.rb +0 -1
  45. data/lib/unitsdb/scales.rb +0 -1
  46. data/lib/unitsdb/si_derived_base.rb +0 -1
  47. data/lib/unitsdb/symbol_presentations.rb +0 -2
  48. data/lib/unitsdb/unit.rb +0 -34
  49. data/lib/unitsdb/unit_system.rb +0 -2
  50. data/lib/unitsdb/unit_systems.rb +0 -2
  51. data/lib/unitsdb/units.rb +0 -2
  52. data/lib/unitsdb/version.rb +1 -1
  53. data/lib/unitsdb.rb +142 -35
  54. data/unitsdb.gemspec +1 -0
  55. metadata +23 -2
@@ -1,34 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # NISTd1:
4
- # length:
5
- # power: 1
6
- # symbol: L
7
- # dim_symbols:
8
- # - id: "dim_L"
9
- # ascii: "L"
10
- # html: "𝖫"
11
- # mathml: "<mi mathvariant='sans-serif'>L</mi>"
12
- # latex: \ensuremath{\mathsf{L}}
13
- # unicode: "𝖫"
14
-
15
- # NISTd9:
16
- # -dimensionless: true
17
- # -plane_angle:
18
- # - dim_symbols:
19
- # - - ascii: phi
20
- # - html: "&#x1D785;"
21
- # - id: dim_phi
22
- # - latex: "\\ensuremath{\\mathsf{\\phi}}"
23
- # - mathml: "<mi mathvariant='sans-serif'>&#x3c6;</mi>"
24
- # - unicode: "\U0001D785"
25
- # - power: 1
26
- # - symbol: phi
27
-
28
3
  module Unitsdb
29
4
  class Dimension < Lutaml::Model::Serializable
30
- # model Config.model_for(:dimension)
31
-
32
5
  attribute :identifiers, Identifier, collection: true
33
6
  attribute :dimensionless, :boolean
34
7
  attribute :length, DimensionDetails
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class Dimensions < Lutaml::Model::Serializable
5
- # model Config.model_for(:dimensions)
6
-
7
5
  attribute :schema_version, :string
8
6
  attribute :version, :string
9
7
  attribute :dimensions, Dimension, collection: true
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Opal entry point for unitsdb.
4
+ #
5
+ # Under MRI, lib/unitsdb.rb uses autoload for lazy loading. Under Opal,
6
+ # autoload does not lazy-execute, so a single eager-require file lists
7
+ # every entry point the consumer (unitsml-ruby, plurimath-js) needs.
8
+ # Consumers add `-r unitsdb/opal` to their Opal compile command.
9
+
10
+ require "lutaml/model"
11
+ require "unitsdb"
12
+ require "unitsdb/config"
13
+ require "unitsdb/identifier"
14
+ require "unitsdb/localized_string"
15
+ require "unitsdb/symbol_presentations"
16
+ require "unitsdb/scale_properties"
17
+ require "unitsdb/unit_reference"
18
+ require "unitsdb/prefix_reference"
19
+ require "unitsdb/quantity_reference"
20
+ require "unitsdb/dimension_reference"
21
+ require "unitsdb/unit_system_reference"
22
+ require "unitsdb/scale_reference"
23
+ require "unitsdb/external_reference"
24
+ require "unitsdb/root_unit_reference"
25
+ require "unitsdb/si_derived_base"
26
+ require "unitsdb/dimension_details"
27
+ require "unitsdb/dimension"
28
+ require "unitsdb/prefix"
29
+ require "unitsdb/unit_system"
30
+ require "unitsdb/quantity"
31
+ require "unitsdb/scale"
32
+ require "unitsdb/unit"
33
+ require "unitsdb/dimensions"
34
+ require "unitsdb/prefixes"
35
+ require "unitsdb/quantities"
36
+ require "unitsdb/scales"
37
+ require "unitsdb/unit_systems"
38
+ require "unitsdb/units"
39
+ require "unitsdb/database"
40
+ require "unitsdb/qudt"
41
+ require "unitsdb/ucum"
42
+ require "unitsdb/errors"
43
+ require "unitsdb/utils"
@@ -1,20 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # ---
4
- # NISTp10_30:
5
- # name: quetta
6
- # symbol:
7
- # ascii: Q
8
- # html: Q
9
- # latex: Q
10
- # unicode: Q
11
- # base: 10
12
- # power: 30
13
-
14
3
  module Unitsdb
15
4
  class Prefix < Lutaml::Model::Serializable
16
- # model Config.model_for(:prefix)
17
-
18
5
  attribute :identifiers, Identifier, collection: true
19
6
  attribute :names, LocalizedString, collection: true
20
7
  attribute :short, :string
@@ -13,8 +13,6 @@
13
13
 
14
14
  module Unitsdb
15
15
  class Prefixes < Lutaml::Model::Serializable
16
- # model Config.model_for(:prefixes)
17
-
18
16
  attribute :schema_version, :string
19
17
  attribute :version, :string
20
18
  attribute :prefixes, Prefix, collection: true
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class Quantities < Lutaml::Model::Serializable
5
- # model Config.model_for(:quantities)
6
5
  attribute :schema_version, :string
7
6
  attribute :version, :string
8
7
  attribute :quantities, Quantity, collection: true
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class Quantity < Lutaml::Model::Serializable
5
- # model Config.model_for(:quantity)
6
-
7
5
  attribute :identifiers, Identifier, collection: true
8
6
  attribute :quantity_type, :string
9
7
  attribute :names, LocalizedString, collection: true
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class QuantityReference < Identifier
5
- # model Config.model_for(:quantity_reference)
6
-
7
5
  attribute :id, :string
8
6
  attribute :type, :string
9
7
  end
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class RootUnitReference < Lutaml::Model::Serializable
5
- # model Config.model_for(:root_unit)
6
-
7
5
  attribute :power, :integer
8
6
  attribute :unit_reference, UnitReference
9
7
  attribute :prefix_reference, PrefixReference
data/lib/unitsdb/scale.rb CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class Scale < Lutaml::Model::Serializable
5
- # model Config.model_for(:quantity)
6
-
7
5
  attribute :identifiers, Identifier, collection: true
8
6
  attribute :names, LocalizedString, collection: true
9
7
  attribute :description, LocalizedString, collection: true
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class ScaleProperties < Lutaml::Model::Serializable
5
- # model Config.model_for(:quantity)
6
5
  attribute :continuous, :boolean
7
6
  attribute :ordered, :boolean
8
7
  attribute :logarithmic, :boolean
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class Scales < Lutaml::Model::Serializable
5
- # model Config.model_for(:Scale)
6
5
  attribute :schema_version, :string
7
6
  attribute :version, :string
8
7
  attribute :scales, Scale, collection: true
@@ -12,7 +12,6 @@
12
12
 
13
13
  module Unitsdb
14
14
  class SiDerivedBase < RootUnitReference
15
- # model Config.model_for(:si_derived_base)
16
15
  end
17
16
 
18
17
  Config.register_model(SiDerivedBase, id: :si_derived_base)
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class SymbolPresentations < Lutaml::Model::Serializable
5
- # model Config.model_for(:symbol_presentations)
6
-
7
5
  attribute :id, :string
8
6
  attribute :ascii, :string
9
7
  attribute :html, :string
data/lib/unitsdb/unit.rb CHANGED
@@ -1,41 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # "NISTu10":
4
- # dimension_url: "#NISTd9"
5
- # short: steradian
6
- # root: true
7
- # unit_system:
8
- # type: "SI_derived_special"
9
- # name: "SI"
10
- # names:
11
- # - "steradian"
12
- # unit_symbols:
13
- # - id: "sr"
14
- # ascii: "sr"
15
- # html: "sr"
16
- # mathml: "<mi mathvariant='normal'>sr</mi>"
17
- # latex: \ensuremath{\mathrm{sr}}
18
- # unicode: "sr"
19
- # root_units:
20
- # enumerated_root_units:
21
- # - unit: "steradian"
22
- # power_denominator: 1
23
- # power: 1
24
- # quantity_reference:
25
- # - name: "solid angle"
26
- # url: "#NISTq11"
27
- # si_derived_bases:
28
- # - id: NISTu1
29
- # prefix:
30
- # power: 1
31
- # - id: NISTu1
32
- # prefix:
33
- # power: -1
34
-
35
3
  module Unitsdb
36
4
  class Unit < Lutaml::Model::Serializable
37
- # model Config.model_for(:unit)
38
-
39
5
  attribute :identifiers, Identifier, collection: true
40
6
  attribute :short, :string
41
7
  attribute :root, :boolean
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class UnitSystem < Lutaml::Model::Serializable
5
- # model Config.model_for(:unit_system)
6
-
7
5
  attribute :identifiers, Identifier, collection: true
8
6
  attribute :names, LocalizedString, collection: true
9
7
  attribute :short, :string
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class UnitSystems < Lutaml::Model::Serializable
5
- # model Config.model_for(:unit_systems)
6
-
7
5
  attribute :schema_version, :string
8
6
  attribute :version, :string
9
7
  attribute :unit_systems, UnitSystem, collection: true
data/lib/unitsdb/units.rb CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Unitsdb
4
4
  class Units < Lutaml::Model::Serializable
5
- # model Config.model_for(:units)
6
-
7
5
  attribute :schema_version, :string
8
6
  attribute :version, :string
9
7
  attribute :units, Unit, collection: true
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Unitsdb
4
- VERSION = "2.2.2"
4
+ VERSION = "2.2.4"
5
5
 
6
6
  # The version of the bundled UnitsDB data (from the data/ submodule).
7
7
  # This version corresponds to a tag/commit in https://github.com/unitsml/unitsdb.
data/lib/unitsdb.rb CHANGED
@@ -1,46 +1,124 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "lutaml/model"
4
- require "unitsdb/config"
5
- require "unitsdb/identifier"
6
- require "unitsdb/localized_string"
7
- require "unitsdb/symbol_presentations"
8
- require "unitsdb/scale_properties"
9
- require "unitsdb/unit_reference"
10
- require "unitsdb/prefix_reference"
11
- require "unitsdb/quantity_reference"
12
- require "unitsdb/dimension_reference"
13
- require "unitsdb/unit_system_reference"
14
- require "unitsdb/scale_reference"
15
- require "unitsdb/external_reference"
16
- require "unitsdb/root_unit_reference"
17
- require "unitsdb/si_derived_base"
18
- require "unitsdb/dimension_details"
19
- require "unitsdb/dimension"
20
- require "unitsdb/prefix"
21
- require "unitsdb/unit_system"
22
- require "unitsdb/quantity"
23
- require "unitsdb/scale"
24
- require "unitsdb/unit"
25
- require "unitsdb/dimensions"
26
- require "unitsdb/prefixes"
27
- require "unitsdb/quantities"
28
- require "unitsdb/scales"
29
- require "unitsdb/unit_systems"
30
- require "unitsdb/units"
31
- require "unitsdb/database"
32
- require "unitsdb/qudt"
33
- require "unitsdb/ucum"
34
4
 
35
5
  module Unitsdb
36
- # Core models are eagerly loaded so type registrations are complete before
37
- # any context or database loading happens.
6
+ # All model constants are autoloaded from their respective files.
7
+ # Config.build_registry triggers `eager_load_models!` so the type
8
+ # registry is complete before iteration — otherwise autoload would
9
+ # leave unreferenced models (Scale, Qudt*, Ucum*) unregistered.
10
+
11
+ autoload :Config, "unitsdb/config"
12
+ autoload :Errors, "unitsdb/errors"
13
+ autoload :Utils, "unitsdb/utils"
14
+ autoload :Database, "unitsdb/database"
15
+
16
+ # Leaf models
17
+ autoload :Identifier, "unitsdb/identifier"
18
+ autoload :LocalizedString, "unitsdb/localized_string"
19
+ autoload :SymbolPresentations, "unitsdb/symbol_presentations"
20
+ autoload :ScaleProperties, "unitsdb/scale_properties"
21
+
22
+ # Reference models
23
+ autoload :UnitReference, "unitsdb/unit_reference"
24
+ autoload :PrefixReference, "unitsdb/prefix_reference"
25
+ autoload :QuantityReference, "unitsdb/quantity_reference"
26
+ autoload :DimensionReference, "unitsdb/dimension_reference"
27
+ autoload :UnitSystemReference, "unitsdb/unit_system_reference"
28
+ autoload :ScaleReference, "unitsdb/scale_reference"
29
+ autoload :ExternalReference, "unitsdb/external_reference"
30
+ autoload :RootUnitReference, "unitsdb/root_unit_reference"
31
+ autoload :SiDerivedBase, "unitsdb/si_derived_base"
32
+ autoload :DimensionDetails, "unitsdb/dimension_details"
33
+
34
+ # Entity models
35
+ autoload :Dimension, "unitsdb/dimension"
36
+ autoload :Prefix, "unitsdb/prefix"
37
+ autoload :UnitSystem, "unitsdb/unit_system"
38
+ autoload :Quantity, "unitsdb/quantity"
39
+ autoload :Scale, "unitsdb/scale"
40
+ autoload :Unit, "unitsdb/unit"
41
+
42
+ # Collection container models
43
+ autoload :Dimensions, "unitsdb/dimensions"
44
+ autoload :Prefixes, "unitsdb/prefixes"
45
+ autoload :Quantities, "unitsdb/quantities"
46
+ autoload :Scales, "unitsdb/scales"
47
+ autoload :UnitSystems, "unitsdb/unit_systems"
48
+ autoload :Units, "unitsdb/units"
49
+
50
+ # QUDT vocabulary models — all defined in unitsdb/qudt.rb
51
+ autoload :QudtUnit, "unitsdb/qudt"
52
+ autoload :QudtQuantityKind, "unitsdb/qudt"
53
+ autoload :QudtDimensionVector, "unitsdb/qudt"
54
+ autoload :QudtSystemOfUnits, "unitsdb/qudt"
55
+ autoload :QudtPrefix, "unitsdb/qudt"
56
+ autoload :QudtVocabularies, "unitsdb/qudt"
57
+
58
+ # UCUM XML models — all defined in unitsdb/ucum.rb
59
+ autoload :UcumBaseUnit, "unitsdb/ucum"
60
+ autoload :UcumPrefixValue, "unitsdb/ucum"
61
+ autoload :UcumPrefix, "unitsdb/ucum"
62
+ autoload :UcumUnitValueFunction, "unitsdb/ucum"
63
+ autoload :UcumUnitValue, "unitsdb/ucum"
64
+ autoload :UcumUnit, "unitsdb/ucum"
65
+ autoload :UcumNamespace, "unitsdb/ucum"
66
+ autoload :UcumFile, "unitsdb/ucum"
67
+
68
+ # CLI and Commands pull in Thor, which doesn't run under Opal.
38
69
  unless RUBY_ENGINE == "opal"
39
70
  autoload :Cli, "unitsdb/cli"
40
71
  autoload :Commands, "unitsdb/commands"
41
72
  end
42
- autoload :Errors, "unitsdb/errors"
43
- autoload :Utils, "unitsdb/utils"
73
+
74
+ # Constants eagerly loaded so Lutaml::Model type registrations are
75
+ # complete before Config.build_registry iterates them. Listed
76
+ # explicitly so unreferenced models (Scale, Qudt*, Ucum*) still
77
+ # register themselves via their file-bottom `Config.register_model`
78
+ # calls.
79
+ MODELS = %i[
80
+ Identifier
81
+ LocalizedString
82
+ SymbolPresentations
83
+ ScaleProperties
84
+ UnitReference
85
+ PrefixReference
86
+ QuantityReference
87
+ DimensionReference
88
+ UnitSystemReference
89
+ ScaleReference
90
+ ExternalReference
91
+ RootUnitReference
92
+ SiDerivedBase
93
+ DimensionDetails
94
+ Dimension
95
+ Prefix
96
+ UnitSystem
97
+ Quantity
98
+ Scale
99
+ Unit
100
+ Dimensions
101
+ Prefixes
102
+ Quantities
103
+ Scales
104
+ UnitSystems
105
+ Units
106
+ Database
107
+ QudtUnit
108
+ QudtQuantityKind
109
+ QudtDimensionVector
110
+ QudtSystemOfUnits
111
+ QudtPrefix
112
+ QudtVocabularies
113
+ UcumBaseUnit
114
+ UcumPrefixValue
115
+ UcumPrefix
116
+ UcumUnitValueFunction
117
+ UcumUnitValue
118
+ UcumUnit
119
+ UcumNamespace
120
+ UcumFile
121
+ ].freeze
44
122
 
45
123
  class << self
46
124
  # Returns the path to the bundled data directory containing YAML files
@@ -51,13 +129,42 @@ module Unitsdb
51
129
  # Returns a pre-loaded Database instance from the bundled data
52
130
  def database(context: Config.context_id)
53
131
  context_id = context.to_sym
54
- Config.context(context_id) if context_id == Config.context_id && Config.find_context(context_id).nil?
132
+ Config.ensure_default_context! if context_id == Config.context_id
55
133
  klass = Config.resolve_type(:database, context: context_id)
56
134
  databases[context_id] ||= klass.from_db(data_dir, context: context_id)
57
135
  end
58
136
 
137
+ # Drop the memoized Database instances so the next `database` call
138
+ # reloads from disk. Specs use this between examples.
139
+ def reset_database_cache!
140
+ @databases = nil
141
+ end
142
+
143
+ # Force every autoloaded model to load AND register itself with
144
+ # Config. The per-file `Config.register_model(Class, id: :foo)`
145
+ # calls at file-bottom run the first time a model loads, but
146
+ # `Config.capture_state` / `restore_state` can wipe those entries
147
+ # between tests. Re-registering here makes the registry
148
+ # self-healing across snapshot/restore cycles.
149
+ def eager_load_models!
150
+ MODELS.each do |sym|
151
+ klass = const_get(sym)
152
+ next unless klass.is_a?(Class) && klass < ::Lutaml::Model::Serializable
153
+
154
+ Config.register_model(klass, id: model_id_for(klass))
155
+ end
156
+ end
157
+
59
158
  private
60
159
 
160
+ def model_id_for(klass)
161
+ klass.name.split("::").last
162
+ .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
163
+ .gsub(/([a-z\d])([A-Z])/, '\1_\2')
164
+ .downcase
165
+ .to_sym
166
+ end
167
+
61
168
  def databases
62
169
  @databases ||= {}
63
170
  end
data/unitsdb.gemspec CHANGED
@@ -34,6 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.require_paths = ["lib"]
35
35
 
36
36
  spec.add_dependency "fuzzy_match"
37
+ spec.add_dependency "logger"
37
38
  spec.add_dependency "lutaml-model", "~> 0.8.0"
38
39
  spec.add_dependency "rdf", "~> 3.1"
39
40
  spec.add_dependency "rdf-turtle", "~> 3.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unitsdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-22 00:00:00.000000000 Z
11
+ date: 2026-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fuzzy_match
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: lutaml-model
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +132,7 @@ extra_rdoc_files: []
118
132
  files:
119
133
  - ".github/workflows/dependent-repos.json"
120
134
  - ".github/workflows/depenedent-gems.yml"
135
+ - ".github/workflows/opal.yml"
121
136
  - ".github/workflows/rake.yml"
122
137
  - ".github/workflows/release.yml"
123
138
  - ".gitignore"
@@ -156,6 +171,7 @@ files:
156
171
  - lib/unitsdb/commands/check_si/si_matcher.rb
157
172
  - lib/unitsdb/commands/check_si/si_ttl_parser.rb
158
173
  - lib/unitsdb/commands/check_si/si_updater.rb
174
+ - lib/unitsdb/commands/entity_presenter.rb
159
175
  - lib/unitsdb/commands/get.rb
160
176
  - lib/unitsdb/commands/normalize.rb
161
177
  - lib/unitsdb/commands/qudt.rb
@@ -167,6 +183,7 @@ files:
167
183
  - lib/unitsdb/commands/qudt/updater.rb
168
184
  - lib/unitsdb/commands/release.rb
169
185
  - lib/unitsdb/commands/search.rb
186
+ - lib/unitsdb/commands/thor.rb
170
187
  - lib/unitsdb/commands/ucum.rb
171
188
  - lib/unitsdb/commands/ucum/check.rb
172
189
  - lib/unitsdb/commands/ucum/formatter.rb
@@ -182,6 +199,9 @@ files:
182
199
  - lib/unitsdb/commands/validate/ucum_references.rb
183
200
  - lib/unitsdb/config.rb
184
201
  - lib/unitsdb/database.rb
202
+ - lib/unitsdb/database/loader.rb
203
+ - lib/unitsdb/database/reference_validator.rb
204
+ - lib/unitsdb/database/uniqueness_validator.rb
185
205
  - lib/unitsdb/dimension.rb
186
206
  - lib/unitsdb/dimension_details.rb
187
207
  - lib/unitsdb/dimension_reference.rb
@@ -190,6 +210,7 @@ files:
190
210
  - lib/unitsdb/external_reference.rb
191
211
  - lib/unitsdb/identifier.rb
192
212
  - lib/unitsdb/localized_string.rb
213
+ - lib/unitsdb/opal.rb
193
214
  - lib/unitsdb/prefix.rb
194
215
  - lib/unitsdb/prefix_reference.rb
195
216
  - lib/unitsdb/prefixes.rb