Sha256: b6ac371bbd4307ce2282c1ae3b571cc41eb33283c39f4a84b8bb6f4bbaba06ba
Contents?: true
Size: 1.24 KB
Versions: 3
Compression:
Stored size: 1.24 KB
Contents
module Junoser module Xsd module Base attr_reader :xml OFFSET = ' ' def initialize(xml, options={}) @xml = xml @depth = options[:depth] || 0 end def config raise "ERROR: no implementation" end def children @children||= xml.xpath('./*[not(self::xsd:annotation)]') end def root? @depth == 1 end def inspect ["#<#{self.class}:0x#{object_id}", "xml=#{xml.namespace.prefix}:#{xml.name}" << " attributes=" << Hash[xml.attributes.map {|k, v| [k, v.value] }].to_s << (respond_to?(:label) ? " label=#{label}" : ''), "config=[", *config.map {|c| c.inspect }, ']>'].join("\n#{OFFSET*(@depth+1)}") end private def oneliner? @oneliner ||= !xml.xpath('./xsd:annotation/xsd:appinfo/flag[contains(text(), "oneliner")]').empty? end def has_single_child_of?(klass) config.size == 1 && config.first.is_a?(klass) end def format(header, content=nil, footer=nil) str = OFFSET*@depth << header.to_s str << "\n" << content if content str << "\n" << OFFSET*@depth << footer if footer str end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
junoser-0.1.2 | lib/junoser/xsd/base.rb |
junoser-0.1.1 | lib/junoser/xsd/base.rb |
junoser-0.1.0 | lib/junoser/xsd/base.rb |