awesome_scrub 0.0.1 → 1.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 243516de8bf34a201f878dbb5115eb0976a951b3
4
- data.tar.gz: 243555a009d6856d3eba2d4af662c7c310736a52
3
+ metadata.gz: dbe558801a238b16bb144989824ee1933cd95ab6
4
+ data.tar.gz: 520e73654086d8c5ecfa42e85e123a6baba95db2
5
5
  SHA512:
6
- metadata.gz: 06342dda73e5f48be202bc73525567ad1ad60786012389c66c307210a2342317382f9e21cf1548084872d173506fab0b5c40438e4211589a397e204435716f83
7
- data.tar.gz: aca9cf00237a696a7edde0609fa2dbccc67eaa3dc89aeac97839eb140cb54180bec653837fdb1e2ee7c61e19a9bfa5ae982a7dd9da52daeb258ff4cc063cb627
6
+ metadata.gz: 71ea054936dcd9de2b03fc2c7843745b41694bcc12733a148648fbce99e63b8839ee5f1d128bdf8c21d80d854769baa106eda48e381ca688087152d206021d6d
7
+ data.tar.gz: de5a6b377bbf73dbffe129dcc5b287146f8d51f5903c3d8774f80124486936bccf790c6d387f7c57b9f3ee23e0059e6c61fc83a6d2bffc22b1573110010177fa
@@ -0,0 +1,12 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.0-preview2
6
+ before_install: gem install bundler --pre
7
+ notifications:
8
+ email:
9
+ - ogataken@gmail.com
10
+ branches:
11
+ only:
12
+ - master
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in awesome_scrub.gemspec
4
4
  gemspec
5
+
6
+ platform :mri_20, :mri_21 do
7
+ gem 'byebug'
8
+ end
data/README.md CHANGED
@@ -1,6 +1,80 @@
1
1
  # AwesomeScrub
2
2
 
