lib/roxml/xml/references.rb in roxml-2.4.3 vs lib/roxml/xml/references.rb in roxml-2.5.0
- old
+ new
@@ -34,26 +34,23 @@
else
name
end
end
- def default
- @default ||= @opts.default || (@opts.array? ? Array.new : nil)
- @default.duplicable? ? @default.dup : @default
- end
-
def value_in(xml)
+ xml = XML::Node.from(xml)
value = fetch_value(xml)
+ value = default if value.nil?
+
freeze(apply_blocks(value))
end
private
attr_reader :opts
def conventionize(what)
if !what.blank? && @instance.try(:class).try(:roxml_naming_convention).respond_to?(:call)
- require 'uri'
URI.unescape(@instance.class.roxml_naming_convention.call(URI.escape(what, /\/|::/)))
else
what
end
end
@@ -69,11 +66,11 @@
raise ex, "#{accessor}: #{ex.message}"
end
end
def freeze(val)
- if opts.freeze?
+ if opts.frozen?
val.each(&:freeze) if val.is_a?(Enumerable)
val.freeze
else
val
end
@@ -90,11 +87,11 @@
def wrap(xml)
return xml if !wrapper || xml.name == wrapper
if child = xml.children.find {|c| c.name == wrapper }
return child
end
- xml.child_add(XML::Node.new_element(wrapper))
+ xml.child_add(XML::Node.new(wrapper))
end
def nodes_in(xml)
vals = xml.search(xpath)
@@ -121,11 +118,11 @@
class XMLAttributeRef < XMLRef # :nodoc:
private
# Updates the attribute in the given XML block to
# the value provided.
def write_xml(xml, value)
- xml.attributes[name] = value.to_s.to_utf
+ xml.attributes[name] = value.to_s.to_utf_without_deprecation
end
def fetch_value(xml)
nodes_in(xml) do |nodes|
nodes.first.value
@@ -154,14 +151,14 @@
add(xml, value)
elsif name?
xml.name = value
elsif array?
value.each do |v|
- add(xml.child_add(XML::Node.new_element(name)), v)
+ add(xml.child_add(XML::Node.new(name)), v)
end
else
- add(xml.child_add(XML::Node.new_element(name)), value)
+ add(xml.child_add(XML::Node.new(name)), value)
end
end
def fetch_value(xml)
if content? || name?
@@ -180,24 +177,24 @@
end
else
nodes_in(xml) do |nodes|
if array?
nodes.collect do |e|
- e.content.strip.to_latin
+ e.content.strip.to_latin_without_deprecation
end
else
nodes.first.content
end
end
end
end
def add(dest, value)
if cdata?
- dest.child_add(XML::Node.new_cdata(value.to_s.to_utf))
+ dest.child_add(XML::Node.new_cdata(value.to_s.to_utf_without_deprecation))
else
- dest.content = value.to_s.to_utf
+ dest.content = CGI.escapeHTML(value.to_s.to_utf_without_deprecation)
end
end
end
class XMLHashRef < XMLTextRef # :nodoc:
@@ -212,11 +209,11 @@
private
# Updates the composed XML object in the given XML block to
# the value provided.
def write_xml(xml, value)
value.each_pair do |k, v|
- node = xml.child_add(XML::Node.new_element(hash.wrapper))
+ node = xml.child_add(XML::Node.new(hash.wrapper))
@key.update_xml(node, k)
@value.update_xml(node, v)
end
end
@@ -236,11 +233,11 @@
end
vals.to_hash if vals
end
def freeze(vals)
- if opts.freeze?
+ if opts.frozen?
vals.each_pair{|k, v| k.freeze; v.freeze }
vals.freeze
else
vals
end
@@ -259,10 +256,10 @@
xml.child_add(v.to_xml(name))
end
elsif value.is_a?(ROXML)
xml.child_add(value.to_xml(name))
else
- node = XML::Node.new_element(name)
+ node = XML::Node.new(name)
node.content = value.to_xml
xml.child_add(node)
end
end
\ No newline at end of file