builtinextension 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES ADDED
@@ -0,0 +1,8 @@
1
+ = filerenamer Changelog
2
+
3
+ == Master (for 0.0.4)
4
+ * Add lib/string_split_parens.rb for String::split_parens.
5
+
6
+ == Version 0.0.3
7
+ * Initial release and several corrections.
8
+
data/Gemfile CHANGED
@@ -6,7 +6,7 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
- gem "rspec", "~> 2.8.0"
9
+ gem "rspec", "~> 2.9.0"
10
10
  gem "rdoc", "~> 3.12"
11
11
 
12
12
  gem "bundler", "~> 1.1.3"
data/Rakefile CHANGED
@@ -17,7 +17,7 @@ Jeweler::Tasks.new do |gem|
17
17
  gem.name = "builtinextension"
18
18
  gem.homepage = "http://github.com/ippei94da/builtinextension"
19
19
  gem.license = "MIT"
20
- gem.summary = %Q{Method as extension for builtin classes.}
20
+ gem.summary = %Q{Method as extension for builtin classes}
21
21
  gem.description = %Q{Personally frequently used methods for builtin classes,
22
22
  e.g., String, Array, etc.
23
23
  These methods are not implemented in Ruby and
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "builtinextension"
8
- s.version = "0.0.3"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ippei94da"]
12
- s.date = "2012-04-02"
12
+ s.date = "2012-07-04"
13
13
  s.description = "Personally frequently used methods for builtin classes,\n e.g., String, Array, etc.\n These methods are not implemented in Ruby and\n are doubted to offer to be implemented into Ruby core system.\n A main target is my personal programming.\n "
14
14
  s.email = "ippei94da@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.files = [
20
20
  ".document",
21
21
  ".rspec",
22
+ "CHANGES",
22
23
  "Gemfile",
23
24
  "LICENSE.txt",
24
25
  "README.rdoc",
@@ -30,6 +31,7 @@ Gem::Specification.new do |s|
30
31
  "lib/string_color.rb",
31
32
  "lib/string_escape_zsh.rb",
32
33
  "lib/string_mismatch.rb",
34
+ "lib/string_split_parens.rb",
33
35
  "lib/string_width.rb",
34
36
  "spec/array_include_eql_spec.rb",
35
37
  "spec/array_select_indices_spec.rb",
@@ -38,32 +40,33 @@ Gem::Specification.new do |s|
38
40
  "spec/string_color_spec.rb",
39
41
  "spec/string_escape_zsh_spec.rb",
40
42
  "spec/string_mismatch_spec.rb",
43
+ "spec/string_split_parens_spec.rb",
41
44
  "spec/string_width_spec.rb"
42
45
  ]
43
46
  s.homepage = "http://github.com/ippei94da/builtinextension"
44
47
  s.licenses = ["MIT"]
45
48
  s.require_paths = ["lib"]
46
- s.rubygems_version = "1.8.21"
47
- s.summary = "Method as extension for builtin classes."
49
+ s.rubygems_version = "1.8.11"
50
+ s.summary = "Method as extension for builtin classes"
48
51
 
49
52
  if s.respond_to? :specification_version then
50
53
  s.specification_version = 3
51
54
 
52
55
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
53
- s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
56
+ s.add_development_dependency(%q<rspec>, ["~> 2.9.0"])
54
57
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
55
58
  s.add_development_dependency(%q<bundler>, ["~> 1.1.3"])
56
59
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
57
60
  s.add_development_dependency(%q<simplecov>, [">= 0"])
58
61
  else
59
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
62
+ s.add_dependency(%q<rspec>, ["~> 2.9.0"])
60
63
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
61
64
  s.add_dependency(%q<bundler>, ["~> 1.1.3"])
62
65
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
63
66
  s.add_dependency(%q<simplecov>, [">= 0"])
64
67
  end
65
68
  else
66
- s.add_dependency(%q<rspec>, ["~> 2.8.0"])
69
+ s.add_dependency(%q<rspec>, ["~> 2.9.0"])
67
70
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
68
71
  s.add_dependency(%q<bundler>, ["~> 1.1.3"])