3
- Wrap `String#scrub`.
3
+ Easy to use `String#scrub`. Prevent Invalid byte sequence in UTF-8.
4
+ Wrap `params[:name].respond_to?(:scrub) ? params[:name].scrub : params[:name]` to `params[:name].awesome_scrub`.
5
+
6
+ [![Gem Version](https://badge.fury.io/rb/awesome_scrub.png)](http://badge.fury.io/rb/awesome_scrub)
7
+ [![Build Status](https://api.travis-ci.org/sanemat/awesome_scrub.png?branch=master)](https://travis-ci.org/sanemat/awesome_scrub)
8
+ [![Code Climate](https://codeclimate.com/github/sanemat/awesome_scrub.png)](https://codeclimate.com/github/sanemat/awesome_scrub)
9
+
10
+ ## Use case
11
+
12
+ ### Before:
13
+ ```ruby
14
+ @name = params[:name].presence || 'nobody'
15
+ ```
16
+
17
+ ### After:
18
+ ```ruby
19
+ @name = awesome_scrub(params[:name]).presence || 'noby'
20
+ ```
21
+
22
+ ## Point
23
+
24
+ Almost time this is no problem, but params[:name] include `invalid byte sequence in UTF-8`, like `invalid_byte_sequence.presence` (`invalid_byte_sequence.present?`) raises `ArgumentError: invalid byte sequence in UTF-8`.
25
+
26
+ This problem's solution is `String#scrub`(Feature of Ruby2.1, and `string-scrub` gem which backport for Ruby2.0), this replaces invalid characters. [Feature #6752: Replacing ill-formed subsequencce - ruby-trunk - Ruby Issue Tracking System](http://bugs.ruby-lang.org/issues/6752)
27
+
28
+ This stil has problem for writing code, `params[:name]` is `String` or `nil`, and some case `Array`, `Fixnum`, and other object does not have `#scrub` method.
29
+
30
+ ### Work around
31
+
32
+ ```ruby
33
+ name = params[:name].respond_to?(:scrub) ? params[:name].scrub : params[:name]
34
+ @name = name.presence || 'nobody'
35
+ ```
36
+
37
+ ### Solution
38
+ ```ruby
39
+ @name = awesome_scrub(params[:name]).presence || 'noby'
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ ### Methods
45
+
46
+ ```ruby
47
+ # call scrub
48
+ awesome_scrub(args) #=> args.scrub
49
+
50
+ # call scrub!
51
+ awesome_scrub!(args) #=> args.scrub!
52
+ ```
53
+
54
+ ### Examples
55
+ ```ruby
56
+ class Foo
57
+ include AwesomeScrub
58
+
59
+ def bar
60
+ awesome_scrub(any)
61
+ end
62
+ end
63
+ ```
64
+ OR
65
+ ```ruby
66
+ class Foo
67
+ extend AwesomeScrub
68
+
69
+ def bar
70
+ awesome_scrub(any)
71
+ end
72
+ end
73
+ ```
74
+ OR
75
+ ```ruby
76
+ AwesomeScrub::awesome_scrub(any)
77
+ ```
4
78
 
5
79
  ## Installation
6
80
 
@@ -16,10 +90,6 @@ Or install it yourself as:
16
90
 
17
91
  $ gem install awesome_scrub
18
92
 
19
- ## Usage
20
-
21
- TODO: Write usage instructions here
22
-
23
93
  ## Contributing
24
94
 
25
95
  1. Fork it ( http://github.com/sanemat/awesome_scrub/fork )
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ task default: :test
5
+ Rake::TestTask.new do |t|
6
+ t.pattern = 'test/*_test.rb'
7
+ t.warning = true
8
+ t.verbose = true
9
+ end
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = AwesomeScrub::VERSION
9
9
  spec.authors = ['sanemat']
10
10
  spec.email = ['o.gata.ken@gmail.com']
11
- spec.summary = %q{Wrap String#scrub.}
12
- spec.description = %q{Support String#scrub preventing Invalid byte sequence in UTF-8.}
11
+ spec.summary = %q{Easy to use String#scrub.}
12
+ spec.description = %q{Wrap String#scrub preventing Invalid byte sequence in UTF-8.}
13
13
  spec.homepage = 'https://github.com/sanemat/awesome_scrub'
14
14
  spec.license = 'MIT'
15
15
 
@@ -18,10 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.required_ruby_version = '>= 2.0.0'
22
-
23
- spec.add_development_dependency 'bundler', '~> 1.5.0.rc'
21
+ spec.add_development_dependency 'bundler'
24
22
  spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'minitest', '> 4'
25
24
  # NOTE: Recommend, but if you implement `#scrub` yourself, no problem.
26
25
  #spec.add_dependency 'string-scrub' if RUBY_VERSION < '2.1'
27
26
  end
@@ -8,7 +8,13 @@ module AwesomeScrub
8
8
  module ClassMethods
9
9
  end
10
10
 
11
+ extend self
12
+
11
13
  def awesome_scrub(args)
12
14
  args.respond_to?(:scrub) ? args.scrub : args
13
15
  end
16
+
17
+ def awesome_scrub!(args)
18
+ args.respond_to?(:scrub!) ? args.scrub! : args
19
+ end
14
20
  end
@@ -1,3 +1,3 @@
1
1
  module AwesomeScrub
2
- VERSION = '0.0.1'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -0,0 +1,49 @@
1
+ require 'minitest/autorun'
2
+ require_relative '../lib/awesome_scrub'
3
+
4
+ module AwesomeScrub
5
+ class AwesomeScrubTest < Minitest::Test
6
+
7
+ class TestClassWithInstanceAwesomeScrubs
8
+ include AwesomeScrub
9
+ end
10
+
11
+ class TestClassWithClassAwesomeScrubs
12
+ extend AwesomeScrub
13
+ end
14
+
15
+ def setup
16
+ @instance_with_modules = TestClassWithInstanceAwesomeScrubs.new
17
+ end
18
+
19
+ def test_normal_string
20
+ [@instance_with_modules, TestClassWithClassAwesomeScrubs, AwesomeScrub].each do |awesome_scrub|
21
+ assert_equal('foo', awesome_scrub.awesome_scrub('foo'))
22
+ end
23
+ end
24
+
25
+ def test_bang_normal_string
26
+ [@instance_with_modules, TestClassWithClassAwesomeScrubs, AwesomeScrub].each do |awesome_scrub|
27
+ assert_equal('foo', awesome_scrub.awesome_scrub!('foo'))
28
+ end
29
+ end
30
+
31
+ def test_call_scrub
32
+ [@instance_with_modules, TestClassWithClassAwesomeScrubs, AwesomeScrub].each do |awesome_scrub|
33
+ mock = MiniTest::Mock.new
34
+ mock.expect(:scrub, 'woot')
35
+ awesome_scrub.awesome_scrub(mock)
36
+ assert mock.verify
37
+ end
38
+ end
39
+
40
+ def test_bang_call_scrub
41
+ [@instance_with_modules, TestClassWithClassAwesomeScrubs, AwesomeScrub].each do |awesome_scrub|
42
+ mock = MiniTest::Mock.new
43
+ mock.expect(:scrub!, 'woot')
44
+ awesome_scrub.awesome_scrub!(mock)
45
+ assert mock.verify
46
+ end
47
+ end
48
+ end
49
+ end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awesome_scrub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sanemat
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-14 00:00:00.000000000 Z
11
+ date: 2013-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.5.0.rc
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.5.0.rc
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,7 +38,21 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: Support String#scrub preventing Invalid byte sequence in UTF-8.
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>'
46
+ - !ruby/object:Gem::Version
47
+ version: '4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>'
53
+ - !ruby/object:Gem::Version
54
+ version: '4'
55
+ description: Wrap String#scrub preventing Invalid byte sequence in UTF-8.
42
56
  email:
43
57
  - o.gata.ken@gmail.com
44
58
  executables: []
@@ -46,6 +60,7 @@ extensions: []
46
60
  extra_rdoc_files: []
47
61
  files:
48
62
  - .gitignore
63
+ - .travis.yml
49
64
  - Gemfile
50
65
  - LICENSE.txt
51
66
  - README.md
@@ -53,6 +68,7 @@ files:
53
68
  - awesome_scrub.gemspec
54
69
  - lib/awesome_scrub.rb
55
70
  - lib/awesome_scrub/version.rb
71
+ - test/awesome_scrub_test.rb
56
72
  homepage: https://github.com/sanemat/awesome_scrub
57
73
  licenses:
58
74
  - MIT
@@ -65,7 +81,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
81
  requirements:
66
82
  - - '>='
67
83
  - !ruby/object:Gem::Version
68
- version: 2.0.0
84
+ version: '0'
69
85
  required_rubygems_version: !ruby/object:Gem::Requirement
70
86
  requirements:
71
87
  - - '>='
@@ -76,5 +92,6 @@ rubyforge_project:
76
92
  rubygems_version: 2.0.14
77
93
  signing_key:
78
94
  specification_version: 4
79
- summary: Wrap String#scrub.
80
- test_files: []
95
+ summary: Easy to use String#scrub.
96
+ test_files:
97
+ - test/awesome_scrub_test.rb