class HTOTConv::Outline
Constants
- Item
Attributes
item[RW]
key_header[RW]
value_header[RW]
Public Class Methods
new()
click to toggle source
# File lib/htot_conv/outline.rb, line 4 def initialize @item = [] end
Public Instance Methods
==(v)
click to toggle source
# File lib/htot_conv/outline.rb, line 48 def ==(v) (@key_header == v.key_header) && (@value_header == v.value_header) && (@item == v.item) end
add_item(*args)
click to toggle source
# File lib/htot_conv/outline.rb, line 12 def add_item(*args) @item << Item.new(*args) end
max_level()
click to toggle source
# File lib/htot_conv/outline.rb, line 34 def max_level [ @key_header.length, *(@item.map { |v| v.level.to_i }), ].max end
max_value_length()
click to toggle source
# File lib/htot_conv/outline.rb, line 41 def max_value_length [ @value_header.length, *(@item.map { |v| (v.value)? v.value.length : 0 }), ].max end
to_tree()
click to toggle source
# File lib/htot_conv/outline.rb, line 54 def to_tree root = Tree.new last_node = root @item.each_with_index do |item,i| parent_node = root if ((item.level > 1) && !(last_node.root?)) if item.level > last_node.item.level parent_node = last_node else parent_node = last_node.parent parent_node = parent_node.parent until (parent_node.root? || parent_node.item.level < item.level) end end parent_node << item last_node = parent_node.to_a.last end root end
valid?()
click to toggle source
# File lib/htot_conv/outline.rb, line 25 def valid? begin validate true rescue ValidationError false end end
validate()
click to toggle source
# File lib/htot_conv/outline.rb, line 16 def validate raise ValidationError, "key_header must be an array" unless @key_header.kind_of?(Array) raise ValidationError, "key_header elements must be strings." unless @key_header.all? { |v| v.nil? || v.kind_of?(String) } raise ValidationError, "value_header must be an array" unless @value_header.kind_of?(Array) raise ValidationError, "value_header elements must be strings." unless @value_header.all? { |v| v.nil? || v.kind_of?(String) } raise ValidationError, "item must be an array" unless @item.kind_of?(Array) @item.each { |item| item.validate } end