Class: Squib::DataFrame
- Inherits:
-
Object
- Object
- Squib::DataFrame
- Includes:
- Enumerable
- Defined in:
- lib/squib/import/data_frame.rb
Instance Method Summary collapse
- #[](i) ⇒ Object
- #[]=(col, v) ⇒ Object
- #col?(col) ⇒ Boolean
- #columns ⇒ Object
- #each(&block) ⇒ Object
-
#initialize(hash = {}, def_columns = true) ⇒ DataFrame
constructor
A new instance of DataFrame.
- #ncolumns ⇒ Object
- #nrows ⇒ Object
- #row(i) ⇒ Object
- #to_h ⇒ Object
- #to_json ⇒ Object
- #to_pretty_json ⇒ Object
- #to_pretty_text ⇒ Object
Constructor Details
#initialize(hash = {}, def_columns = true) ⇒ DataFrame
Returns a new instance of DataFrame.
10 11 12 13 |
# File 'lib/squib/import/data_frame.rb', line 10 def initialize(hash = {}, def_columns = true) @hash = hash columns.each { |col| def_column(col) } if def_columns end |
Instance Method Details
#[](i) ⇒ Object
19 20 21 |
# File 'lib/squib/import/data_frame.rb', line 19 def [](i) @hash[i] end |
#[]=(col, v) ⇒ Object
23 24 25 26 27 |
# File 'lib/squib/import/data_frame.rb', line 23 def []=(col, v) @hash[col] = v def_column(col) return v end |
#col?(col) ⇒ Boolean
37 38 39 |
# File 'lib/squib/import/data_frame.rb', line 37 def col?(col) @hash.key? col end |
#columns ⇒ Object
29 30 31 |
# File 'lib/squib/import/data_frame.rb', line 29 def columns @hash.keys end |
#each(&block) ⇒ Object
15 16 17 |
# File 'lib/squib/import/data_frame.rb', line 15 def each(&block) @hash.each(&block) end |
#ncolumns ⇒ Object
33 34 35 |
# File 'lib/squib/import/data_frame.rb', line 33 def ncolumns @hash.keys.size end |
#nrows ⇒ Object
45 46 47 |
# File 'lib/squib/import/data_frame.rb', line 45 def nrows @hash.inject(0) { |max, (_n, col)| col.size > max ? col.size : max } end |
#row(i) ⇒ Object
41 42 43 |
# File 'lib/squib/import/data_frame.rb', line 41 def row(i) @hash.inject(Hash.new) { |ret, (name, arr)| ret[name] = arr[i]; ret } end |
#to_h ⇒ Object
57 58 59 |
# File 'lib/squib/import/data_frame.rb', line 57 def to_h @hash end |
#to_json ⇒ Object
49 50 51 |
# File 'lib/squib/import/data_frame.rb', line 49 def to_json @hash.to_json end |
#to_pretty_json ⇒ Object
53 54 55 |
# File 'lib/squib/import/data_frame.rb', line 53 def to_pretty_json JSON.pretty_generate(@hash) end |
#to_pretty_text ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/squib/import/data_frame.rb', line 61 def to_pretty_text max_col = columns.inject(0) { |max, c | c.length > max ? c.length : max } top = " ╭#{'-' * 36}╮\n" bottom = " ╰#{'-' * 36}╯\n" str = '' 0.upto(nrows - 1) do | i | str += (' ' * max_col) + top row(i).each do |col, data| str += "#{col.rjust(max_col)} #{wrap_n_pad(data, max_col)}" end str += (' ' * max_col) + bottom end return str end |