adamsalter-bad_encodings-ruby19 0.1.1 → 0.1.2

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/README.md ADDED
@@ -0,0 +1,47 @@
1
+ BadEncodings
2
+ ================
3
+
4
+ Small gem that tries to make the task of finding bad ruby encodings in your project a little easier. e.g. 'find_bad_encodings .'
5
+
6
+ It basically iterates over the regular 'ruby' files it can find and tries each line for 'valid_encoding' and then returns a list of all lines that failed.
7
+
8
+ Installation
9
+ =======
10
+
11
+ Install gem as normal
12
+
13
+ gem install adamsalter-bad_encodings-ruby19
14
+
15
+
16
+ Usage
17
+ -----
18
+
19
+ You can either use it as a binary:
20
+
21
+ ~/my_unencoded_dir/$ find_bad_encodings .
22
+ # => various wrongly encoded files.
23
+
24
+ or add it as a rake task to your (rails) project:
25
+
26
+ # put this in your project Rakefile
27
+ require 'bad_encodings/tasks'
28
+
29
+ ~/my_unencoded_project/$ rake find_bad_encodings
30
+
31
+
32
+
33
+ Known Bugs
34
+ ========
35
+
36
+ None. (well actually the detection of ruby encoding is pretty simple and probably not 100% accurate, certainly works for everything I've tried it on... patches welcome.)
37
+
38
+
39
+ Follow me on:
40
+ -------
41
+
42
+ > Twitter: [twitter.com/adamsalter](http://twitter.com/adamsalter)
43
+ > Github: [github.com/adamsalter](http://github.com/adamsalter)
44
+
45
+ Copyright (c) 2009 Adam @ [Codebright.net][cb], released under the MIT license
46
+
47
+ [cb]:http://codebright.net "http://codebright.net"
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 1
4
- :patch: 1
4
+ :patch: 2
@@ -5,20 +5,20 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bad_encodings-ruby19}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Adam Salter"]
12
- s.date = %q{2009-09-10}
12
+ s.date = %q{2009-09-11}
13
13
  s.default_executable = %q{find_bad_encodings}
14
14
  s.description = %q{Small gem that tries to make the task of finding bad ruby encodings in your project a little easier.}
15
15
  s.email = %q{adam@codebright.net}
16
16
  s.executables = ["find_bad_encodings"]
17
17
  s.extra_rdoc_files = [
18
- "README.rdoc"
18
+ "README.md"
19
19
  ]
20
20
  s.files = [
21
- "README.rdoc",
21
+ "README.md",
22
22
  "Rakefile",
23
23
  "VERSION.yml",
24
24
  "bad_encodings-ruby19.gemspec",
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "tasks/gemspec.rake",
29
29
  "test/bad_encodings/bad1.rb",
30
30
  "test/bad_encodings/bad2.rb",
31
+ "test/bad_encodings/bad3.rb",
31
32
  "test/bad_encodings/ok.rb",
32
33
  "test/bad_encodings/ok.yml",
33
34
  "test/bad_encodings_test.rb",
@@ -41,6 +42,7 @@ Gem::Specification.new do |s|
41
42
  s.test_files = [
42
43
  "test/bad_encodings/bad1.rb",
43
44
  "test/bad_encodings/bad2.rb",
45
+ "test/bad_encodings/bad3.rb",
44
46
  "test/bad_encodings/ok.rb",
45
47
  "test/bad_encodings_test.rb",
46
48
  "test/test_helper.rb"
data/lib/bad_encodings.rb CHANGED
@@ -16,7 +16,7 @@ class BadEncodings
16
16
  files << path
17
17
  end
18
18
  end
19
- find_lines_in_files(files)
19
+ find_lines_in_files(files.reverse)
20
20
  end
21
21
 
22
22
  def find_lines_in_files(files)
@@ -29,9 +29,16 @@ class BadEncodings
29
29
 
30
30
  def find_lines_in_file(file)
31
31
  bad_lines = []
32
- file_encoding = get_rb_file_encoding(file)
33
- file = File.open(file, "r:#{file_encoding}")
32
+ file = File.open(file, "r:US-ASCII")
34
33
  file.each_line do |line|
34
+ begin
35
+ if (file.lineno == 1 || file.lineno == 2) && line =~ /^#.*coding:\s([\w-]+)/
36
+ file.set_encoding($1)
37
+ end
38
+ rescue ArgumentError
39
+ # regex match will fail with 'invalid byte sequence in US-ASCII'
40
+ # if invalid byte sequence on first line of file
41
+ end
35
42
  next if line.valid_encoding?
36
43
  bad_lines << [file.path, file.lineno]
37
44
  end
@@ -0,0 +1,4 @@
1
+ # bad encoding lïne 1
2
+ # encoding: utf-8
3
+
4
+ # good encoding lïne 4
@@ -3,20 +3,19 @@ require File.dirname(__FILE__) + '/test_helper'
3
3
  class BadEncodingsTest < Test::Unit::TestCase
4
4
  context 'A file with bad encodings' do
5
5
  should 'fail' do
6
- bad_file = File.dirname(__FILE__) + '/bad_encodings/bad1.rb'
6
+ path = File.dirname(__FILE__)
7
+ bad_file = path + '/bad_encodings/bad1.rb'
7
8
  bad_lines = BadEncodings.find_lines_in_file(bad_file)
8
- assert_equal bad_lines.class, Array
9
- assert_equal bad_lines[0][1], 4
9
+ assert_equal bad_lines, [[path+"/bad_encodings/bad1.rb", 4]]
10
10
  end
11
11
  end
12
12
 
13
13
  context 'A path with bad encodings' do
14
14
  should 'fail' do
15
- bad_lines = BadEncodings.find_lines_in_path(File.dirname(__FILE__))
16
- assert_equal bad_lines.class, Array
17
- assert_equal bad_lines[0][1], 1
18
- assert_equal bad_lines[1][1], 3
19
- assert_equal bad_lines[2][1], 4
15
+ path = File.dirname(__FILE__)
16
+ bad_lines = BadEncodings.find_lines_in_path(path)
17
+ puts bad_lines.inspect
18
+ assert_equal bad_lines, [[path+"/bad_encodings/bad1.rb", 4], [path+"/bad_encodings/bad2.rb", 1], [path+"/bad_encodings/bad2.rb", 3], [path+"/bad_encodings/bad3.rb", 1]]
20
19
  end
21
20
  end
22
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adamsalter-bad_encodings-ruby19
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Salter
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-10 00:00:00 -07:00
12
+ date: 2009-09-11 00:00:00 -07:00
13
13
  default_executable: find_bad_encodings
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -39,9 +39,9 @@ executables:
39
39
  extensions: []
40
40
 
41
41
  extra_rdoc_files:
42
- - README.rdoc
42
+ - README.md
43
43
  files:
44
- - README.rdoc
44
+ - README.md
45
45
  - Rakefile
46
46
  - VERSION.yml
47
47
  - bad_encodings-ruby19.gemspec
@@ -51,6 +51,7 @@ files:
51
51
  - tasks/gemspec.rake
52
52
  - test/bad_encodings/bad1.rb
53
53
  - test/bad_encodings/bad2.rb
54
+ - test/bad_encodings/bad3.rb
54
55
  - test/bad_encodings/ok.rb
55
56
  - test/bad_encodings/ok.yml
56
57
  - test/bad_encodings_test.rb
@@ -84,6 +85,7 @@ summary: Small gem that tries to make the task of finding bad ruby encodings in
84
85
  test_files:
85
86
  - test/bad_encodings/bad1.rb
86
87
  - test/bad_encodings/bad2.rb
88
+ - test/bad_encodings/bad3.rb
87
89
  - test/bad_encodings/ok.rb
88
90
  - test/bad_encodings_test.rb
89
91
  - test/test_helper.rb
data/README.rdoc DELETED
@@ -1,5 +0,0 @@
1
- = BadEncodings
2
-
3
- http://github.com/adamsalter/bad_encodings-ruby19/tree/master
4
-
5
- Small gem that tries to make the task of finding bad ruby encodings in your project a little easier. 'find_bad_encodings .'