def Editor.data2model(data, model = nil, parent = nil)
model ||= TreeStore.new(Gdk::Pixbuf, String, String)
iter = if block_given?
yield model
else
model.append(parent)
end
case data
when Hash
iter.type = 'Hash'
data.sort.each do |key, value|
pair_iter = model.append(iter)
pair_iter.type = 'Key'
pair_iter.content = key.to_s
Editor.data2model(value, model, pair_iter)
end
when Array
iter.type = 'Array'
data.each do |value|
Editor.data2model(value, model, iter)
end
when Numeric
iter.type = 'Numeric'
iter.content = data.to_s
when String, true, false, nil
iter.type = data.class.name
iter.content = data.nil? ? 'null' : data.to_s
else
iter.type = 'String'
iter.content = data.to_s
end
model
end