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