simple_tabler 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 673a1a57ecff0f6f4bf586b10cff347c3c40947c84685cf344a5fbe71ab7b13f
4
- data.tar.gz: 4d10bc4df14395fea3b95050d10ba3c2e0af4896aeb60b3b1efbcf6cf0433142
3
+ metadata.gz: 44a72428a6ffcde30829295de518515e75ac45e37191da308d408816cb947e35
4
+ data.tar.gz: f56beee33953317bf4537d338b2d7554b6ecdb507ee16124db4d932f9395ae4b
5
5
  SHA512:
6
- metadata.gz: 52a7b43f4b9bd90845ee426d257a88638c1fa57feaa0b685e8b03460e146b83093d3298e62ae1e3fb075bb407e5c543ba05444a7aef143f84a0ea01dde065077
7
- data.tar.gz: dcb3e76b5778a510ee78e11b7f1720c2055b075c2a9c81f065e47447aac8c57aa3bb0d02dbb880a01252701ff0bb468694af5c6fffc071f7a9bd5caf7868e9c9
6
+ metadata.gz: b33eae196087e668fafda9b084aeff2faec09d9545e4b97576135a6ffb7348456032e73aa33a8269abbceef9e25f551b6cf9fe61830e15d65830deafc721573d
7
+ data.tar.gz: 8379f7cbb060619033b50ffb08ac908205ea4ed40fc47fae45e414e2750f0d11f4b0bd6ee112187b9d26a0a343d07720c07f4b2c6937d8d1e5e3f22d658a74f9
@@ -0,0 +1,17 @@
1
+ class Row
2
+ attr_reader :materials, :line_number, :scale
3
+
4
+ def initialize(materials, line_number, scale)
5
+ @materials = materials
6
+ @line_number = line_number
7
+ @scale = scale
8
+ end
9
+
10
+ def content
11
+ materials.inject("|") do |content, material|
12
+ string = material[scale*line_number...scale*(line_number+1)].to_s
13
+ spaces = " " * (scale - string.size)
14
+ content + string + spaces + "|"
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ class Separation
2
+ attr_reader :mark, :cell_size, :scale
3
+
4
+ def initialize(mark, cell_size, scale)
5
+ @mark = mark
6
+ @cell_size = cell_size
7
+ @scale = scale
8
+ end
9
+
10
+ def content
11
+ "|" + mark * (scale * cell_size + cell_size - 1) + "|"
12
+ end
13
+ end
@@ -0,0 +1,54 @@
1
+ require_relative "row"
2
+ require_relative "separation"
3
+
4
+ class Table
5
+ attr_accessor :content_array_of_table
6
+ attr_reader :cell_size, :scale
7
+
8
+ def initialize(array, column_names, scale)
9
+ @content_array_of_table = []
10
+ @cell_size = array[0].size
11
+ @scale = scale
12
+ add_header(column_names)
13
+ add_content(array)
14
+ end
15
+
16
+ def content
17
+ self.content_array_of_table.inject(""){|result, content| result + content + "\n" }
18
+ end
19
+
20
+ private
21
+ def add_row(row_materials)
22
+ number_of_lines = (max_length_of_array_element(row_materials).to_f / scale).ceil
23
+ (0...number_of_lines).each do |i|
24
+ row = Row.new(row_materials, i, @scale)
25
+ self.content_array_of_table << row.content
26
+ end
27
+ end
28
+
29
+ def max_length_of_array_element(array)
30
+ array.map{|element| element.to_s.size}.max
31
+ end
32
+
33
+ def add_header(column_names=nil)
34
+ if column_names
35
+ add_separation("=")
36
+ add_row(column_names)
37
+ add_separation("=")
38
+ else
39
+ add_separation("-")
40
+ end
41
+ end
42
+
43
+ def add_content(table_materials)
44
+ table_materials.each do |row_materials|
45
+ add_row(row_materials)
46
+ add_separation("-")
47
+ end
48
+ end
49
+
50
+ def add_separation(mark)
51
+ separation = Separation.new(mark, cell_size, scale)
52
+ self.content_array_of_table << separation.content
53
+ end
54
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SimpleTabler
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
data/lib/simple_tabler.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "simple_tabler/version"
4
- require_relative "table_from_array"
4
+ require_relative "simple_tabler/table"
5
5
 
6
6
  class Array; include SimpleTabler; end
7
7
 
@@ -19,8 +19,8 @@ module SimpleTabler
19
19
  raise ArgumentError, "All child arrays should have same amount of element with column names you passed as an argument."
20
20
  end
21
21
 
22
- table_generated_from_array = TableFromArray.new(self, column_names, scale)
23
- return table_generated_from_array.content_of_table
22
+ table_generated_from_array = Table.new(self, column_names, scale)
23
+ return table_generated_from_array.content
24
24
  end
25
25
 
26
26
  # return true if dimension of array equal two.
@@ -60,4 +60,4 @@ module SimpleTabler
60
60
  def column_size_correct?(column_names)
61
61
  self[0].size == column_names.size
62
62
  end
63
- end
63
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_tabler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - mew3880
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-29 00:00:00.000000000 Z
11
+ date: 2022-07-30 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -24,8 +24,10 @@ files:
24
24
  - README.md
25
25
  - Rakefile
26
26
  - lib/simple_tabler.rb
27
+ - lib/simple_tabler/row.rb
28
+ - lib/simple_tabler/separation.rb
29
+ - lib/simple_tabler/table.rb
27
30
  - lib/simple_tabler/version.rb
28
- - lib/table_from_array.rb
29
31
  - sig/simple_tabler.rbs
30
32
  homepage: https://github.com/Takahashi-Riki/simple_tabler
31
33
  licenses:
@@ -1,52 +0,0 @@
1
- class TableFromArray
2
- attr_reader :content_of_table
3
-
4
- def initialize(array, column_names, scale)
5
- @content_of_table = ""
6
- @column_size = array[0].size
7
- @scale = scale
8
- self.add_header(column_names)
9
- self.add_content(array)
10
- end
11
-
12
- def add_header(column_names=nil)
13
- if column_names
14
- add_separation("=")
15
- add_row(column_names)
16
- add_separation("=")
17
- else
18
- add_separation("-")
19
- end
20
- end
21
-
22
- def add_content(table_materials)
23
- table_materials.each do |row_materials|
24
- add_row(row_materials)
25
- add_separation("-")
26
- end
27
- end
28
-
29
- private
30
- def max_length_of_array_element(array)
31
- array.map{|element| element.to_s.size}.max
32
- end
33
-
34
- def add_row(row_materials)
35
- content_of_row = ""
36
- number_of_lines = (max_length_of_array_element(row_materials).to_f / @scale).ceil
37
- (0...number_of_lines).each do |i|
38
- line = "|"
39
- row_materials.each do |row_material|
40
- row_material_sliced_for_this_line = row_material[@scale*i...@scale*(i+1)].to_s
41
- space_to_fill_the_blank = " " * (@scale - row_material_sliced_for_this_line.size)
42
- line += row_material_sliced_for_this_line + space_to_fill_the_blank + "|"
43
- end
44
- content_of_row += line + "\n"
45
- end
46
- @content_of_table += content_of_row
47
- end
48
-
49
- def add_separation(mark)
50
- @content_of_table += "|" + mark * (@scale * @column_size + @column_size - 1) + "|" + "\n"
51
- end
52
- end