builtinextension 0.0.3 → 0.0.4
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/CHANGES +8 -0
- data/Gemfile +1 -1
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/builtinextension.gemspec +10 -7
- data/lib/string_mismatch.rb +0 -0
- data/lib/string_split_parens.rb +57 -0
- data/spec/string_split_parens_spec.rb +124 -0
- metadata +19 -41
data/CHANGES
ADDED
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.
|
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.
|
1
|
+
0.0.4
|
data/builtinextension.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "builtinextension"
|
8
|
-
s.version = "0.0.
|
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
|
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.
|
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.
|
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.
|
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.
|
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"])
|
data/lib/string_mismatch.rb
CHANGED
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.
|
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
|
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.
|
21
|
+
version: 2.9.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
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:
|
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:
|
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:
|
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:
|
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: -
|
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.
|
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: []
|