lutaml-model 0.3.14 → 0.3.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b36d07a850d4736c0634735a198f05dd34c49b906cd1265b3dd49266931eb22
4
- data.tar.gz: cefd0559ad4010ecd2ab0a547ab87493b4958a480f6cb19ab317c248836b8f75
3
+ metadata.gz: b9687a8a307de8226b41a87abda56626627eefe47665628c0e9112b97f27385a
4
+ data.tar.gz: e819f531048e629d4943ea7b613815a568990f372ef2da93162d0d1b4d8395cd
5
5
  SHA512:
6
- metadata.gz: 83fac7632d0eec4f5bd4339132b36d267877932cf34839eac6dbdefd0cd0e551988b73b3cd379b856af0df351e42694c157342efd8baba67e283e71d34b88171
7
- data.tar.gz: 6befe6bfce13fb6175a04f8e0ac81794304d3c56c51feea343334c501346cba517db1f89ab3387ea3300e546d160d24af264048e9762c85debc4063300d57025
6
+ metadata.gz: f47d1336093db1eb45c5225913a9c63d66681de77d5803a21702baab0ca8e571e882a2d8f6f6dcf7b9180c897c9ae8bfd4b2db6532e9691487d104696657457e
7
+ data.tar.gz: 9ec8b8d841606d202acdcca81464761cc0f75e9ae5b35d2c3b8dd01c6e8a122642a348f41de2852b09386d3748eb61b1b2547df8d1ccb146a7d36e5a8ac46257
data/.rubocop_todo.yml CHANGED
@@ -1,12 +1,12 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2024-10-23 12:15:48 UTC using RuboCop version 1.66.1.
3
+ # on 2024-10-28 08:29:46 UTC using RuboCop version 1.66.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 139
9
+ # Offense count: 148
10
10
  # This cop supports safe autocorrection (--autocorrect).
11
11
  # Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
12
12
  # URISchemes: http, https
@@ -69,10 +69,10 @@ Metrics/CyclomaticComplexity:
69
69
  Metrics/MethodLength:
70
70
  Max: 51
71
71
 
72
- # Offense count: 4
72
+ # Offense count: 6
73
73
  # Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
74
74
  Metrics/ParameterLists:
75
- Max: 12
75
+ Max: 13
76
76
 
77
77
  # Offense count: 22
78
78
  # Configuration parameters: AllowedMethods, AllowedPatterns, Max.
@@ -85,7 +85,7 @@ Metrics/PerceivedComplexity:
85
85
  - 'lib/lutaml/model/xml_adapter/ox_adapter.rb'
86
86
  - 'lib/lutaml/model/xml_adapter/xml_document.rb'
87
87
 
88
- # Offense count: 8
88
+ # Offense count: 9
89
89
  # Configuration parameters: Prefixes, AllowedPatterns.
90
90
  # Prefixes: when, with, without
91
91
  RSpec/ContextWording:
@@ -125,7 +125,7 @@ RSpec/MultipleDescribes:
125
125
  - 'spec/lutaml/model/xml_adapter/xml_namespace_spec.rb'
126
126
  - 'spec/lutaml/model/xml_adapter_spec.rb'
127
127
 
128
- # Offense count: 119
128
+ # Offense count: 125
129
129
  RSpec/MultipleExpectations:
130
130
  Max: 14
131
131
 
@@ -134,6 +134,11 @@ RSpec/MultipleExpectations:
134
134
  RSpec/MultipleMemoizedHelpers:
135
135
  Max: 9
136
136
 
137
+ # Offense count: 4
138
+ # Configuration parameters: AllowedGroups.
139
+ RSpec/NestedGroups:
140
+ Max: 4
141
+
137
142
  # Offense count: 7
138
143
  RSpec/PendingWithoutReason:
139
144
  Exclude:
@@ -153,13 +158,14 @@ RSpec/RepeatedExampleGroupDescription:
153
158
  Exclude:
154
159
  - 'spec/lutaml/model/collection_spec.rb'
155
160
 
156
- # Offense count: 2
161
+ # Offense count: 3
157
162
  # Configuration parameters: Include, CustomTransform, IgnoreMethods, IgnoreMetadata.
158
163
  # Include: **/*_spec.rb
159
164
  RSpec/SpecFilePathFormat:
160
165
  Exclude:
161
166
  - '**/spec/routing/**/*'
162
167
  - 'spec/lutaml/model/collection_spec.rb'
