lib/lutaml/model/xml_mapping_rule.rb in lutaml-model-0.3.13 vs lib/lutaml/model/xml_mapping_rule.rb in lutaml-model-0.3.14
- old
+ new
@@ -1,11 +1,11 @@
require_relative "mapping_rule"
module Lutaml
module Model
class XmlMappingRule < MappingRule
- attr_reader :namespace, :prefix
+ attr_reader :namespace, :prefix, :mixed_content, :default_namespace
def initialize(
name,
to:,
render_nil: false,
@@ -14,30 +14,86 @@
namespace: nil,
prefix: nil,
mixed_content: false,
namespace_set: false,
prefix_set: false,
+ attribute: false,
default_namespace: nil
)
super(
name,
to: to,
render_nil: render_nil,
with: with,
delegate: delegate,
- mixed_content: mixed_content,
- namespace_set: namespace_set,
- prefix_set: prefix_set,
- default_namespace: default_namespace
+ attribute: attribute,
)
@namespace = if namespace.to_s == "inherit"
# we are using inherit_namespace in xml builder by
# default so no need to do anything here.
else
namespace
end
@prefix = prefix
+ @mixed_content = mixed_content
+
+ @default_namespace = default_namespace
+
+ @namespace_set = namespace_set
+ @prefix_set = prefix_set
+ end
+
+ def namespace_set?
+ !!@namespace_set
+ end
+
+ def prefix_set?
+ !!@prefix_set
+ end
+
+ def content_mapping?
+ name.nil?
+ end
+
+ def mixed_content?
+ !!@mixed_content
+ end
+
+ def prefixed_name
+ if prefix
+ "#{prefix}:#{name}"
+ else
+ name
+ end
+ end
+
+ def namespaced_name
+ if name == "lang"
+ "#{prefix}:#{name}"
+ elsif namespace_set? || @attribute
+ [namespace, name].compact.join(":")
+ elsif default_namespace
+ "#{default_namespace}:#{name}"
+ else
+ name
+ end
+ end
+
+ def deep_dup
+ self.class.new(
+ name.dup,
+ to: to,
+ render_nil: render_nil,
+ with: Utils.deep_dup(custom_methods),
+ delegate: delegate,
+ namespace: namespace.dup,
+ prefix: prefix.dup,
+ mixed_content: mixed_content,
+ namespace_set: namespace_set?,
+ prefix_set: prefix_set?,
+ default_namespace: default_namespace.dup,
+ )
end
end
end
end