69
72
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
File without changes
@@ -0,0 +1,57 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ #
5
+ #
6
+ #
7
+ class String
8
+
9
+ # Split String using correspond parentheses.
10
+ # "(ab)(cd(ef))gh(ij)kl(mn)" -> ["(ab)", "(cd(ef))", "gh", "(ij)", "kl", "(mn)"]
11
+ # "((ab)(cd(ef))gh(ij)kl(mn)" -> ["((ab)(cd(ef))gh(ij)kl(mn)"]
12
+ # "(ab)(cd(ef)))gh(ij)kl(mn)" -> ["(ab)", "(cd(ef))", ")gh(ij)kl(mn)"]
13
+ def split_parens
14
+ depth = 0
15
+ current = ''
16
+ results = []
17
+ self.split('').each do |char|
18
+ if char.open_paren?
19
+ if (depth == 0 )
20
+ results << current
21
+ current = ''
22
+ end
23
+ current << char
24
+ depth += 1
25
+ next
26
+ end
27
+
28
+ if char.close_paren?
29
+ depth -= 1
30
+ current << char
31
+ if (depth == 0)
32
+ results << current
33
+ current = ''
34
+ end
35
+ next
36
+ end
37
+
38
+ current << char
39
+ end
40
+ results << current
41
+ results.delete_if{|item| item.empty? }
42
+ return results
43
+ end
44
+
45
+ private
46
+
47
+ # Return true if self is a single character and open parenthesis.
48
+ def open_paren?
49
+ '({[<({[<〔【〈《「『'.split('').include?(self)
50
+ end
51
+
52
+ # Return true if self is a single character and close parenthesis.
53
+ def close_paren?
54
+ ')}]>)}]>〕】〉》」』'.split('').include?(self)
55
+ end
56
+ end
57
+
@@ -0,0 +1,124 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
5
+
6
+ require 'string_split_parens.rb'
7
+
8
+ class String
9
+ public :open_paren?, :close_paren?
10
+ end
11
+
12
+ describe String, "" do
13
+ describe "many parens" do
14
+ before do
15
+ @s00 = "(ab)(cd(ef))gh(ij)kl(mn)"
16
+ @s01 = "((ab)(cd(ef))gh(ij)kl(mn)" # open paren excess.
17
+ @s02 = "(ab)(cd(ef)))gh(ij)kl(mn)" # close paren excess.
18
+ end
19
+
20
+ it "" do
21
+ @s00.split_parens.should == ["(ab)", "(cd(ef))", "gh", "(ij)", "kl", "(mn)"]
22
+ @s01.split_parens.should == ["((ab)(cd(ef))gh(ij)kl(mn)"]
23
+ @s02.split_parens.should == ["(ab)", "(cd(ef))", ")gh(ij)kl(mn)"]
24
+ end
25
+ end
26
+
27
+ describe "single char" do
28
+ it do
29
+ '(' .close_paren?.should == false
30
+ '(' .open_paren?.should == true
31
+
32
+ ')' .close_paren?.should == true
33
+ ')' .open_paren?.should == false
34
+
35
+ '<' .close_paren?.should == false
36
+ '<' .open_paren?.should == true
37
+
38
+ '>' .close_paren?.should == true
39
+ '>' .open_paren?.should == false
40
+
41
+ '[' .close_paren?.should == false
42
+ '[' .open_paren?.should == true
43
+
44
+ ']' .close_paren?.should == true
45
+ ']' .open_paren?.should == false
46
+
47
+ '{' .close_paren?.should == false
48
+ '{' .open_paren?.should == true
49
+
50
+ '}' .close_paren?.should == true
51
+ '}' .open_paren?.should == false
52
+
53
+ '('.close_paren?.should == false
54
+ '('.open_paren?.should == true
55
+
56
+ ')'.close_paren?.should == true
57
+ ')'.open_paren?.should == false
58
+
59
+ '〔'.close_paren?.should == false
60
+ '〔'.open_paren?.should == true
61
+
62
+ '〕'.close_paren?.should == true
63
+ '〕'.open_paren?.should == false
64
+
65
+ '['.close_paren?.should == false
66
+ '['.open_paren?.should == true
67
+
68
+ ']'.close_paren?.should == true
69
+ ']'.open_paren?.should == false
70
+
71
+ '{'.close_paren?.should == false
72
+ '{'.open_paren?.should == true
73
+
74
+ '}'.close_paren?.should == true
75
+ '}'.open_paren?.should == false
76
+
77
+ '〈'.close_paren?.should == false
78
+ '〈'.open_paren?.should == true
79
+
80
+ '〉'.close_paren?.should == true
81
+ '〉'.open_paren?.should == false
82
+
83
+ '《'.close_paren?.should == false
84
+ '《'.open_paren?.should == true
85
+
86
+ '》'.close_paren?.should == true
87
+ '》'.open_paren?.should == false
88
+
89
+ '「'.close_paren?.should == false
90
+ '「'.open_paren?.should == true
91
+
92
+ '」'.close_paren?.should == true
93
+ '」'.open_paren?.should == false
94
+
95
+ '『'.close_paren?.should == false
96
+ '『'.open_paren?.should == true
97
+
98
+ '』'.close_paren?.should == true
99
+ '』'.open_paren?.should == false
100
+
101
+ '【'.close_paren?.should == false
102
+ '【'.open_paren?.should == true
103
+
104
+ '】'.close_paren?.should == true
105
+ '】'.open_paren?.should == false
106
+
107
+ '<'.close_paren?.should == false
108
+ '<'.open_paren?.should == true
109
+
110
+ '>'.close_paren?.should == true
111
+ '>'.open_paren?.should == false
112
+
113
+ '(('.open_paren?.should == false
114
+ '))'.open_paren?.should == false
115
+
116
+ '({'.open_paren?.should == false
117
+ ')}'.open_paren?.should == false
118
+
119
+ end
120
+ end
121
+
122
+
123
+
124
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: builtinextension
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,27 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-02 00:00:00.000000000 Z
12
+ date: 2012-07-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: !ruby/object:Gem::Requirement
16
+ requirement: &79209340 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 2.8.0
21
+ version: 2.9.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- version: 2.8.0
24
+ version_requirements: *79209340
30
25
  - !ruby/object:Gem::Dependency