168
+ - 'spec/lutaml/model/defaults_spec.rb'
163
169
  - 'spec/lutaml/model/type/decimal_spec.rb'
164
170
 
165
171
  # Offense count: 1
data/README.adoc CHANGED
@@ -390,7 +390,7 @@ acceptance of the newly updated component.
390
390
  ====
391
391
 
392
392
 
393
- === Attribute value default
393
+ === Attribute value default and rendering defaults
394
394
 
395
395
  Specify default values for attributes using the `default` option.
396
396
  The `default` option can be set to a value or a lambda that returns a value.
@@ -423,6 +423,80 @@ end
423
423
  ----
424
424
  ====
425
425
 
426
+ The "default behavior" (pun intended) is to not render a default value if
427
+ the current value is the same as the default value.
428
+
429
+ In certain cases, it is necessary to render the default value even if the
430
+ current value is the same as the default value. This can be achieved by setting
431
+ the `render_default` option to `true`.
432
+
433
+ Syntax:
434
+
435
+ [source,ruby]
436
+ ----
437
+ attribute :name_of_attribute, Type, default: -> { value }, render_default: true
438
+ ----
439
+
440
+ .Using the `render_default` option to force encoding the default value
441
+ [example]
442
+ ====
443
+ [source,ruby]
444
+ ----
445
+ class Glaze < Lutaml::Model::Serializable
446
+ attribute :color, :string, default: -> { 'Clear' }
447
+ attribute :opacity, :string, default: -> { 'Opaque' }
448
+ attribute :temperature, :integer, default: -> { 1050 }
449
+ attribute :firing_time, :integer, default: -> { 60 }
450
+
451
+ xml do
452
+ root "glaze"
453
+ map_element 'color', to: :color
454
+ map_element 'opacity', to: :opacity, render_default: true
455
+ map_attribute 'temperature', to: :temperature
456
+ map_attribute 'firingTime', to: :firing_time, render_default: true
457
+ end
458
+
459
+ json do
460
+ map 'color', to: :color
461
+ map 'opacity', to: :opacity, render_default: true
462
+ map 'temperature', to: :temperature
463
+ map 'firingTime', to: :firing_time, render_default: true
464
+ end
465
+ end
466
+ ----
467
+
468
+ .Attributes with `render_default: true` are rendered when the value is identical to the default
469
+ [example]
470
+ ====
471
+ [source,ruby]
472
+ ----
473
+ > glaze_new = Glaze.new
474
+ > puts glaze_new.to_xml
475
+ # <glaze firingTime="60">
476
+ # <opacity>Opaque</opacity>
477
+ # </glaze>
478
+ > puts glaze_new.to_json
479
+ # {"firingTime":60,"opacity":"Opaque"}
480
+ ----
481
+ ====
482
+
483
+ .Attributes with `render_default: true` with non-default values are rendered
484
+ [example]
485
+ ====
486
+ [source,ruby]
487
+ ----
488
+ > glaze = Glaze.new(color: 'Celadon', opacity: 'Semitransparent', temperature: 1300, firing_time: 90)
489
+ > puts glaze.to_xml
490
+ # <glaze color="Celadon" temperature="1300" firingTime="90">
491
+ # <opacity>Semitransparent</opacity>
492
+ # </glaze>
493
+ > puts glaze.to_json
494
+ # {"color":"Celadon","temperature":1300,"firingTime":90,"opacity":"Semitransparent"}
495
+ ----
496
+ ====
497
+
498
+
499
+
426
500
  === Attribute as raw string
427
501
 
428
502
  An attribute can be set to read the value as raw string for XML, by using the `raw: true` option.
@@ -668,8 +742,10 @@ end
668
742
  > #<example value="12"></example>
669
743
  ----
670
744
 
671
- The map_attribute method does not inherit the root element's namespace. If you need to specify a namespace for an attribute,
672
- you must explicitly declare the namespace and prefix in the map_attribute method.
745
+ The `map_attribute` method does not inherit the root element's namespace.
746
+ To specify a namespace for an attribute, please explicitly declare the
747
+ *namespace* and *prefix* in the `map_attribute` method.
748
+
673
749
  [example]
674
750
  ====
675
751
  The following class will parse the XML snippet below:
@@ -1081,7 +1157,7 @@ end
1081
1157
  ----
1082
1158
  ====
1083
1159
 
