lutaml-model 0.3.14 → 0.3.16

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 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