eightball 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NzI0NTNmOGFjZGJjYTMyNzRmMTExOTZlYjFhOWVlYzMwNzhjZGZiMg==
5
+ data.tar.gz: !binary |-
6
+ YjNhZGI4M2Y4N2ZkZDM5NDVhZDFjNzgzZGY4YjI4Mzc3NWI2NmY5MA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZjY0OTY4MzdlMDA1ZDRjMWYzNmNjMTgwZTJkYTYzMWZlMzkyM2RhNzlkMDU4
10
+ YjU3MWQ5YzBjNGM3ZGNkOTE1ZWJjNmExOTY4MWNhNzc4NGQ0MzBkNGEzMjg4
11
+ YmYyODg1YjViNDJlYTM2OWIyZmE1ZDE2ZWExMjU3MjIxNDc5NGE=
12
+ data.tar.gz: !binary |-
13
+ OWM4MmNjMjdmOWMyN2E2MDA3YTVhYjgzYjM4ZmI2ZTJjMjdiNDdlNWE1YWZj
14
+ ZmYwYmQzMTJlMjJjMjhhNTc1MDNkZGNkZWM4YzU5ZTY4MmU0NGVjMTE5ZWVk
15
+ NTc5NzlkMGQxNDE3ZDEzYWI3OGJkOTAwMWZjZjY2ZDliZGRhYTE=
data/Gemfile CHANGED
@@ -6,8 +6,9 @@ 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 "shoulda", ">= 0"
9
+ gem "shoulda", "~> 0"
10
10
  gem "bundler", "~> 1.0.0"
11
11
  gem "jeweler", "~> 1.6.4"
12
- gem "rcov", ">= 0"
12
+ gem "rcov", "~> 0"
13
+ gem "pry"
13
14
  end
data/Gemfile.lock CHANGED
@@ -1,20 +1,28 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ coderay (1.0.9)
4
5
  git (1.2.5)
5
6
  jeweler (1.6.4)
6
7
  bundler (~> 1.0)
7
8
  git (>= 1.2.5)
8
9
  rake
10
+ method_source (0.8.1)
11
+ pry (0.9.12.2)
12
+ coderay (~> 1.0.5)
13
+ method_source (~> 0.8)
14
+ slop (~> 3.4)
9
15
  rake (0.9.2.2)
10
16
  rcov (0.9.11)
11
17
  shoulda (2.11.3)
18
+ slop (3.4.5)
12
19
 
13
20
  PLATFORMS
14
21
  ruby
15
22
 
16
23
  DEPENDENCIES
17
- bundler (~> 1.0.0)
24
+ bundler (>= 1.0.0)
18
25
  jeweler (~> 1.6.4)
26
+ pry
19
27
  rcov
20
28
  shoulda
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 AcademicWorks, inc.
1
+ Copyright (c) 2013 AcademicWorks, inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -1,10 +1,10 @@
1
1
  = eightball
2
2
 
3
3
  call "string".eightball and get back a legit UTF-8 string
4
- This has only been tested with ruby 1.9.2
4
+ This has only been tested with ruby 1.9.3
5
5
 
6
6
  == Contributing to eightball
7
-
7
+
8
8
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
9
9
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
10
10
  * Fork the project
@@ -15,6 +15,6 @@ This has only been tested with ruby 1.9.2
15
15
 
16
16
  == Copyright
17
17
 
18
- Copyright (c) 2011 AcademicWorks, inc. See LICENSE.txt for
18
+ Copyright (c) 2013 AcademicWorks, inc. See LICENSE.txt for
19
19
  further details.
20
20
 
data/Rakefile CHANGED
@@ -15,12 +15,12 @@ require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
17
  gem.name = "eightball"
18
- gem.homepage = "http://github.com/ascruggs/eightball"
18
+ gem.homepage = "http://github.com/AcademicWorks/eightball"
19
19
  gem.license = "MIT"
20
20
  gem.summary = %Q{force a string to utf8 and be sure of it}
21
21
  gem.description = %Q{force a string to utf8 and be sure of it}
22
- gem.email = "ascruggs@academicworks.com"
23
- gem.authors = ["Aaron Scruggs"]
22
+ gem.email = "engineering@academicworks.com"
23
+ gem.authors = ["Aaron Scruggs", "Chris Botarro", "Matthew Thomas"]
24
24
  # dependencies defined in Gemfile
25
25
  end