1084
- TODO: How to create mixed content from `#new`?
1160
+ // TODO: How to create mixed content from `#new`?
1085
1161
 
1086
1162
  [[xml-schema-location]]
1087
1163
  ==== Automatic support of `xsi:schemaLocation`
@@ -2020,7 +2096,9 @@ Lutaml::Model::Config.configure do |config|
2020
2096
  end
2021
2097
  ----
2022
2098
 
2023
- NOTE: By default `yaml_adapter_type` and `json_adapter_type` are set to `:standard_yaml` and `:standard_json` respectively.
2099
+ NOTE: By default `yaml_adapter_type` and `json_adapter_type` are set to
2100
+ `:standard_yaml` and `:standard_json` respectively.
2101
+
2024
2102
 
2025
2103
  === XML
2026
2104
 
@@ -3,10 +3,20 @@ module Lutaml
3
3
  class Attribute
4
4
  attr_reader :name, :type, :options
5
5
 
6
+ ALLOWED_OPTIONS = %i[
7
+ raw
8
+ default
9
+ delegate
10
+ collection
11
+ values
12
+ ].freeze
13
+
6
14
  def initialize(name, type, options = {})
7
15
  @name = name
8
16
  @type = cast_type(type)
9
17
  @options = options
18
+ validate_options!
19
+
10
20
  @raw = !!options[:raw]
11
21
 
12
22
  if collection?
@@ -66,10 +76,6 @@ module Lutaml
66
76
  cast_value(value)
67
77
  end
68
78
 
69
- def render_nil?
70
- options.fetch(:render_nil, false)
71
- end
72
-
73
79
  def enum_values
74
80
  @options.key?(:values) ? @options[:values] : []
75
81
  end
@@ -203,6 +209,14 @@ module Lutaml
203
209
  Lutaml::Model::Type.cast(value, type)
204
210
  end
205
211
  end
212
+
213
+ private
214
+
215
+ def validate_options!
216
+ if (options = @options.keys - ALLOWED_OPTIONS).any?
217
+ raise StandardError, "Invalid options given for `#{name}` #{options}"
218
+ end
219
+ end
206
220
  end
207
221
  end
208
222
  end
@@ -13,6 +13,7 @@ module Lutaml
13
13
  name,
14
14
  to: nil,
15
15
  render_nil: false,
16
+ render_default: false,
16
17
  with: {},
17
18
  delegate: nil,
18
19
  child_mappings: nil
@@ -23,6 +24,7 @@ module Lutaml
23
24
  name,
24
25
  to: to,
25
26
  render_nil: render_nil,
27
+ render_default: render_default,
26
28
  with: with,
27
29
  delegate: delegate,
28
30
  child_mappings: child_mappings,
@@ -9,6 +9,7 @@ module Lutaml
9
9
  name,
10
10
  to:,
11
11
  render_nil: false,
12
+ render_default: false,
12
13
  with: {},
13
14
  delegate: nil,
14
15
  child_mappings: nil
@@ -17,6 +18,7 @@ module Lutaml
17
18
  name,
18
19
  to: to,
19
20
  render_nil: render_nil,
21
+ render_default: render_default,
20
22
  with: with,
21
23
  delegate: delegate,
22
24
  )
@@ -4,6 +4,8 @@ module Lutaml
4
4
  attr_reader :name,
5
5
  :to,
6
6
  :render_nil,
7
+ :render_default,
8
+ :attribute,
7
9
  :custom_methods,
8
10
  :delegate
9
11
 
@@ -11,6 +13,7 @@ module Lutaml
11
13
  name,
12
14
  to:,
13
15
  render_nil: false,
16
+ render_default: false,
14
17
  with: {},
15
18
  attribute: false,
16
19
  delegate: nil
@@ -18,6 +21,7 @@ module Lutaml
18
21
  @name = name
19
22
  @to = to
20
23
  @render_nil = render_nil
24
+ @render_default = render_default
21
25
  @custom_methods = with
22
26
  @attribute = attribute
23
27
  @delegate = delegate
@@ -25,6 +29,8 @@ module Lutaml
25
29
 
26
30
  alias from name
27
31
  alias render_nil? render_nil
32
+ alias render_default? render_default
33
+ alias attribute? attribute
28
34
 
29
35
  def serialize_attribute(model, element, doc)
30
36
  if custom_methods[:to]
@@ -40,35 +40,30 @@ module Lutaml
40
40
  def model(klass = nil)
