Module: ActiveSupport::CoreExtensions::Array::Conversions

Defined in:
lib/ruboss4ruby/active_foo.rb

Overview

refer to: api.rubyonrails.org/ for more details

Instance Method Summary collapse

Instance Method Details

#to_fxml(options = {}) ⇒ Object

Flex friendly XML format (no dashes, etc)



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/ruboss4ruby/active_foo.rb', line 91

def to_fxml(options = {})
  raise "Not all elements respond to to_fxml" unless all? { |e| e.respond_to? :to_fxml }

  options[:root]     ||= all? { |e| e.is_a?(first.class) && first.class.to_s != "Hash" } ? first.class.to_s.underscore.pluralize : "records"
  options[:children] ||= options[:root].singularize
  options[:indent]   ||= 2
  options[:builder]  ||= Builder::XmlMarkup.new(:indent => options[:indent])
  options.merge!(:dasherize => false)

  root     = options.delete(:root).to_s
  children = options.delete(:children)

  if !options.has_key?(:dasherize) || options[:dasherize]
    root = root.dasherize
  end

  options[:builder].instruct! unless options.delete(:skip_instruct)

  opts = options.merge({ :root => children })

  xml = options[:builder]
  if empty?
    xml.tag!(root, options[:skip_types] ? {} : {:type => "array"})
  else
    xml.tag!(root, options[:skip_types] ? {} : {:type => "array"}) {
      yield xml if block_given?
      each { |e| e.to_fxml(opts.merge!({ :skip_instruct => true })) }
    }
  end
end