lutaml-model 0.3.0 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +0 -5
  3. data/.rubocop_todo.yml +20 -101
  4. data/Gemfile +3 -18
  5. data/README.adoc +1100 -140
  6. data/lib/lutaml/model/attribute.rb +15 -2
  7. data/lib/lutaml/model/config.rb +0 -1
  8. data/lib/lutaml/model/error/invalid_value_error.rb +18 -0
  9. data/lib/lutaml/model/error.rb +8 -0
  10. data/lib/lutaml/model/json_adapter/json_document.rb +20 -0
  11. data/lib/lutaml/model/json_adapter/json_object.rb +28 -0
  12. data/lib/lutaml/model/json_adapter/{multi_json.rb → multi_json_adapter.rb} +2 -3
  13. data/lib/lutaml/model/json_adapter/{standard.rb → standard_json_adapter.rb} +2 -3
  14. data/lib/lutaml/model/json_adapter.rb +1 -31
  15. data/lib/lutaml/model/key_value_mapping.rb +9 -2
  16. data/lib/lutaml/model/key_value_mapping_rule.rb +0 -1
  17. data/lib/lutaml/model/mapping_hash.rb +0 -2
  18. data/lib/lutaml/model/mapping_rule.rb +5 -3
  19. data/lib/lutaml/model/schema/json_schema.rb +0 -1
  20. data/lib/lutaml/model/schema/relaxng_schema.rb +0 -1
  21. data/lib/lutaml/model/schema/xsd_schema.rb +0 -1
  22. data/lib/lutaml/model/schema/yaml_schema.rb +0 -1
  23. data/lib/lutaml/model/schema.rb +0 -1
  24. data/lib/lutaml/model/serializable.rb +0 -1
  25. data/lib/lutaml/model/serialize.rb +241 -153
  26. data/lib/lutaml/model/toml_adapter/toml_document.rb +20 -0
  27. data/lib/lutaml/model/toml_adapter/toml_object.rb +28 -0
  28. data/lib/lutaml/model/toml_adapter/toml_rb_adapter.rb +4 -5
  29. data/lib/lutaml/model/toml_adapter/tomlib_adapter.rb +2 -3
  30. data/lib/lutaml/model/toml_adapter.rb +0 -31
  31. data/lib/lutaml/model/type/date_time.rb +20 -0
  32. data/lib/lutaml/model/type/json.rb +34 -0
  33. data/lib/lutaml/model/type/time_without_date.rb +4 -3
  34. data/lib/lutaml/model/type.rb +61 -124
  35. data/lib/lutaml/model/version.rb +1 -1
  36. data/lib/lutaml/model/xml_adapter/nokogiri_adapter.rb +20 -13
  37. data/lib/lutaml/model/xml_adapter/oga_adapter.rb +4 -5
  38. data/lib/lutaml/model/xml_adapter/ox_adapter.rb +24 -17
  39. data/lib/lutaml/model/xml_adapter/xml_attribute.rb +27 -0
  40. data/lib/lutaml/model/xml_adapter/xml_document.rb +184 -0
  41. data/lib/lutaml/model/xml_adapter/xml_element.rb +94 -0
  42. data/lib/lutaml/model/xml_adapter/xml_namespace.rb +49 -0
  43. data/lib/lutaml/model/xml_adapter.rb +0 -266
  44. data/lib/lutaml/model/xml_mapping.rb +1 -1
  45. data/lib/lutaml/model/xml_mapping_rule.rb +3 -4
  46. data/lib/lutaml/model/yaml_adapter/standard_yaml_adapter.rb +34 -0
  47. data/lib/lutaml/model/yaml_adapter/yaml_document.rb +20 -0
  48. data/lib/lutaml/model/yaml_adapter/yaml_object.rb +28 -0
  49. data/lib/lutaml/model/yaml_adapter.rb +1 -19
  50. data/lib/lutaml/model.rb +7 -5
  51. metadata +19 -5
  52. data/lib/lutaml/model/xml_namespace.rb +0 -47
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Lutaml
4
+ module Model
5
+ module YamlAdapter
6
+ # Base class for YAML objects
7
+ class YamlObject
8
+ attr_reader :attributes
9
+
10
+ def initialize(attributes = {})
11
+ @attributes = attributes
12
+ end
13
+
14
+ def [](key)
15
+ @attributes[key]
16
+ end
17
+
18
+ def []=(key, value)
19
+ @attributes[key] = value
20
+ end
21
+
22
+ def to_h
23
+ @attributes
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,26 +1,8 @@
1
- # lib/lutaml/model/yaml_adapter.rb
2
- require "yaml"
1
+ # frozen_string_literal: true
3
2
 
4
3
  module Lutaml
5
4
  module Model
6
5
  module YamlAdapter
7
- module Standard
8
- def self.to_yaml(model, *args)
9
- YAML.dump(model.hash_representation(:yaml), *args)
10
- end
11
-
12
- def self.from_yaml(yaml, klass)
13
- data = parse(yaml)
14
- mapped_attrs = klass.send(:apply_mappings, data, :yaml)
15
- klass.new(mapped_attrs)
16
- end
17
-
18
- def self.parse(yaml)
19
- YAML.safe_load(yaml,
20
- permitted_classes: [Date, Time, DateTime, Symbol,
21
- BigDecimal, Hash, Array])
22
- end
23
- end
24
6
  end