41
41
  if klass
42
42
  @model = klass
43
- add_order_handling_methods_to_model(klass)
43
+ add_custom_handling_methods_to_model(klass)
44
44
  else
45
45
  @model
46
46
  end
47
47
  end
48
48
 
49
- def add_order_handling_methods_to_model(klass)
50
- Utils.add_method_if_not_defined(klass, :ordered=) do |ordered|
51
- @ordered = ordered
52
- end
53
-
54
- Utils.add_method_if_not_defined(klass, :ordered?) do
55
- !!@ordered
56
- end
57
-
58
- Utils.add_method_if_not_defined(klass, :mixed=) do |mixed|
59
- @mixed = mixed
60
- end
49
+ def add_custom_handling_methods_to_model(klass)
50
+ Utils.add_boolean_accessor_if_not_defined(klass, :ordered)
51
+ Utils.add_boolean_accessor_if_not_defined(klass, :mixed)
52
+ Utils.add_accessor_if_not_defined(klass, :element_order)
61
53
 
62
- Utils.add_method_if_not_defined(klass, :mixed?) do
63
- !!@mixed
54
+ Utils.add_method_if_not_defined(klass, :using_default_for) do |attribute_name|
55
+ @using_default ||= {}
56
+ @using_default[attribute_name] = true
64
57
  end
65
58
 
66
- Utils.add_method_if_not_defined(klass, :element_order=) do |order|
67
- @element_order = order
59
+ Utils.add_method_if_not_defined(klass, :value_set_for) do |attribute_name|
60
+ @using_default ||= {}
61
+ @using_default[attribute_name] = false
68
62
  end
69
63
 
70
- Utils.add_method_if_not_defined(klass, :element_order) do
71
- @element_order
64
+ Utils.add_method_if_not_defined(klass, :using_default?) do |attribute_name|
65
+ @using_default ||= {}
66
+ !!@using_default[attribute_name]
72
67
  end
73
68
  end
74
69
 
@@ -86,6 +81,7 @@ module Lutaml
86
81
  end
87
82
 
88
83
  define_method(:"#{name}=") do |value|
84
+ value_set_for(name)
89
85
  instance_variable_set(:"@#{name}", attr.cast_value(value))
90
86
  end
91
87
  end
@@ -159,6 +155,7 @@ module Lutaml
159
155
  mappings.each_with_object({}) do |rule, hash|
160
156
  name = rule.to
161
157
  next if except&.include?(name) || (only && !only.include?(name))
158
+ next if !rule.render_default? && instance.using_default?(rule.to)
162
159
 
163
160
  next handle_delegate(instance, rule, hash, format) if rule.delegate
164
161
 
@@ -223,11 +220,10 @@ module Lutaml
223
220
  klass = format == :xml ? XmlMapping : KeyValueMapping
224
221
 
225
222
  klass.new.tap do |mapping|
226
- attributes&.each do |name, attr|
223
+ attributes&.each_key do |name|
227
224
  mapping.map_element(
228
225
  name.to_s,
229
226
  to: name,
230
- render_nil: attr.render_nil?,
231
227
  )
232
228
  end
233
229
 
@@ -304,33 +300,7 @@ module Lutaml
304
300
  return instance if Utils.blank?(doc)
305
301
  return apply_xml_mapping(doc, instance, options) if format == :xml
306
302
 
307
- mappings = mappings_for(format).mappings
308
- mappings.each do |rule|
309
- raise "Attribute '#{rule.to}' not found in #{self}" unless valid_rule?(rule)
310
-
311
- attr = attribute_for_rule(rule)
312
-
313
- value = if doc.key?(rule.name) || doc.key?(rule.name.to_sym)
314
- doc[rule.name] || doc[rule.name.to_sym]
315
- else
316
- attr.default
317
- end
318
-
319
- if rule.custom_methods[:from]
320
- if Utils.present?(value)
321
- value = new.send(rule.custom_methods[:from], instance, value)
322
- end
323
-
324
- next
325
- end
326
-
327
- value = apply_child_mappings(value, rule.child_mappings)
328
- value = attr.cast(value, format)
329
-
330
- rule.deserialize(instance, value, attributes, self)
331
- end
332
-
333
- instance
303
+ apply_hash_mapping(doc, instance, format, options)
334
304
  end
335
305
 
336
306
  def apply_xml_mapping(doc, instance, options = {})
