def _inspect(str="", level=0, done={})
done[self.__id__] = true
str << " " * level << "name: #{@name}\n" unless @name.nil?
str << " " * level << "desc: #{@desc}\n" unless @desc.nil?
str << " " * level << "type: #{@type}\n" unless @type.nil?
str << " " * level << "klass: #{@type_class.name}\n" unless @type_class.nil?
str << " " * level << "required: #{@required}\n" unless @required.nil?
str << " " * level << "pattern: #{@regexp.inspect}\n" unless @pattern.nil?
str << " " * level << "assert: #{@assert}\n" unless @assert.nil?
str << " " * level << "ident: #{@ident}\n" unless @ident.nil?
str << " " * level << "unique: #{@unique}\n" unless @unique.nil?
if !@enum.nil?
str << " " * level << "enum:\n"
@enum.each do |item|
str << " " * (level+1) << "- #{item}\n"
end
end
if !@range.nil?
str << " " * level
str << "range: { "
colon = ""
%w[max max-ex min min-ex].each do |key|
val = @range[key]
unless val.nil?
str << colon << "#{key}: #{val.inspect}"
colon = ", "
end
end
str << " }\n"
end
if !@length.nil?
str << " " * level
str << "length: { "
colon = ""
%w[max max-ex min min-ex].each do |key|
val = @length[key]
if !val.nil?
str << colon << "#{key}: #{val.inspect}"
colon = ", "
end
end
str << " }\n"
end
@sequence.each do |rule|
if done[rule.__id__]
str << " " * (level+1) << "- ...\n"
else
str << " " * (level+1) << "- \n"
rule._inspect(str, level+2, done)
end
end if @sequence
@mapping.each do |key, rule|
if done[rule.__id__]
str << ' ' * (level+1) << '"' << key << "\": ...\n"
else
str << ' ' * (level+1) << '"' << key << "\":\n"
rule._inspect(str, level+2, done)
end
end if @mapping
return str
end