25
7
  end
26
8
  end
data/lib/lutaml/model.rb CHANGED
@@ -1,20 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "model/version"
4
-
5
- # lib/lutaml/model.rb
6
- require "nokogiri"
7
- require "json"
8
- require "yaml"
9
4
  require_relative "model/type"
10
5
  require_relative "model/serializable"
11
6
  require_relative "model/json_adapter"
12
7
  require_relative "model/yaml_adapter"
13
8
  require_relative "model/xml_adapter"
14
9
  require_relative "model/toml_adapter"
10
+ require_relative "model/error"
15
11
 
16
12
  module Lutaml
17
13
  module Model
14
+ # Error for passing incorrect model type
15
+ #
16
+ # @api private
17
+ class IncorrectModelError < StandardError
18
+ end
19
+
18
20
  class BaseModel < Serializable
19
21
  end
20
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lutaml-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-02 00:00:00.000000000 Z
11
+ date: 2024-08-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'LutaML creating data models in Ruby
14
14
 
@@ -34,9 +34,13 @@ files:
34
34
  - lib/lutaml/model.rb
35
35
  - lib/lutaml/model/attribute.rb
36
36
  - lib/lutaml/model/config.rb
37
+ - lib/lutaml/model/error.rb
38
+ - lib/lutaml/model/error/invalid_value_error.rb
37
39
  - lib/lutaml/model/json_adapter.rb
38
- - lib/lutaml/model/json_adapter/multi_json.rb
39
- - lib/lutaml/model/json_adapter/standard.rb
40
+ - lib/lutaml/model/json_adapter/json_document.rb
41
+ - lib/lutaml/model/json_adapter/json_object.rb
42
+ - lib/lutaml/model/json_adapter/multi_json_adapter.rb
43
+ - lib/lutaml/model/json_adapter/standard_json_adapter.rb
40
44
  - lib/lutaml/model/key_value_mapping.rb
41
45
  - lib/lutaml/model/key_value_mapping_rule.rb
42
46
  - lib/lutaml/model/mapping_hash.rb
@@ -49,19 +53,29 @@ files:
49
53
  - lib/lutaml/model/serializable.rb
50
54
  - lib/lutaml/model/serialize.rb
51
55
  - lib/lutaml/model/toml_adapter.rb
56
+ - lib/lutaml/model/toml_adapter/toml_document.rb
57
+ - lib/lutaml/model/toml_adapter/toml_object.rb
52
58
  - lib/lutaml/model/toml_adapter/toml_rb_adapter.rb
53
59
  - lib/lutaml/model/toml_adapter/tomlib_adapter.rb
54
60
  - lib/lutaml/model/type.rb
61
+ - lib/lutaml/model/type/date_time.rb
62
+ - lib/lutaml/model/type/json.rb
55
63
  - lib/lutaml/model/type/time_without_date.rb
56
64
  - lib/lutaml/model/version.rb
57
65
  - lib/lutaml/model/xml_adapter.rb
58
66
  - lib/lutaml/model/xml_adapter/nokogiri_adapter.rb
59
67
  - lib/lutaml/model/xml_adapter/oga_adapter.rb
60
68
  - lib/lutaml/model/xml_adapter/ox_adapter.rb
69
+ - lib/lutaml/model/xml_adapter/xml_attribute.rb
70
+ - lib/lutaml/model/xml_adapter/xml_document.rb
71
+ - lib/lutaml/model/xml_adapter/xml_element.rb
72
+ - lib/lutaml/model/xml_adapter/xml_namespace.rb
61
73
  - lib/lutaml/model/xml_mapping.rb
62
74
  - lib/lutaml/model/xml_mapping_rule.rb
63
- - lib/lutaml/model/xml_namespace.rb
64
75
  - lib/lutaml/model/yaml_adapter.rb
76
+ - lib/lutaml/model/yaml_adapter/standard_yaml_adapter.rb
77
+ - lib/lutaml/model/yaml_adapter/yaml_document.rb
78
+ - lib/lutaml/model/yaml_adapter/yaml_object.rb
65
79
  - lutaml-model.gemspec
66
80
  - sig/lutaml/model.rbs
67
81
  homepage: https://github.com/lutaml/lutaml-model
@@ -1,47 +0,0 @@
1
- # frozen_striing_literal: true
2
-
3
- module Lutaml
4
- module Model
5
- class XmlNamespace
6
- # Return name
7
- #
8
- # @return [String]
9
- #
10
- # @api private
11
- attr_accessor :uri
12
-
13
- # Return prefix
14
- #
15
- # @return [String]
16
- #
17
- # @api private
18
- attr_accessor :prefix
19
-
20
- # Initialize instance
21
- #
22
- # @param [String, nil] name
23
- # @param [String, nil] prefix
24
- #
25
- # @api private
26
- def initialize(uri = nil, prefix = nil)
27
- @uri = uri
28
- @prefix = normalize_prefix(prefix)
29
- end
30
-
31
- def normalize_prefix(prefix)
32
- normalized_prefix = prefix.to_s.gsub(/xmlns:?/, "")
33
- return if normalized_prefix.empty?
34
-
35
- normalized_prefix
36
- end
37
-
38
- def attr_name
39
- if prefix && !prefix.empty?
40
- "xmlns:#{prefix}"
41
- else
42
- "xmlns"
43
- end
44
- end
45
- end
46
- end
47
- end