@@ -357,6 +327,8 @@ module Lutaml
357
327
  )
358
328
  end
359
329
 
330
+ defaults_used = []
331
+
360
332
  mappings.each do |rule|
361
333
  raise "Attribute '#{rule.to}' not found in #{self}" unless valid_rule?(rule)
362
334
 
@@ -365,6 +337,7 @@ module Lutaml
365
337
  elsif doc.key_exist?(rule.namespaced_name)
366
338
  doc.fetch(rule.namespaced_name)
367
339
  else
340
+ defaults_used << rule.to
368
341
  rule.to_value_for(instance)
369
342
  end
370
343
 
@@ -372,6 +345,40 @@ module Lutaml
372
345
  rule.deserialize(instance, value, attributes, self)
373
346
  end
374
347
 
348
+ defaults_used.each do |attribute_name|
349
+ instance.using_default_for(attribute_name)
350
+ end
351
+
352
+ instance
353
+ end
354
+
355
+ def apply_hash_mapping(doc, instance, format, _options = {})
356
+ mappings = mappings_for(format).mappings
357
+ mappings.each do |rule|
358
+ raise "Attribute '#{rule.to}' not found in #{self}" unless valid_rule?(rule)
359
+
360
+ attr = attribute_for_rule(rule)
361
+
362
+ value = if doc.key?(rule.name) || doc.key?(rule.name.to_sym)
363
+ doc[rule.name] || doc[rule.name.to_sym]
364
+ else
365
+ attr.default
366
+ end
367
+
368
+ if rule.custom_methods[:from]
369
+ if Utils.present?(value)
370
+ value = new.send(rule.custom_methods[:from], instance, value)
371
+ end
372
+
373
+ next
374
+ end
375
+
376
+ value = apply_child_mappings(value, rule.child_mappings)
377
+ value = attr.cast(value, format)
378
+
379
+ rule.deserialize(instance, value, attributes, self)
380
+ end
381
+
375
382
  instance
376
383
  end
377
384
 
@@ -433,6 +440,7 @@ module Lutaml
433
440
 
434
441
  def initialize(attrs = {})
435
442
  @validate_on_set = attrs.delete(:validate_on_set) || false
443
+ @using_default ||= {}
436
444
 
437
445
  return unless self.class.attributes
438
446
 
@@ -449,6 +457,7 @@ module Lutaml
449
457
  value = if attrs.key?(name) || attrs.key?(name.to_s)
450
458
  self.class.attr_value(attrs, name, attr)
451
459
  else
460
+ using_default_for(name)
452
461
  attr.default
453
462
  end
454
463
 
@@ -461,6 +470,18 @@ module Lutaml
461
470
  end
462
471
  end
463
472
 
473
+ def using_default_for(attribute_name)
474
+ @using_default[attribute_name] = true
475
+ end
476
+
477
+ def value_set_for(attribute_name)
478
+ @using_default[attribute_name] = false
479
+ end
480
+
481
+ def using_default?(attribute_name)
482
+ @using_default[attribute_name]
483
+ end
484
+
464
485
  def method_missing(method_name, *args)
465
486
  if method_name.to_s.end_with?("=") && self.class.attributes.key?(method_name.to_s.chomp("=").to_sym)
466
487
  define_singleton_method(method_name) do |value|
@@ -50,6 +50,34 @@ module Lutaml
50
50
  end
51
51
  end
52
52
 
53
+ def add_accessor_if_not_defined(klass, attribute)
54
+ add_getter_if_not_defined(klass, attribute)
55
+ add_setter_if_not_defined(klass, attribute)
56
+ end
57
+
58
+ def add_boolean_accessor_if_not_defined(klass, attribute)
59
+ add_boolean_getter_if_not_defined(klass, attribute)
60
+ add_setter_if_not_defined(klass, attribute)
61
+ end
62
+
63
+ def add_getter_if_not_defined(klass, attribute)
64
+ add_method_if_not_defined(klass, attribute) do
65
+ instance_variable_get(:"@__#{attribute}")
66
+ end
67
+ end
68
+
69
+ def add_boolean_getter_if_not_defined(klass, attribute)
70
+ add_method_if_not_defined(klass, "#{attribute}?") do
71
+ !!instance_variable_get(:"@__#{attribute}")
72
+ end
73
+ end
74
+
75
+ def add_setter_if_not_defined(klass, attribute)
76
+ add_method_if_not_defined(klass, "#{attribute}=") do |value|
77
+ instance_variable_set(:"@__#{attribute}", value)
78
+ end
79
+ end
80
+
53
81
  def deep_dup(hash)
