Sha256: 19c47b73609f708f543425c0682eede8596941479ace49d0a449272f5955f3ce
Contents?: true
Size: 1.59 KB
Versions: 3
Compression:
Stored size: 1.59 KB
Contents
### ### ################################################################## ### ### Node#inspect. ### ### ################################################################## ### module C class Node INSPECT_TAB = ' ' def inspect return Node.inspect1(self) end def Node.inspect1 x, prefix='', indent=0, is_child=true case x when NodeList if x.empty? return "#{INSPECT_TAB*indent}#{prefix}[]\n" else str = "#{INSPECT_TAB*indent}#{prefix}\n" x.each do |el| str << inspect1(el, "- ", indent+1) end return str end when Node classname = x.class.name.gsub(/^C::/, '') str = "#{INSPECT_TAB*indent}#{prefix}#{classname}" fields = x.fields bools, others = fields.partition{|field| field.reader.to_s[-1] == ??} bools.delete_if{|field| !x.send(field.reader)} bools.map!{|field| field.init_key} unless bools == [] str << " (#{bools.join(' ')})" end str << "\n" others.each do |field| val = x.send(field.reader) next if val == field.make_default || ## don't bother with non-child Nodes, since they may cause ## loops in the tree (val.is_a?(Node) && !field.child?) str << inspect1(val, "#{field.reader}: ", indent+1, field.child?) end return str when Symbol return "#{INSPECT_TAB*indent}#{prefix}#{x}\n" else return "#{INSPECT_TAB*indent}#{prefix}#{x.inspect}\n" end return s.string end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
cast19-0.1.1 | lib/cast19/inspect.rb |
cast19-0.1.0 | lib/cast19/inspect.rb |
cast-0.1.0 | lib/cast/inspect.rb |