class Spectifly::Xsd::Builder
Public Instance Methods
build(xml = nil)
click to toggle source
# File lib/spectifly/xsd/builder.rb, line 34 def build(xml = nil) xml ||= ::Builder::XmlMarkup.new(:indent => 2) xml.instruct! :xml, :version => '1.0', :encoding => 'UTF-8' xml.xs :schema, 'xmlns:xs' => "http://www.w3.org/2001/XMLSchema", 'elementFormDefault' => "qualified" do custom_types.each do |cust| xml.xs :include, 'schemaLocation' => "#{cust}.xsd" end unless utilized_extended_types.empty? xml.xs :include, 'schemaLocation' => "extended.xsd" end xml.xs :element, :name => Spectifly::Support.camelize(root), :type => root_type build_type(xml) end end
build_type(xml = nil)
click to toggle source
# File lib/spectifly/xsd/builder.rb, line 13 def build_type(xml = nil) xml ||= ::Builder::XmlMarkup.new(:indent => 2) xml.xs 'complexType'.to_sym, :name => root_type do xml.xs :sequence do fields.each do |field| field.to_xsd(xml) end associations.each do |association| association.to_xsd(xml) end end end end
root_type()
click to toggle source
# File lib/spectifly/xsd/builder.rb, line 9 def root_type Spectifly::Support.lower_camelize("#{root}Type") end
types()
click to toggle source
# File lib/spectifly/xsd/builder.rb, line 27 def types [ fields.map(&:type) + associations.select { |a| a.relationship !~ /belongs_to(_many)?/ }.map(&:type) ].flatten.compact.uniq end