26
26
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.2.0
data/eightball.gemspec CHANGED
@@ -5,13 +5,13 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "eightball"
8
- s.version = "0.1.3"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Aaron Scruggs"]
12
- s.date = "2012-03-02"
11
+ s.authors = ["Aaron Scruggs", "Chris Botarro", "Matthew Thomas"]
12
+ s.date = "2013-12-31"
13
13
  s.description = "force a string to utf8 and be sure of it"
14
- s.email = "ascruggs@academicworks.com"
14
+ s.email = "engineering@academicworks.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
17
  "README.rdoc"
@@ -26,13 +26,14 @@ Gem::Specification.new do |s|
26
26
  "VERSION",
27
27
  "eightball.gemspec",
28
28
  "lib/eightball.rb",
29
+ "test/files/test1",
29
30
  "test/helper.rb",
30
31
  "test/test_eightball.rb"
31
32
  ]
32
- s.homepage = "http://github.com/ascruggs/eightball"
33
+ s.homepage = "http://github.com/AcademicWorks/eightball"
33
34
  s.licenses = ["MIT"]
34
35
  s.require_paths = ["lib"]
35
- s.rubygems_version = "1.8.17"
36
+ s.rubygems_version = "1.8.23"
36
37
  s.summary = "force a string to utf8 and be sure of it"
37
38
 
38
39
  if s.respond_to? :specification_version then
@@ -40,20 +41,23 @@ Gem::Specification.new do |s|
40
41
 
41
42
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
43
  s.add_development_dependency(%q<shoulda>, [">= 0"])
43
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
44
+ s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
44
45
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
45
46
  s.add_development_dependency(%q<rcov>, [">= 0"])
47
+ s.add_development_dependency(%q<pry>, [">= 0"])
46
48
  else
47
49
  s.add_dependency(%q<shoulda>, [">= 0"])
48
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
50
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
49
51
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
50
52
  s.add_dependency(%q<rcov>, [">= 0"])
53
+ s.add_dependency(%q<pry>, [">= 0"])
51
54
  end
52
55
  else
53
56
  s.add_dependency(%q<shoulda>, [">= 0"])
54
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
57
+ s.add_dependency(%q<bundler>, [">= 1.0.0"])
55
58
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
56
59
  s.add_dependency(%q<rcov>, [">= 0"])
60
+ s.add_dependency(%q<pry>, [">= 0"])
57
61
  end
58
62
  end
59
63
 
data/lib/eightball.rb CHANGED
@@ -1,22 +1,29 @@
1
- require 'iconv'
2
1
  module Eightball
3
2
 
4
- def eightball
5
- string = self.encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace)
6
- begin
7
- string.empty?
8
- rescue ArgumentError => e
9
- if e.message == "invalid byte sequence in UTF-8"
10
- Thread.current["iconv"] ||= Iconv.new('UTF-8//IGNORE', 'UTF-8')
11
- string = Thread.current["iconv"].iconv(string)
12
- else
13
- raise
14
- end
15
- end
16
- #drop the BOM
17
- string.force_encoding("UTF-8").gsub("\xEF\xBB\xBF".force_encoding("UTF-8"), '')
18
- end
3
+ def eightball
4
+ string = self
5
+ string = string.force_encoding(Encoding::UTF_8) if not_utf8?
6
+ string = reencode(string)
7
+ string = drop_bom(string)
8
+ string
9
+ end
10
+
11
+ private
12
+
13
+ def not_utf8?
14
+ !self.valid_encoding? || self.encoding != Encoding::UTF_8
15
+ end
16
+
17
+ def reencode(string)
18
+ string = string.encode(Encoding::UTF_16, :invalid => :replace, :undef => :replace, :replace => '?')
19
+ string = string.encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace, :replace => '?')
20
+ string
21
+ end
22
+
23
+ def drop_bom(string)
24
+ string.sub(/^\xEF\xBB\xBF/, '')
25
+ end
19
26
 
20
27
  end
21
28
 
22
- String.send(:include, Eightball)
29
+ String.send(:include, Eightball)
data/test/files/test1 ADDED
@@ -0,0 +1 @@
1
+ R. M. Princ Scholarship","Rose Marie Moline Princ, a native of the Chicago area, graduated from St. Mary�s High School and Rosary College with a degree in history, political science and English. She continued her studies at Loyola, De Paul and Northwestern and earned advanced degrees at the University of Chicago and Northern Illinois University. She taught at Nazareth Academy for seven years and at J. Sterling Morton High School in Cicero-Berwyn for twenty-seven years, where she also served as an administrator for fourteen years. Upon retiring, she joined the Illinois Retired Teachers Association and served on the Executive Board, as well as Treasurer and President of her local chapter. She now resides in Las Vegas, Nevada, where she is active in numerous organizations.",TRUE
data/test/helper.rb CHANGED
@@ -9,6 +9,7 @@ rescue Bundler::BundlerError => e
9
9
  end
