powerpack 0.0.8 → 0.0.9

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
  SHA1:
3
- metadata.gz: 369199242dfe319d0e8afa477689f8d97cb0e647
4
- data.tar.gz: 42c792d527998796fdce340364c9664e2b666a54
3
+ metadata.gz: 2d3df53a4979884a29c563336460368f50c8235b
4
+ data.tar.gz: 0b4f51bcf7c5374cd5ebb4d48543c7450461796f
5
5
  SHA512:
6
- metadata.gz: 31cc13c64e5aec8afb3e2095d64c6047f484ec2390355c35fb36394c5f6818a61872cb582eba2d208485647a6e7e2137c7e2ea429cb0df953574f5ac14e728b3
7
- data.tar.gz: 35eb68213ac9c8354566772c5b75c6bdde2be58155b455cd00209703473065f7f1a71e0a809b031cfe39e45e4df52405181d9cb878cc8af86719fc1a546a0fd3
6
+ metadata.gz: 2006ba07ffea976d3cbdc95dbf6cd88de0f69551ea8b95bf32e8ad196f3d29806284cd94aced250a71f72f4a7289410489f74dae2cad748f0c72298ea504db9a
7
+ data.tar.gz: 8bf8a78aeb5967a9ecedc1a261f7d92cb73c08f81f9ff1c5985ad579d8b1199a6c1720608e56551b4b7067666ab3554dbb5c1e5375c8ce54b4c836028dd27369
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## master (unreleased)
4
4
 
5
+ ## 0.0.9 (22/10/2013)
6
+
7
+ * Added `String#remove`
8
+ * Added `String#remove!`
9
+ * Added `String#ascii_only`
10
+ * Added `String#ascii_only!`
11
+
5
12
  ## 0.0.8 (13/09/2013)
6
13
 
7
14
  ### New features