31
26
  name: rdoc
32
- requirement: !ruby/object:Gem::Requirement
27
+ requirement: &79209070 !ruby/object:Gem::Requirement
33
28
  none: false
34
29
  requirements:
35
30
  - - ~>
@@ -37,15 +32,10 @@ dependencies:
37
32
  version: '3.12'
38
33
  type: :development
39
34
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: '3.12'
35
+ version_requirements: *79209070
46
36
  - !ruby/object:Gem::Dependency
47
37
  name: bundler
48
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &79208790 !ruby/object:Gem::Requirement
49
39
  none: false
50
40
  requirements:
51
41
  - - ~>
@@ -53,15 +43,10 @@ dependencies:
53
43
  version: 1.1.3
54
44
  type: :development
55
45
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.1.3
46
+ version_requirements: *79208790
62
47
  - !ruby/object:Gem::Dependency
63
48
  name: jeweler
64
- requirement: !ruby/object:Gem::Requirement
49
+ requirement: &79208500 !ruby/object:Gem::Requirement
65
50
  none: false
66
51
  requirements:
67
52
  - - ~>
@@ -69,15 +54,10 @@ dependencies:
69
54
  version: 1.8.3
70
55
  type: :development
71
56
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: 1.8.3
57
+ version_requirements: *79208500
78
58
  - !ruby/object:Gem::Dependency
79
59
  name: simplecov
80
- requirement: !ruby/object:Gem::Requirement
60
+ requirement: &79208230 !ruby/object:Gem::Requirement
81
61
  none: false
82
62
  requirements:
83
63
  - - ! '>='
@@ -85,12 +65,7 @@ dependencies:
85
65
  version: '0'
86
66
  type: :development
87
67
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
68
+ version_requirements: *79208230
94
69
  description: ! "Personally frequently used methods for builtin classes,\n e.g.,
95
70
  String, Array, etc.\n These methods are not implemented in Ruby and\n are
96
71
  doubted to offer to be implemented into Ruby core system.\n A main target is
@@ -104,6 +79,7 @@ extra_rdoc_files:
104
79
  files:
105
80
  - .document
106
81
  - .rspec
82
+ - CHANGES
107
83
  - Gemfile
108
84
  - LICENSE.txt
109
85
  - README.rdoc
@@ -115,6 +91,7 @@ files:
115
91
  - lib/string_color.rb
116
92
  - lib/string_escape_zsh.rb
117
93
  - lib/string_mismatch.rb
94
+ - lib/string_split_parens.rb
118
95
  - lib/string_width.rb
119
96
  - spec/array_include_eql_spec.rb
120
97
  - spec/array_select_indices_spec.rb
@@ -123,6 +100,7 @@ files:
123
100
  - spec/string_color_spec.rb
124
101
  - spec/string_escape_zsh_spec.rb
125
102
  - spec/string_mismatch_spec.rb
103
+ - spec/string_split_parens_spec.rb
126
104
  - spec/string_width_spec.rb
127
105
  homepage: http://github.com/ippei94da/builtinextension
128
106
  licenses:
@@ -139,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
117
  version: '0'
140
118
  segments:
141
119
  - 0
142
- hash: -802740941
120
+ hash: -512860895
143
121
  required_rubygems_version: !ruby/object:Gem::Requirement
144
122
  none: false
145
123
  requirements:
@@ -148,8 +126,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
126
  version: '0'
149
127
  requirements: []
150
128
  rubyforge_project:
151
- rubygems_version: 1.8.21
129
+ rubygems_version: 1.8.11
152
130
  signing_key:
153
131
  specification_version: 3
154
- summary: Method as extension for builtin classes.
132
+ summary: Method as extension for builtin classes
155
133
  test_files: []