class MiniXml
encoding: utf-8
Public Class Methods
generate(&block)
click to toggle source
# File lib/mini_xml.rb, line 7 def self.generate(&block) out = [] MiniXml.new(out).instance_eval(&block) out.join("") end
new(out)
click to toggle source
# File lib/mini_xml.rb, line 3 def initialize(out) @out = out end
xml_from_data(data = {}, fields = [])
click to toggle source
# File lib/mini_xml.rb, line 13 def self.xml_from_data(data = {}, fields = []) out = [] xml_attributes = {} xml_attributes[:version] = (data[:xml_version] || '1.0') xml_attributes[:encoding] = (data[:encoding] || 'UTF-8') rss_version = data[:rss_version] || '2.0' title_str = data[:title] || 'RSS' description_str = data[:description] || '' link_str = data[:link] || '' generate do xml(xml_attributes) rss(version: rss_version) do channel do title {title_str} description {description_str} link {link_str} data[:data].each do |da| item do if da.is_a?(Hash) da.each do |k, v| next if fields.size > 0 && !fields.include?(k) p = proc {v} send(k, &p) end else raise 'fields argument can\'t empty!' if fields.empty? fields.each do |m| p = proc {da.send(m)} puts da.title send(m.to_s, &p) end end nil end end nil end end end end
Public Instance Methods
comment(content)
click to toggle source
# File lib/mini_xml.rb, line 54 def comment(content) @out << "<!-- #{content} -->" nil end
generate_attributes(attributes_hash = {})
click to toggle source
# File lib/mini_xml.rb, line 64 def generate_attributes(attributes_hash = {}) attributes_str = "" attributes_hash.each {|key, val| attributes_str << " #{key}=\"#{val}\" "} attributes_str.rstrip end
method_missing(tagname, attributes = {}) { || ... }
click to toggle source
# File lib/mini_xml.rb, line 70 def method_missing(tagname, attributes = {}) @out << "<#{tagname}" @out << generate_attributes(attributes) @out << ">" if block_given? content = yield @out << content.to_s if content @out << "</#{tagname}>" end nil end
xml(tagname, attributes = {version: '1.0', encoding: 'UTF-8'})
click to toggle source
# File lib/mini_xml.rb, line 59 def xml(tagname, attributes = {version: '1.0', encoding: 'UTF-8'}) @out << "<?xml#{generate_attributes(attributes)}?>" nil end