lutaml-model 0.3.0 → 0.3.2
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/.rubocop.yml +0 -5
- data/.rubocop_todo.yml +20 -101
- data/Gemfile +3 -18
- data/README.adoc +1100 -140
- data/lib/lutaml/model/attribute.rb +15 -2
- data/lib/lutaml/model/config.rb +0 -1
- data/lib/lutaml/model/error/invalid_value_error.rb +18 -0
- data/lib/lutaml/model/error.rb +8 -0
- data/lib/lutaml/model/json_adapter/json_document.rb +20 -0
- data/lib/lutaml/model/json_adapter/json_object.rb +28 -0
- data/lib/lutaml/model/json_adapter/{multi_json.rb → multi_json_adapter.rb} +2 -3
- data/lib/lutaml/model/json_adapter/{standard.rb → standard_json_adapter.rb} +2 -3
- data/lib/lutaml/model/json_adapter.rb +1 -31
- data/lib/lutaml/model/key_value_mapping.rb +9 -2
- data/lib/lutaml/model/key_value_mapping_rule.rb +0 -1
- data/lib/lutaml/model/mapping_hash.rb +0 -2
- data/lib/lutaml/model/mapping_rule.rb +5 -3
- data/lib/lutaml/model/schema/json_schema.rb +0 -1
- data/lib/lutaml/model/schema/relaxng_schema.rb +0 -1
- data/lib/lutaml/model/schema/xsd_schema.rb +0 -1
- data/lib/lutaml/model/schema/yaml_schema.rb +0 -1
- data/lib/lutaml/model/schema.rb +0 -1
- data/lib/lutaml/model/serializable.rb +0 -1
- data/lib/lutaml/model/serialize.rb +241 -153
- data/lib/lutaml/model/toml_adapter/toml_document.rb +20 -0
- data/lib/lutaml/model/toml_adapter/toml_object.rb +28 -0
- data/lib/lutaml/model/toml_adapter/toml_rb_adapter.rb +4 -5
- data/lib/lutaml/model/toml_adapter/tomlib_adapter.rb +2 -3
- data/lib/lutaml/model/toml_adapter.rb +0 -31
- data/lib/lutaml/model/type/date_time.rb +20 -0
- data/lib/lutaml/model/type/json.rb +34 -0
- data/lib/lutaml/model/type/time_without_date.rb +4 -3
- data/lib/lutaml/model/type.rb +61 -124
- data/lib/lutaml/model/version.rb +1 -1
- data/lib/lutaml/model/xml_adapter/nokogiri_adapter.rb +20 -13
- data/lib/lutaml/model/xml_adapter/oga_adapter.rb +4 -5
- data/lib/lutaml/model/xml_adapter/ox_adapter.rb +24 -17
- data/lib/lutaml/model/xml_adapter/xml_attribute.rb +27 -0
- data/lib/lutaml/model/xml_adapter/xml_document.rb +184 -0
- data/lib/lutaml/model/xml_adapter/xml_element.rb +94 -0
- data/lib/lutaml/model/xml_adapter/xml_namespace.rb +49 -0
- data/lib/lutaml/model/xml_adapter.rb +0 -266
- data/lib/lutaml/model/xml_mapping.rb +1 -1
- data/lib/lutaml/model/xml_mapping_rule.rb +3 -4
- data/lib/lutaml/model/yaml_adapter/standard_yaml_adapter.rb +34 -0
- data/lib/lutaml/model/yaml_adapter/yaml_document.rb +20 -0
- data/lib/lutaml/model/yaml_adapter/yaml_object.rb +28 -0
- data/lib/lutaml/model/yaml_adapter.rb +1 -19
- data/lib/lutaml/model.rb +7 -5
- metadata +19 -5
- 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
|
-
#
|
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.
|
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-
|
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/
|
39
|
-
- lib/lutaml/model/json_adapter/
|
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
|