10
10
  require 'test/unit'
11
11
  require 'shoulda'
12
+ require "pry"
12
13
 
13
14
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
15
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -3,8 +3,17 @@
3
3
  require 'helper'
4
4
 
5
5
  class TestEightball < Test::Unit::TestCase
6
+
6
7
  should "return utf-8 when utf-8 is called" do
7
8
  assert_equal "ウabcé", "ウabcé".encode("utf-8")
8
9
  end
10
+
11
+ should "remove invalid UTF-8 byte sequences" do
12
+ string = File.read("test/files/test1")
13
+ assert Eightball::Helpers.needs_help?(string)
14
+ string = string.eightball
15
+ assert !string.empty?
16
+ assert !Eightball::Helpers.needs_help?(string)
17
+ end
9
18
 
10
19
  end
metadata CHANGED
@@ -1,62 +1,89 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eightball
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Aaron Scruggs
8
+ - Chris Botarro
9
+ - Matthew Thomas
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2012-03-02 00:00:00.000000000 Z
13
+ date: 2013-12-31 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: shoulda
16
- requirement: &70113890773960 !ruby/object:Gem::Requirement
17
- none: false
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70113890773960
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ! '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
25
29
  - !ruby/object:Gem::Dependency
26
30
  name: bundler
27
- requirement: &70113890773200 !ruby/object:Gem::Requirement
28
- none: false
31
+ requirement: !ruby/object:Gem::Requirement
29
32
  requirements:
30
- - - ~>
33
+ - - ! '>='
31
34
  - !ruby/object:Gem::Version
32
35
  version: 1.0.0
33
36
  type: :development
34
37
  prerelease: false
35
- version_requirements: *70113890773200
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ! '>='
41
+ - !ruby/object:Gem::Version
42
+ version: 1.0.0
36
43
  - !ruby/object:Gem::Dependency
37
44
  name: jeweler
38
- requirement: &70113890772700 !ruby/object:Gem::Requirement
39
- none: false
45
+ requirement: !ruby/object:Gem::Requirement
40
46
  requirements:
41
47
  - - ~>
42
48
  - !ruby/object:Gem::Version
43
49
  version: 1.6.4
44
50
  type: :development
45
51
  prerelease: false
46
- version_requirements: *70113890772700
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: 1.6.4
47
57
  - !ruby/object:Gem::Dependency
48
58
  name: rcov
49
- requirement: &70113890772220 !ruby/object:Gem::Requirement
50
- none: false
59
+ requirement: !ruby/object:Gem::Requirement
51
60
  requirements:
52
61
  - - ! '>='
53
62
  - !ruby/object:Gem::Version
54
63
  version: '0'
55
64
  type: :development
56
65
  prerelease: false
57
- version_requirements: *70113890772220
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: pry
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
58
85
  description: force a string to utf8 and be sure of it
59
- email: ascruggs@academicworks.com
86
+ email: engineering@academicworks.com
60
87
  executables: []
61
88
  extensions: []
62
89
  extra_rdoc_files:
@@ -72,33 +99,30 @@ files:
72
99
  - VERSION
73
100
  - eightball.gemspec
74
101
  - lib/eightball.rb
102
+ - test/files/test1
75
103
  - test/helper.rb
76
104
  - test/test_eightball.rb
77
- homepage: http://github.com/ascruggs/eightball
105
+ homepage: http://github.com/AcademicWorks/eightball
78
106
  licenses:
79
107
  - MIT
108
+ metadata: {}
80
109
  post_install_message:
81
110
  rdoc_options: []
82
111
  require_paths:
83
112
  - lib
84
113
  required_ruby_version: !ruby/object:Gem::Requirement
85
- none: false
86
114
  requirements:
87
115
  - - ! '>='
88
116
  - !ruby/object:Gem::Version
89
117
  version: '0'
90
- segments:
91
- - 0
92
- hash: 2475021504432103746
93
118
  required_rubygems_version: !ruby/object:Gem::Requirement
94
- none: false
95
119
  requirements:
96
120
  - - ! '>='
97
121
  - !ruby/object:Gem::Version
98
122
  version: '0'
99
123
  requirements: []
100
124
  rubyforge_project:
101
- rubygems_version: 1.8.17
125
+ rubygems_version: 2.2.0
102
126
  signing_key:
103
127
  specification_version: 3
104
128
  summary: force a string to utf8 and be sure of it