Sha256: 42867afcfe074993b382dabb33f9f9ec0cde76b545d1aec21a259dec6b38aa08
Contents?: true
Size: 1.4 KB
Versions: 3
Compression:
Stored size: 1.4 KB
Contents
module Junoser module Xsd module Base attr_reader :xml, :parent OFFSET = ' ' def initialize(xml, options={}) @xml = xml @depth = options[:depth] || 0 @parent = options[:parent] 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 def oneliner? @oneliner ||= !xml.xpath('./xsd:annotation/xsd:appinfo/flag[text()="oneliner"]').empty? end private def nokeyword? @nokeyword ||= !xml.xpath('./xsd:annotation/xsd:appinfo/flag[text()="nokeyword"]').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.4.1 | lib/junoser/xsd/base.rb |
junoser-0.4.0 | lib/junoser/xsd/base.rb |
junoser-0.3.13 | lib/junoser/xsd/base.rb |