tbpgr_utils 0.0.121 → 0.0.122
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +27 -1
- data/lib/open_classes/string/justify_char.rb +80 -0
- data/lib/open_classes/string/justify_table.rb +11 -11
- data/lib/open_classes/string.rb +1 -0
- data/lib/tbpgr_utils/version.rb +1 -1
- data/spec/open_classes/string/justify_char_spec.rb +98 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97f6252d4a59debf56d6ab9faf41e797b7bebe74
|
4
|
+
data.tar.gz: 48b3c60ea9c550a3c6d3e4a8ec06a2e593928aae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10af20b7e67eda10e86f4cbf244c12fde0423b9d02aa0b917e2a8fd99c78458cdbc81906c74cc9e266bbf6064f02d820232465df57d4416f48fd2328d85c451a
|
7
|
+
data.tar.gz: a71b5a826bd606cbb3b7de47cfc5e184b4cf3fb64758fc08c288c19253d83af5be1c6954843bfac298c3716d0a8b99c446f03e705527bc2b347aeff274dd9dd1
|
data/README.md
CHANGED
@@ -144,6 +144,7 @@ Or install it yourself as:
|
|
144
144
|
|[TbpgrUtils String#escape_double_quote](#stringescape_double_quote) |escape double quote |
|
145
145
|
|[TbpgrUtils String#hyphen_to_a](#stringhyphen_to_a) |hyphen-format string to array |
|
146
146
|
|[TbpgrUtils String#is_meta_variable?](#stringis_meta_variable) |is meta variable. |
|
147
|
+
|[TbpgrUtils String#justify_char](#stringjustify_char) |justify pipe format char string |
|
147
148
|
|[TbpgrUtils String#justify_table](#stringjustify_table) |justify pipe format table string |
|
148
149
|
|[TbpgrUtils String#say](#stringsay) |say string |
|
149
150
|
|[TbpgrUtils String#spacing](#stringspacing) |get spacing string |
|
@@ -3157,6 +3158,29 @@ require 'tbpgr_utils'
|
|
3157
3158
|
|
3158
3159
|
[back to list](#list)
|
3159
3160
|
|
3161
|
+
### String#justify_char
|
3162
|
+
~~~ruby
|
3163
|
+
require 'tbpgr_utils'
|
3164
|
+
|
3165
|
+
str =<<-EOS
|
3166
|
+
print 'hoge' # => 'hoge'
|
3167
|
+
print 'hoge' * 2 # => 'hogehoge'
|
3168
|
+
print 'hoge' + 'hige' # => 'hogehige'
|
3169
|
+
EOS
|
3170
|
+
|
3171
|
+
str.justify_char('#')
|
3172
|
+
~~~
|
3173
|
+
|
3174
|
+
output
|
3175
|
+
|
3176
|
+
~~~
|
3177
|
+
print 'hoge' # => 'hoge'
|
3178
|
+
print 'hoge' * 2 # => 'hogehoge'
|
3179
|
+
print 'hoge' + 'hige' # => 'hogehige'
|
3180
|
+
~~~
|
3181
|
+
|
3182
|
+
[back to list](#list)
|
3183
|
+
|
3160
3184
|
### String#justify_table
|
3161
3185
|
~~~ruby
|
3162
3186
|
require 'tbpgr_utils'
|
@@ -3170,7 +3194,8 @@ EOS
|
|
3170
3194
|
puts str.justify_table
|
3171
3195
|
~~~
|
3172
3196
|
|
3173
|
-
output
|
3197
|
+
output
|
3198
|
+
|
3174
3199
|
~~~
|
3175
3200
|
|* hogehogehoge|* hage|* hige |
|
3176
3201
|
|test |tester|testest |
|
@@ -3567,6 +3592,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
|
|
3567
3592
|
https://github.com/tbpgr/tbpgr_utils_snippets
|
3568
3593
|
|
3569
3594
|
## History
|
3595
|
+
* version 0.0.122 : add String#justify_char
|
3570
3596
|
* version 0.0.121 : add Array#average
|
3571
3597
|
* version 0.0.120 : add Array#sum
|
3572
3598
|
* version 0.0.119 : add Kernel#exchange
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'open_classes/string/ascii1_other2_size'
|
3
|
+
|
4
|
+
# String
|
5
|
+
class String
|
6
|
+
# Justify string using separator
|
7
|
+
#
|
8
|
+
# before justify
|
9
|
+
#
|
10
|
+
# print 'hoge' # => 'hoge'
|
11
|
+
# print 'hoge' * 2 # => 'hogehoge'
|
12
|
+
# print 'hoge' + 'hige' # => 'hogehige'
|
13
|
+
#
|
14
|
+
# after justify
|
15
|
+
#
|
16
|
+
# print 'hoge' # => 'hoge'
|
17
|
+
# print 'hoge' * 2 # => 'hogehoge'
|
18
|
+
# print 'hoge' + 'hige' # => 'hogehige'
|
19
|
+
#
|
20
|
+
def justify_char(separator = '|', position = :left)
|
21
|
+
return self if empty?
|
22
|
+
return self unless include? separator
|
23
|
+
max_sizes = get_column_maxes(separator)
|
24
|
+
return self if max_sizes.nil?
|
25
|
+
justify_lines max_sizes, position, separator
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def get_column_maxes(separator)
|
31
|
+
max_sizes = []
|
32
|
+
each_line do |line|
|
33
|
+
columns = get_columuns(line, separator)
|
34
|
+
max_sizes = get_column_max(columns, max_sizes)
|
35
|
+
end
|
36
|
+
max_sizes
|
37
|
+
end
|
38
|
+
|
39
|
+
def justify_lines(max_sizes, position, separator)
|
40
|
+
ret = []
|
41
|
+
each_line do |line|
|
42
|
+
columns = get_columuns(line, separator)
|
43
|
+
line_ret = []
|
44
|
+
columns.each_with_index do |column, cnt|
|
45
|
+
diff = column.ascii1_other2_size - column.size
|
46
|
+
line_ret << justified_column(column, max_sizes[cnt], diff, position)
|
47
|
+
end
|
48
|
+
ret << line_ret.join(separator).gsub(/ +$/m, '')
|
49
|
+
end
|
50
|
+
ret.join
|
51
|
+
end
|
52
|
+
|
53
|
+
def justified_column(column, max_size, diff, position)
|
54
|
+
pos = max_size - diff
|
55
|
+
case position
|
56
|
+
when :left
|
57
|
+
column.ljust(pos)
|
58
|
+
when :right
|
59
|
+
column.rjust(pos)
|
60
|
+
when :center
|
61
|
+
column.center(pos)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def get_columuns(line, separator)
|
66
|
+
line.split(separator)
|
67
|
+
end
|
68
|
+
|
69
|
+
def get_column_max(columns, max_sizes)
|
70
|
+
columns.each_with_index do |column, index|
|
71
|
+
current_size = column.ascii1_other2_size
|
72
|
+
if max_sizes[index].nil?
|
73
|
+
max_sizes << current_size
|
74
|
+
next
|
75
|
+
end
|
76
|
+
max_sizes[index] = current_size if current_size > max_sizes[index]
|
77
|
+
end
|
78
|
+
max_sizes
|
79
|
+
end
|
80
|
+
end
|
@@ -20,38 +20,38 @@ class String
|
|
20
20
|
# |yusei |matsui |
|
21
21
|
def justify_table(position = :left)
|
22
22
|
return self if self.empty?
|
23
|
-
max_sizes =
|
23
|
+
max_sizes = get_column_maxes_table
|
24
24
|
return self if max_sizes.nil?
|
25
|
-
|
25
|
+
justify_lines_table max_sizes, position
|
26
26
|
end
|
27
27
|
|
28
28
|
private
|
29
29
|
|
30
|
-
def
|
30
|
+
def get_column_maxes_table
|
31
31
|
max_sizes = []
|
32
32
|
each_line do |line|
|
33
33
|
return nil unless table? line
|
34
|
-
columns =
|
35
|
-
max_sizes =
|
34
|
+
columns = get_columuns_table(line)
|
35
|
+
max_sizes = get_column_max_table(columns, max_sizes)
|
36
36
|
end
|
37
37
|
max_sizes
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
40
|
+
def justify_lines_table(max_sizes, position)
|
41
41
|
ret = []
|
42
42
|
each_line do |line|
|
43
|
-
columns =
|
43
|
+
columns = get_columuns_table(line)
|
44
44
|
line_ret = []
|
45
45
|
columns.each_with_index do |column, cnt|
|
46
46
|
diff = column.ascii1_other2_size - column.size
|
47
|
-
line_ret <<
|
47
|
+
line_ret << justified_column_table(column, max_sizes[cnt], diff, position)
|
48
48
|
end
|
49
49
|
ret << "|#{line_ret.join('|')}|"
|
50
50
|
end
|
51
51
|
ret.join("\n") + "\n"
|
52
52
|
end
|
53
53
|
|
54
|
-
def
|
54
|
+
def justified_column_table(column, max_size, diff, position)
|
55
55
|
pos = max_size - diff
|
56
56
|
case position
|
57
57
|
when :left
|
@@ -63,11 +63,11 @@ class String
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def
|
66
|
+
def get_columuns_table(line)
|
67
67
|
line.split('|')[1..-2]
|
68
68
|
end
|
69
69
|
|
70
|
-
def
|
70
|
+
def get_column_max_table(columns, max_sizes)
|
71
71
|
columns.each_with_index do |column, index|
|
72
72
|
current_size = column.ascii1_other2_size
|
73
73
|
# current_size = column.size
|
data/lib/open_classes/string.rb
CHANGED
@@ -8,6 +8,7 @@ require 'open_classes/string/escape_double_quote'
|
|
8
8
|
require 'open_classes/string/escape_quote'
|
9
9
|
require 'open_classes/string/hyphen_to_a'
|
10
10
|
require 'open_classes/string/is_meta_variable'
|
11
|
+
require 'open_classes/string/justify_char'
|
11
12
|
require 'open_classes/string/justify_table'
|
12
13
|
require 'open_classes/string/say'
|
13
14
|
require 'open_classes/string/spacing'
|
data/lib/tbpgr_utils/version.rb
CHANGED
@@ -0,0 +1,98 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe String do
|
6
|
+
|
7
|
+
context :justify_table do
|
8
|
+
SAMPLE_STRING1 = <<-EOS
|
9
|
+
print 'hoge' # => 'hoge'
|
10
|
+
print 'hoge' * 2 # => 'hogehoge'
|
11
|
+
print 'hoge' + 'hige' # => 'hogehige'
|
12
|
+
EOS
|
13
|
+
|
14
|
+
SAMPLE_JUSTIFIED_STRING1 = <<-EOS
|
15
|
+
print 'hoge' # => 'hoge'
|
16
|
+
print 'hoge' * 2 # => 'hogehoge'
|
17
|
+
print 'hoge' + 'hige' # => 'hogehige'
|
18
|
+
EOS
|
19
|
+
|
20
|
+
SAMPLE_STRING2 = <<-EOS
|
21
|
+
print 'hoge' | => 'hoge'
|
22
|
+
print 'hoge' * 2 | => 'hogehoge'
|
23
|
+
print 'hoge' + 'hige' | => 'hogehige'
|
24
|
+
EOS
|
25
|
+
|
26
|
+
SAMPLE_JUSTIFIED_STRING2 = <<-EOS
|
27
|
+
print 'hoge' | => 'hoge'
|
28
|
+
print 'hoge' * 2 | => 'hogehoge'
|
29
|
+
print 'hoge' + 'hige' | => 'hogehige'
|
30
|
+
EOS
|
31
|
+
|
32
|
+
SAMPLE_STRING3 = <<-EOS
|
33
|
+
print 'hoge' // => 'hoge'
|
34
|
+
print 'hoge' * 2 // => 'hogehoge'
|
35
|
+
print 'hoge' + 'hige' // => 'hogehige'
|
36
|
+
EOS
|
37
|
+
|
38
|
+
SAMPLE_JUSTIFIED_STRING3 = <<-EOS
|
39
|
+
print 'hoge' // => 'hoge'
|
40
|
+
print 'hoge' * 2 // => 'hogehoge'
|
41
|
+
print 'hoge' + 'hige' // => 'hogehige'
|
42
|
+
EOS
|
43
|
+
|
44
|
+
cases = [
|
45
|
+
{
|
46
|
+
case_no: 1,
|
47
|
+
case_title: 'sharp justify case',
|
48
|
+
input: SAMPLE_STRING1,
|
49
|
+
separator: '#',
|
50
|
+
expected: SAMPLE_JUSTIFIED_STRING1,
|
51
|
+
},
|
52
|
+
{
|
53
|
+
case_no: 2,
|
54
|
+
case_title: 'use default separator(pipe) justify case',
|
55
|
+
input: SAMPLE_STRING2,
|
56
|
+
expected: SAMPLE_JUSTIFIED_STRING2,
|
57
|
+
},
|
58
|
+
{
|
59
|
+
case_no: 3,
|
60
|
+
case_title: 'double stash justify case',
|
61
|
+
input: SAMPLE_STRING3,
|
62
|
+
separator: '//',
|
63
|
+
expected: SAMPLE_JUSTIFIED_STRING3,
|
64
|
+
},
|
65
|
+
]
|
66
|
+
|
67
|
+
cases.each do |c|
|
68
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
69
|
+
begin
|
70
|
+
case_before c
|
71
|
+
|
72
|
+
# -- given --
|
73
|
+
# nothing
|
74
|
+
|
75
|
+
# -- when --
|
76
|
+
if (c[:separator])
|
77
|
+
actual = c[:input].justify_char c[:separator]
|
78
|
+
else
|
79
|
+
actual = c[:input].justify_char
|
80
|
+
end
|
81
|
+
|
82
|
+
# -- then --
|
83
|
+
expect(actual).to eq(c[:expected])
|
84
|
+
ensure
|
85
|
+
case_after c
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def case_before(c)
|
90
|
+
# implement each case before
|
91
|
+
end
|
92
|
+
|
93
|
+
def case_after(c)
|
94
|
+
# implement each case after
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tbpgr_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.122
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tbpgr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -216,6 +216,7 @@ files:
|
|
216
216
|
- lib/open_classes/string/heading_helper.rb
|
217
217
|
- lib/open_classes/string/hyphen_to_a.rb
|
218
218
|
- lib/open_classes/string/is_meta_variable.rb
|
219
|
+
- lib/open_classes/string/justify_char.rb
|
219
220
|
- lib/open_classes/string/justify_table.rb
|
220
221
|
- lib/open_classes/string/say.rb
|
221
222
|
- lib/open_classes/string/spacing.rb
|
@@ -345,6 +346,7 @@ files:
|
|
345
346
|
- spec/open_classes/string/escape_quote_spec.rb
|
346
347
|
- spec/open_classes/string/hyphen_to_a_spec.rb
|
347
348
|
- spec/open_classes/string/is_meta_variable_spec.rb
|
349
|
+
- spec/open_classes/string/justify_char_spec.rb
|
348
350
|
- spec/open_classes/string/justify_table_spec.rb
|
349
351
|
- spec/open_classes/string/say_spec.rb
|
350
352
|
- spec/open_classes/string/spacing_spec.rb
|
@@ -497,6 +499,7 @@ test_files:
|
|
497
499
|
- spec/open_classes/string/escape_quote_spec.rb
|
498
500
|
- spec/open_classes/string/hyphen_to_a_spec.rb
|
499
501
|
- spec/open_classes/string/is_meta_variable_spec.rb
|
502
|
+
- spec/open_classes/string/justify_char_spec.rb
|
500
503
|
- spec/open_classes/string/justify_table_spec.rb
|
501
504
|
- spec/open_classes/string/say_spec.rb
|
502
505
|
- spec/open_classes/string/spacing_spec.rb
|