data/README.md CHANGED
@@ -46,8 +46,12 @@ Or install it yourself as:
46
46
  * [#trillion](http://rdoc.info/github/bbatsov/powerpack/Numeric#trillion-instance_method)
47
47
  * [#quadrillion](http://rdoc.info/github/bbatsov/powerpack/Numeric#quadrillion-instance_method)
48
48
  * [String](http://rdoc.info/github/bbatsov/powerpack/String)
49
+ * [#ascii_only](http://rdoc.info/github/bbatsov/powerpack/String#ascii_only-instance_method)
50
+ * [#ascii_only!](http://rdoc.info/github/bbatsov/powerpack/String#ascii_only!-instance_method)
49
51
  * [#blank?](http://rdoc.info/github/bbatsov/powerpack/String#blank?-instance_method)
50
52
  * [#format](http://rdoc.info/github/bbatsov/powerpack/String#format-instance_method)
53
+ * [#remove](http://rdoc.info/github/bbatsov/powerpack/String#remove-instance_method)
54
+ * [#remove!](http://rdoc.info/github/bbatsov/powerpack/String#remove!-instance_method)
51
55
  * [#strip_indent](http://rdoc.info/github/bbatsov/powerpack/String#strip_indent-instance_method)
52
56
  * [#strip_margin](http://rdoc.info/github/bbatsov/powerpack/String#strip_margin-instance_method)
53
57
  * [#squish](http://rdoc.info/github/bbatsov/powerpack/String#squish-instance_method)
@@ -25,12 +25,14 @@ unless Enumerable.method_defined? :exactly?
25
25
  each do |*o|
26
26
  if yield(*o)
27
27
  found_count += 1
28
+ return false if found_count > n
28
29
  end
29
30
  end
30
31
  else
31
32
  each do |o|
32
33
  if o
33
34
  found_count += 1
35
+ return false if found_count > n
34
36
  end
35
37
  end
36
38
  end
@@ -1,5 +1,7 @@
1
+ require_relative 'string/ascii_only'
1
2
  require_relative 'string/blank'
2
3
  require_relative 'string/format'
4
+ require_relative 'string/remove'
3
5
  require_relative 'string/strip_indent'
4
6
  require_relative 'string/strip_margin'
5
7
  require_relative 'string/squish'
@@ -0,0 +1,42 @@
1
+ # encoding: utf-8
2
+
3
+ class String
4
+ # Return a copy of string with ASCII characters only
5
+ # Source: http://stackoverflow.com/questions/1268289/how-to-get-rid-of-non-ascii-characters-in-ruby
6
+ #
7
+ # @return [String] a copy of string with ASCII characters only
8
+ #
9
+ # @example
10
+ # 'abc'.ascii_only #=> 'abc'
11
+ #
12
+ # @example
13
+ # '中文123'.ascii_only #=> '123'
14
+ unless String.method_defined? :ascii_only
15
+ def ascii_only
16
+ dup.ascii_only!
17
+ end
18
+ end
19
+
20
+ # Modify self and keep ASCII characters only
21
+ # Returns the string even if no changes were made.
22
+ # Source: http://stackoverflow.com/questions/1268289/how-to-get-rid-of-non-ascii-characters-in-ruby
23
+ #
24
+ # @return [String] The result string
25
+ #
26
+ # @example
27
+ # 'abc'.ascii_only! #=> 'abc'
28
+ #
29
+ # @example
30
+ # '中文123'.ascii_only! #=> '123'
31
+ unless String.method_defined? :ascii_only!
32
+ def ascii_only!
33
+ encoding_options = {
34
+ :invalid => :replace, # Replace invalid byte sequences
35
+ :undef => :replace, # Replace anything not defined in ASCII
36
+ :replace => '', # Use a blank for those replacements
37
+ :UNIVERSAL_NEWLINE_DECORATOR => true # Always break lines with \n
38
+ }
39
+ self.encode! Encoding.find('ASCII'), encoding_options
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,17 @@
1
+ unless String.method_defined? :remove
2
+ class String
3
+ # Removes all occurrences of a pattern in a string.
4
+ #
5
+ # @return [String] a new string without any occurrences of the pattern.
6
+ def remove(pattern)
7
+ dup.remove!(pattern)
8
+ end
9
+
10
+ # Removes all occurrences of a pattern in a string.
11
+ #
12
+ # @return [String] the string without any occurrences of the pattern.
13
+ def remove!(pattern)
14
+ gsub!(pattern, '')
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Powerpack
2
- VERSION = '0.0.8'
2
+ VERSION = '0.0.9'
3
3
  end
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ unless defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
6
+ describe 'String#ascii_only' do
7
+ it 'returns same value for string with ASCII chars only' do
8
+ expect('abc'.ascii_only).to eq 'abc'
9
+ end
10
+
11
+ it 'returns string without non-ASCII chars' do
12
+ expect("abc\u{6666}".force_encoding("UTF-8").ascii_only).to eq 'abc'
13
+ end
14
+
15
+ it 'returns string without non-ASCII chars and with ASCII chars' do
16
+ expect("\u{6666}".force_encoding("UTF-8").ascii_only).to eq ''
17
+ end
18
+
19
+ it 'does not change the original string' do
20
+ string = "abc\u{6666}".force_encoding("UTF-8")
21
+ string.ascii_only
22
+ expect(string).to eq "abc\u{6666}".force_encoding("UTF-8")
23
+ end
24
+ end
25
+
26
+ describe 'String#ascii_only!' do
27
+ it 'returns same value for string with ASCII chars only' do
28
+ expect('abc'.ascii_only!).to eq 'abc'
29
+ end
30
+
31
+ it 'returns string without non-ASCII chars' do
32
+ expect("abc\u{6666}".force_encoding("UTF-8").ascii_only!).to eq 'abc'
33
+ end
34
+
35
+ it 'returns string without non-ASCII chars and with ASCII chars' do
36
+ expect("\u{6666}".force_encoding("UTF-8").ascii_only!).to eq ''
37
+ end
38
+
39
+ it 'changes the original string' do
40
+ string = "abc\u{6666}".force_encoding("UTF-8")
41
+ string.ascii_only!
42
+ expect(string).to eq 'abc'
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'String#remove' do
4
+ it 'removes all occurrences of a pattern' do
5
+ expect('Ladies Night'.remove(/Ladies /)).to eq('Night')
6
+ end
7
+ end
8
+
9
+ describe 'String#remove!' do
10
+ it 'removes all occurrences of a pattern' do
11
+ expect('Ladies Night'.remove(/Ladies /)).to eq('Night')
12
+ end
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: powerpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-13 00:00:00.000000000 Z
11
+ date: 2013-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -102,8 +102,10 @@ files:
102
102
  - lib/powerpack/numeric/pos.rb
103
103
  - lib/powerpack/numeric/scale.rb
104
104
  - lib/powerpack/string.rb
105
+ - lib/powerpack/string/ascii_only.rb
105
106
  - lib/powerpack/string/blank.rb
106
107
  - lib/powerpack/string/format.rb
108
+ - lib/powerpack/string/remove.rb
107
109
  - lib/powerpack/string/squish.rb
108
110
  - lib/powerpack/string/strip_indent.rb
109
111
  - lib/powerpack/string/strip_margin.rb
@@ -124,8 +126,10 @@ files:
124
126
  - spec/powerpack/numeric/neg_spec.rb
125
127
  - spec/powerpack/numeric/pos_spec.rb
126
128
  - spec/powerpack/numeric/scale_spec.rb
129
+ - spec/powerpack/string/ascii_only_spec.rb
127
130
  - spec/powerpack/string/blank_spec.rb
128
131
  - spec/powerpack/string/format_spec.rb
132
+ - spec/powerpack/string/remove_spec.rb
129
133
  - spec/powerpack/string/squish_spec.rb
130
134
  - spec/powerpack/string/strip_indent_spec.rb
131
135
  - spec/powerpack/string/strip_margin_spec.rb
@@ -170,8 +174,10 @@ test_files:
170
174
  - spec/powerpack/numeric/neg_spec.rb
171
175
  - spec/powerpack/numeric/pos_spec.rb
172
176
  - spec/powerpack/numeric/scale_spec.rb
177
+ - spec/powerpack/string/ascii_only_spec.rb
173
178
  - spec/powerpack/string/blank_spec.rb
174
179
  - spec/powerpack/string/format_spec.rb
180
+ - spec/powerpack/string/remove_spec.rb
175
181
  - spec/powerpack/string/squish_spec.rb
176
182
  - spec/powerpack/string/strip_indent_spec.rb
177
183
  - spec/powerpack/string/strip_margin_spec.rb