Sha256: a4b737d5d0a4c6839974ad24895c51196b97b4dca9d4d0d5a92ae04a33438441
Contents?: true
Size: 1.55 KB
Versions: 1
Compression:
Stored size: 1.55 KB
Contents
require 'active_support/core_ext/hash/conversions' module Tokamak module Xml module Base module ClassMethods mattr_reader :media_type_name @@media_type_name = 'application/xml' mattr_reader :headers @@headers = { :post => { 'Content-Type' => media_type_name } } def marshal(entity, options = {}) to_xml(entity, options) end def unmarshal(string) Hash.from_xml string end mattr_reader :recipes @@recipes = {} def describe_recipe(recipe_name, options={}, &block) raise 'Undefined recipe' unless block_given? raise 'Undefined recipe_name' unless recipe_name @@recipes[recipe_name] = block end def to_xml(obj, options = {}, &block) return obj if obj.kind_of?(String) if block_given? recipe = block elsif options[:recipe] recipe = @@recipes[options[:recipe]] elsif obj.kind_of?(Hash) && obj.size==1 root = obj.values.first return root.to_xml(:root => obj.keys.first) else return obj.to_xml end # Create representation and proxy builder = Builder.new(obj, options) # Check recipe arity size before calling it recipe.call(*[builder, obj, options][0,recipe.arity]) builder.doc.to_xml end def helper Helpers end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
tokamak-1.0.0.beta2 | lib/tokamak/xml/base.rb |