class HashToConsole

Attributes

hash[R]

Public Class Methods

new() click to toggle source
# File lib/hash_to_consol.rb, line 6
def initialize
  @rows = Array.new
  @col_size = Array.new
  @col_size_max  = Array.new
  @col_names = nil
  @cols_visible = Array.new
end

Public Instance Methods

add_col_names(row) click to toggle source
# File lib/hash_to_consol.rb, line 25
def add_col_names(row)
  row.each_index { |index|
    @col_size[index] = row[index].size if @col_size[index].to_i < row[index].size
    @cols_visible[index] = true
  }
  @col_names = row
end
add_hash(data) click to toggle source
# File lib/hash_to_consol.rb, line 61
def add_hash(data)

  if (data.kind_of?(Array))
    data.each { |line|
      if line.kind_of?(Hash)

        self.add_col_names( line.keys)  if @col_names.nil? #first row, let's setup col names

        line.each_key { |key|
          raise "unknown column #{key}" unless @col_names.include?(key)
        }
        self.add_row(line.values)

      else
        raise "unsupported line #{line.class}"
      end
    }
  else
    raise "unsupported case #{data.class}"
  end
end
add_row(row) click to toggle source
# File lib/hash_to_consol.rb, line 18
def add_row(row)
  row.each_index { |index|
    @col_size[index] = row[index].size if @col_size[index].to_i < row[index].size
  }
  @rows.push(row)
end
col_disable(col_id) click to toggle source
# File lib/hash_to_consol.rb, line 51
def col_disable(col_id)
  self.col_visibility(col_id, false)
end
col_enable(col_id) click to toggle source
# File lib/hash_to_consol.rb, line 55
def col_enable(col_id)
  self.col_visibility(col_id, true)
end
col_size_set(row_id, size) click to toggle source
# File lib/hash_to_consol.rb, line 14
def col_size_set(row_id, size)
  @col_size_max[row_id] = size
end
col_visibility(col_id, status) click to toggle source
# File lib/hash_to_consol.rb, line 33
def col_visibility(col_id, status)

  raise "wrong status #{status}" unless status == true or status == false

  if col_id.is_a?(String)
    col_id.split(',').each { |id|
      id = self.get_col_id(id)
      @cols_visible[id] = status
    }
  elsif col_id.is_a?(Integer)
    @cols_visible[col_id -1] = status
  else
    raise 'col_id is not Interger' unless col_id.is_a?(Integer)
  end

end
get_col_id(col_id) click to toggle source
# File lib/hash_to_consol.rb, line 187
def get_col_id (col_id)
  if col_id.is_a?(String)
    raise "unknown col_name: '#{col_id}'" if @col_names.index(col_id).nil?
    col_id = @col_names.index(col_id)
  elsif col_id.is_a?(Integer)
    col_id = col_id
  else
    raise 'col_id is strange'
  end

end
get_col_size(id_or_name) click to toggle source
# File lib/hash_to_consol.rb, line 175
def get_col_size(id_or_name)

  col_id = self.get_col_id(id_or_name)

  unless @col_size_max[col_id].nil?
    size = @col_size_max[col_id]
  else
    size = @col_size[col_id]
  end
  size
end
get_colname_nice(col_name) click to toggle source
# File lib/hash_to_consol.rb, line 169
def get_colname_nice(col_name)
  size = self.get_col_size(col_name)
  sprintf("%#{size}.#{size}s", col_name)
end
get_value(row_id, col_id) click to toggle source
# File lib/hash_to_consol.rb, line 144
def get_value(row_id, col_id)

  if col_id.is_a?(String)
    raise "unknown col_name: '#{col_id}'" if @col_names.index(col_id).nil?
    col_id = @col_names.index(col_id)
  elsif col_id.is_a?(Integer)
    col_id = col_id -1
  else
    raise 'col_id is strange'
  end

  row_data = @rows[row_id -1]
  unless row_data.nil?
    return row_data[col_id]
  end

  nil
end
get_value_nice(row_id, col_id) click to toggle source
# File lib/hash_to_consol.rb, line 163
def get_value_nice(row_id, col_id)
  size = self.get_col_size(col_id)
  col_id = self.get_col_id(col_id) + 1
  sprintf("%#{size}.#{size}s", self.get_value(row_id, col_id)) unless @cols_visible[col_id] == false
end
to_s() click to toggle source
# File lib/hash_to_consol.rb, line 107
def to_s

  result = ''

  unless @col_names.nil?

    @col_names.each_index { |col_id|
      unless @col_size_max[col_id].nil?
        size = @col_size_max[col_id]
      else
        size = @col_size[col_id]
      end

      result += sprintf("%#{size}.#{size}s;", @col_names[col_id]) unless @cols_visible[col_id] == false
    }
    result += "\n"
  end



  @rows.each {|row |
    row.each_index {|col_id|

      unless @col_size_max[col_id].nil?
        size = @col_size_max[col_id]
      else
        size = @col_size[col_id]
      end
      result += sprintf("%#{size}.#{size}s;", row[col_id]) unless @cols_visible[col_id] == false
    }

    result += "\n"
  }

  result
end
to_s_F(columns = '', separator = ';') click to toggle source
# File lib/hash_to_consol.rb, line 83
def to_s_F(columns = '', separator = ';')
  result = ''

  columns == '' ? columns = @col_names : columns = columns.split(separator)

  columns.each { |column_name|
    raise "unknown column #{column_name}" unless @col_names.include?(column_name)
  }

  columns.each { |column_name|
    result += self.get_colname_nice(column_name) + separator
  }
  result += "\n"

  @rows.each_index { |row_id|
    columns.each { |column_name|
      result += self.get_value_nice(row_id, column_name) + separator
    }
    result += "\n"
  }

  result
end