54
82
  return hash if hash.nil?
55
83
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lutaml
4
4
  module Model
5
- VERSION = "0.3.14"
5
+ VERSION = "0.3.16"
6
6
  end
7
7
  end
@@ -143,6 +143,8 @@ module Lutaml
143
143
  return
144
144
  end
145
145
 
146
+ return if !render_element?(rule, element, value)
147
+
146
148
  if value && (attribute&.type&.<= Lutaml::Model::Serialize)
147
149
  handle_nested_elements(
148
150
  xml,
@@ -254,6 +256,20 @@ module Lutaml
254
256
  rule.nil? || !rule.namespace_set? || !rule.namespace.nil?
255
257
  end
256
258
 
259
+ def render_element?(rule, element, value)
260
+ render_default?(rule, element) && render_value?(rule, value)
261
+ end
262
+
263
+ def render_value?(rule, value)
264
+ rule.attribute? || rule.render_nil? || !value.nil?
265
+ end
266
+
267
+ def render_default?(rule, element)
268
+ !element.respond_to?(:using_default?) ||
269
+ rule.render_default? ||
270
+ !element.using_default?(rule.to)
271
+ end
272
+
257
273
  def build_namespace_attributes(klass, processed = {}, options = {})
258
274
  xml_mappings = klass.mappings_for(:xml)
259
275
  attributes = klass.attributes
@@ -315,7 +331,9 @@ module Lutaml
315
331
  hash["xmlns:#{mapping_rule.prefix}"] = mapping_rule.namespace
316
332
  end
317
333
 
318
- hash[mapping_rule.prefixed_name] = mapping_rule.to_value_for(element)
334
+ if render_element?(mapping_rule, element, mapping_rule.to_value_for(element))
335
+ hash[mapping_rule.prefixed_name] = mapping_rule.to_value_for(element)
336
+ end
319
337
  end
320
338
 
321
339
  xml_mapping.elements.each_with_object(attrs) do |mapping_rule, hash|
@@ -43,6 +43,7 @@ module Lutaml
43
43
  name,
44
44
  to: nil,
45
45
  render_nil: false,
46
+ render_default: false,
46
47
  with: {},
47
48
  delegate: nil,
48
49
  namespace: (namespace_set = false
@@ -56,6 +57,7 @@ module Lutaml
56
57
  name,
57
58
  to: to,
58
59
  render_nil: render_nil,
60
+ render_default: render_default,
59
61
  with: with,
60
62
  delegate: delegate,
61
63
  namespace: namespace,
@@ -71,6 +73,7 @@ module Lutaml
71
73
  name,
72
74
  to: nil,
73
75
  render_nil: false,
76
+ render_default: false,
74
77
  with: {},
75
78
  delegate: nil,
76
79
  namespace: (namespace_set = false
@@ -84,6 +87,7 @@ module Lutaml
84
87
  name,
85
88
  to: to,
86
89
  render_nil: render_nil,
90
+ render_default: render_default,
87
91
  with: with,
88
92
  delegate: delegate,
89
93
  namespace: namespace,
@@ -101,6 +105,7 @@ module Lutaml
101
105
  def map_content(
102
106
  to: nil,
103
107
  render_nil: false,
108
+ render_default: false,
104
109
  with: {},
105
110
  delegate: nil,
106
111
  mixed: false
@@ -111,6 +116,7 @@ module Lutaml
111
116
  nil,
112
117
  to: to,
113
118
  render_nil: render_nil,
119
+ render_default: render_default,
114
120
  with: with,
115
121
  delegate: delegate,
116
122
  mixed_content: mixed,
@@ -9,6 +9,7 @@ module Lutaml
9
9
  name,
10
10
  to:,
11
11
  render_nil: false,
12
+ render_default: false,
12
13
  with: {},
13
14
  delegate: nil,
14
15
  namespace: nil,
@@ -23,6 +24,7 @@ module Lutaml
23
24
  name,
24
25
  to: to,
25
26
  render_nil: render_nil,
27
+ render_default: render_default,
26
28
  with: with,
27
29
  delegate: delegate,
28
30
  attribute: attribute,
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.14
4
+ version: 0.3.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-24 00:00:00.000000000 Z
11
+ date: 2024-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor