tbpgr_utils 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in tbpgr_utils.gemspec
4
+ gemspec
5
+ gem "rspec", "~> 2.14.1"
6
+ gem "simplecov", "~> 0.8.2"
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 tbpgr
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # TbpgrUtils
2
+
3
+ TbpgrUtils is Utilities.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'tbpgr_utils'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install tbpgr_utils
18
+
19
+ ## Usage
20
+ ### List
21
+ | dsl| mean|
22
+ |:-----------|:------------|
23
+ |Object#boolean?|data type check for boolean|
24
+ |Object#my_methods|return public/protected/private self define methods|
25
+ |String#justify_table|justify pipe format table string|
26
+
27
+ ### Object#boolean?
28
+ ~~~ruby
29
+ require 'tbpgr_utils'
30
+
31
+ p true.boolean? # =>true
32
+ p false.boolean? # =>true
33
+ p nil.boolean? # =>false
34
+ p "".boolean? # =>false
35
+ p "true".boolean? # =>false
36
+ ~~~
37
+
38
+ ### Object#my_methods
39
+ ~~~ruby
40
+ require 'tbpgr_utils'
41
+
42
+ p Hoge.new.my_methods # =>[:hoge, :hige, :hege]
43
+ ~~~
44
+
45
+ ### String#justify_table
46
+ ~~~ruby
47
+ require 'tbpgr_utils'
48
+
49
+ str =<<-EOS
50
+ |* hogehogehoge|* hege|* hige|
51
+ |test|tester|testest|
52
+ |test|tester|aaaaaaaaaaaaaaaaaaaaaaatestest|
53
+ EOS
54
+
55
+ puts str.justify_table
56
+ ~~~
57
+
58
+ output
59
+ ~~~
60
+ |* hogehogehoge|* hage|* hige |
61
+ |test |tester|testest |
62
+ |test |tester|aaaaaaaaaaaaaaaaaaaaaaatestest|
63
+ ~~~
64
+
65
+ ## History
66
+ * version 0.0.1 : first release.
67
+
68
+ ## Contributing
69
+
70
+ 1. Fork it
71
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
72
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
73
+ 4. Push to the branch (`git push origin my-new-feature`)
74
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+
3
+ # =Object
4
+ class Object
5
+ # == check boolean type
6
+ def boolean?
7
+ self.is_a?(TrueClass) || self.is_a?(FalseClass)
8
+ end
9
+
10
+ # ==get self define methods.
11
+ def my_methods
12
+ public_methods(false) + protected_methods(false) + private_methods(false)
13
+ end
14
+ end
@@ -0,0 +1,57 @@
1
+ # encoding: utf-8
2
+
3
+ # =String
4
+ class String
5
+ # ==justify pipe using table format
6
+ def justify_table
7
+ return self if self.empty?
8
+ max_sizes = get_column_maxes
9
+ return self if max_sizes.nil?
10
+ justify_lines max_sizes
11
+ end
12
+
13
+ private
14
+
15
+ def get_column_maxes
16
+ max_sizes = []
17
+ each_line do |line|
18
+ return nil unless table? line
19
+ columns = get_columuns(line)
20
+ max_sizes = get_column_max(columns, max_sizes)
21
+ end
22
+ max_sizes
23
+ end
24
+
25
+ def justify_lines(max_sizes)
26
+ ret = []
27
+ each_line do |line|
28
+ columns = get_columuns(line)
29
+ line_ret = []
30
+ columns.each_with_index do |column, cnt|
31
+ line_ret << column.ljust(max_sizes[cnt])
32
+ end
33
+ ret << "|#{line_ret.join('|')}|"
34
+ end
35
+ ret.join("\n") + "\n"
36
+ end
37
+
38
+ def get_columuns(line)
39
+ line.split('|')[1..-2]
40
+ end
41
+
42
+ def get_column_max(columns, max_sizes)
43
+ columns.each_with_index do |column, index|
44
+ current_size = column.size
45
+ if max_sizes[index].nil?
46
+ max_sizes << current_size
47
+ next
48
+ end
49
+ max_sizes[index] = current_size if current_size > max_sizes[index]
50
+ end
51
+ max_sizes
52
+ end
53
+
54
+ def table?(text)
55
+ text.count('|') > 0
56
+ end
57
+ end
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+
3
+ # =Tbpgr Utilities
4
+ module TbpgrUtils
5
+ VERSION = '0.0.1'
6
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ require 'tbpgr_utils/version'
3
+
4
+ # =Tbpgr Utilities
5
+ module TbpgrUtils
6
+ require 'open_classes/object'
7
+ require 'open_classes/string'
8
+ end
@@ -0,0 +1,124 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'tbpgr_utils'
4
+
5
+ describe Object do
6
+
7
+ context :boolean? do
8
+ cases = [
9
+ {
10
+ case_no: 1,
11
+ case_title: 'true case',
12
+ input: true,
13
+ expected: true,
14
+ },
15
+ {
16
+ case_no: 2,
17
+ case_title: 'false case',
18
+ input: false,
19
+ expected: true,
20
+ },
21
+ {
22
+ case_no: 3,
23
+ case_title: "string 'true' case",
24
+ input: 'true',
25
+ expected: false,
26
+ },
27
+ {
28
+ case_no: 4,
29
+ case_title: 'empty case',
30
+ input: '',
31
+ expected: false,
32
+ },
33
+ {
34
+ case_no: 5,
35
+ case_title: 'nil case',
36
+ input: nil,
37
+ expected: false,
38
+ },
39
+ ]
40
+
41
+ cases.each do |c|
42
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
43
+ begin
44
+ case_before c
45
+
46
+ # -- given --
47
+ # nothing
48
+
49
+ # -- when --
50
+ actual = c[:input].boolean?
51
+
52
+ # -- then --
53
+ expect(actual).to eq(c[:expected])
54
+ ensure
55
+ case_after c
56
+ end
57
+ end
58
+
59
+ def case_before(c)
60
+ # implement each case before
61
+ end
62
+
63
+ def case_after(c)
64
+ # implement each case after
65
+ end
66
+ end
67
+ end
68
+
69
+ context :my_methods do
70
+ SampleClass = Class.new(String) do
71
+ def public_hello
72
+ "#{self} public hello"
73
+ end
74
+
75
+ protected
76
+
77
+ def protected_hello
78
+ "#{self} protected hello"
79
+ end
80
+
81
+ private
82
+
83
+ def private_hello
84
+ "#{self} private hello"
85
+ end
86
+ end
87
+
88
+ cases = [
89
+ {
90
+ case_no: 1,
91
+ case_title: 'true case',
92
+ input: SampleClass.new,
93
+ expected: [:public_hello, :protected_hello, :private_hello],
94
+ },
95
+ ]
96
+
97
+ cases.each do |c|
98
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
99
+ begin
100
+ case_before c
101
+
102
+ # -- given --
103
+ # nothing
104
+
105
+ # -- when --
106
+ actual = c[:input].my_methods
107
+
108
+ # -- then --
109
+ expect(actual).to eq(c[:expected])
110
+ ensure
111
+ case_after c
112
+ end
113
+ end
114
+
115
+ def case_before(c)
116
+ # implement each case before
117
+ end
118
+
119
+ def case_after(c)
120
+ # implement each case after
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,8 @@
1
+ # encoding: utf-8
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+ RSpec.configure do |config|
5
+ config.treat_symbols_as_metadata_keys_with_true_values = true
6
+ config.run_all_when_everything_filtered = true
7
+ config.filter_run :focus
8
+ end
@@ -0,0 +1,75 @@
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_TABLE = <<-EOS
9
+ |* first name|* family name|
10
+ |eiichiro|oda|
11
+ |akira|toriyama|
12
+ |yusei|matsui|
13
+ EOS
14
+
15
+ SAMPLE_NOT_TABLE = <<-EOS
16
+ csv_column1_1, csv_column1_2
17
+ csv_column2_1, csv_column2_2
18
+ EOS
19
+
20
+ SAMPLE_JUSTIFIED_TABLE = <<-EOS
21
+ |* first name|* family name|
22
+ |eiichiro |oda |
23
+ |akira |toriyama |
24
+ |yusei |matsui |
25
+ EOS
26
+
27
+ cases = [
28
+ {
29
+ case_no: 1,
30
+ case_title: 'valid justify case',
31
+ input: SAMPLE_TABLE,
32
+ expected: SAMPLE_JUSTIFIED_TABLE,
33
+ },
34
+ {
35
+ case_no: 2,
36
+ case_title: 'not table case',
37
+ input: SAMPLE_NOT_TABLE,
38
+ expected: SAMPLE_NOT_TABLE,
39
+ },
40
+ {
41
+ case_no: 3,
42
+ case_title: 'empty case',
43
+ input: '',
44
+ expected: '',
45
+ },
46
+ ]
47
+
48
+ cases.each do |c|
49
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
50
+ begin
51
+ case_before c
52
+
53
+ # -- given --
54
+ # nothing
55
+
56
+ # -- when --
57
+ actual = c[:input].justify_table
58
+
59
+ # -- then --
60
+ expect(actual).to eq(c[:expected])
61
+ ensure
62
+ case_after c
63
+ end
64
+ end
65
+
66
+ def case_before(c)
67
+ # implement each case before
68
+ end
69
+
70
+ def case_after(c)
71
+ # implement each case after
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'tbpgr_utils/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "tbpgr_utils"
8
+ spec.version = TbpgrUtils::VERSION
9
+ spec.authors = ["tbpgr"]
10
+ spec.email = ["tbpgr@tbpgr.jp"]
11
+ spec.description = %q{Utilities}
12
+ spec.summary = %q{Utilities}
13
+ spec.homepage = "https://github.com/tbpgr/tbpgr_utils"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec", "~> 2.14.1"
24
+ spec.add_development_dependency "simplecov", "~> 0.8.2"
25
+ end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tbpgr_utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - tbpgr
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-12-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: &22239264 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *22239264
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &22238400 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *22238400
36
+ - !ruby/object:Gem::Dependency
37
+ name: rspec
38
+ requirement: &22259016 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 2.14.1
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *22259016
47
+ - !ruby/object:Gem::Dependency
48
+ name: simplecov
49
+ requirement: &22257768 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.8.2
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *22257768
58
+ description: Utilities
59
+ email:
60
+ - tbpgr@tbpgr.jp
61
+ executables: []
62
+ extensions: []
63
+ extra_rdoc_files: []
64
+ files:
65
+ - .gitignore
66
+ - .rspec
67
+ - Gemfile
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - lib/open_classes/object.rb
72
+ - lib/open_classes/string.rb
73
+ - lib/tbpgr_utils.rb
74
+ - lib/tbpgr_utils/version.rb
75
+ - spec/object_spec.rb
76
+ - spec/spec_helper.rb
77
+ - spec/string_spec.rb
78
+ - tbpgr_utils.gemspec
79
+ homepage: https://github.com/tbpgr/tbpgr_utils
80
+ licenses:
81
+ - MIT
82
+ post_install_message:
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ none: false
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ requirements: []
99
+ rubyforge_project:
100
+ rubygems_version: 1.8.11
101
+ signing_key:
102
+ specification_version: 3
103
+ summary: Utilities
104
+ test_files:
105
+ - spec/object_spec.rb
106
+ - spec/spec_helper.rb
107
+ - spec/string_spec.rb
108
+ has_rdoc: