di 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (8) hide show
  1. data/.gitignore +17 -0
  2. data/HISTORY +4 -0
  3. data/LICENSE +1 -1
  4. data/README.rdoc +1 -1
  5. data/Rakefile +1 -62
  6. data/di.gemspec +20 -42
  7. data/lib/di.rb +24 -3
  8. metadata +28 -56
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/HISTORY CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.3.2 2013-01-09
2
+
3
+ * Do not choke on encoding errors when colorizing on Ruby 1.9+.
4
+
1
5
  == 0.3.1 2012-05-21
2
6
 
3
7
  * Resurrect -L which Subversion still relies on.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008, 2009, 2010, 2011, 2012 Akinori MUSHA
1
+ Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Akinori MUSHA
2
2
 
3
3
  All rights reserved.
4
4
 
@@ -72,6 +72,6 @@ Or just install lib/di.rb as "di" to a directory in your PATH.
72
72
 
73
73
  == COPYRIGHT:
74
74
 
75
- Copyright (c) 2008, 2009, 2010, 2011, 2012 Akinori MUSHA
75
+ Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Akinori MUSHA
76
76
 
77
77
  See LICENSE for license terms.
data/Rakefile CHANGED
@@ -1,62 +1 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- load 'lib/di.rb'
5
-
6
- begin
7
- require 'jeweler'
8
- Jeweler::Tasks.new do |gem|
9
- gem.name = "di"
10
- gem.summary = %Q{A wrapper around GNU diff(1)}
11
- gem.description = <<EOS
12
- The di(1) command wraps around GNU diff(1) to provide reasonable
13
- default settings and some original features.
14
- EOS
15
- gem.email = "knu@idaemons.org"
16
- gem.homepage = "https://github.com/knu/di"
17
- gem.authors = ["Akinori MUSHA"]
18
- gem.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
19
- gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
20
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
21
- gem.executables = ["di"]
22
-
23
- gem.version = MYVERSION
24
- end
25
- Jeweler::GemcutterTasks.new
26
- rescue LoadError
27
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
28
- end
29
-
30
- require 'rake/testtask'
31
- Rake::TestTask.new(:test) do |test|
32
- test.libs << 'lib' << 'test'
33
- test.pattern = 'test/**/test_*.rb'
34
- test.verbose = true
35
- end
36
-
37
- begin
38
- require 'rcov/rcovtask'
39
- Rcov::RcovTask.new do |test|
40
- test.libs << 'test'
41
- test.pattern = 'test/**/test_*.rb'
42
- test.verbose = true
43
- end
44
- rescue LoadError
45
- task :rcov do
46
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
47
- end
48
- end
49
-
50
- task :test => :check_dependencies
51
-
52
- task :default => :test
53
-
54
- require 'rake/rdoctask'
55
- Rake::RDocTask.new do |rdoc|
56
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
57
-
58
- rdoc.rdoc_dir = 'rdoc'
59
- rdoc.title = "di #{version}"
60
- rdoc.rdoc_files.include('README*')
61
- rdoc.rdoc_files.include('lib/**/*.rb')
62
- end
1
+ require "bundler/gem_tasks"
data/di.gemspec CHANGED
@@ -1,50 +1,28 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'di'
5
5
 
6
- Gem::Specification.new do |s|
7
- s.name = "di"
8
- s.version = "0.3.1"
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "di"
8
+ gem.version = MYVERSION
9
+ gem.authors = ["Akinori MUSHA"]
10
+ gem.email = ["knu@idaemons.org"]
11
+ gem.description = <<EOS
12
+ The di(1) command wraps around GNU diff(1) to provide reasonable
13
+ default settings and some original features.
14
+ EOS
15
+ gem.summary = %q{A wrapper around GNU diff(1)}
16
+ gem.homepage = "https://github.com/knu/di"
9
17
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Akinori MUSHA"]
12
- s.date = "2012-05-21"
13
- s.description = "The di(1) command wraps around GNU diff(1) to provide reasonable\ndefault settings and some original features.\n"
14
- s.email = "knu@idaemons.org"
15
- s.executables = ["di"]
16
- s.extra_rdoc_files = [
18
+ gem.files = `git ls-files`.split($/)
19
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
+ gem.extra_rdoc_files = [
17
22
  "LICENSE",
18
23
  "README.rdoc"
19
24
  ]
20
- s.files = [
21
- ".document",
22
- "HISTORY",
23
- "LICENSE",
24
- "README.rdoc",
25
- "Rakefile",
26
- "bin/di",
27
- "di.gemspec",
28
- "lib/di.rb",
29
- "test/helper.rb",
30
- "test/test_di.rb"
31
- ]
32
- s.homepage = "https://github.com/knu/di"
33
- s.require_paths = ["lib"]
34
- s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
35
- s.rubygems_version = "1.8.23"
36
- s.summary = "A wrapper around GNU diff(1)"
25
+ gem.require_paths = ["lib"]
37
26
 
38
- if s.respond_to? :specification_version then
39
- s.specification_version = 3
40
-
41
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
- s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
43
- else
44
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
45
- end
46
- else
47
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
48
- end
27
+ gem.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
49
28
  end
50
-
data/lib/di.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # di - a wrapper around GNU diff(1)
5
5
  #
6
- # Copyright (c) 2008, 2009, 2010, 2011, 2012 Akinori MUSHA
6
+ # Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Akinori MUSHA
7
7
  #
8
8
  # All rights reserved.
9
9
  #
@@ -28,9 +28,9 @@
28
28
  # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29
29
  # SUCH DAMAGE.
30
30
 
31
- MYVERSION = "0.3.1"
31
+ MYVERSION = "0.3.2"
32
32
  MYNAME = File.basename($0)
33
- MYCOPYRIGHT = "Copyright (c) 2008, 2009, 2010, 2011, 2012 Akinori MUSHA"
33
+ MYCOPYRIGHT = "Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Akinori MUSHA"
34
34
 
35
35
  DIFF_CMD = ENV.fetch('DIFF', 'diff')
36
36
  ENV_NAME = "#{MYNAME.tr('-a-z', '_A-Z')}_OPTIONS"
@@ -95,6 +95,8 @@ def setup
95
95
  :unchanged => "",
96
96
  :whitespace => "\e[41m",
97
97
  :off => "\e[m",
98
+ :open_inv => "\e[7m",
99
+ :close_inv => "\e[27m",
98
100
  }
99
101
  $diff.reversed = false
100
102
  end
@@ -705,6 +707,7 @@ def colorize_unified_diff(io)
705
707
  state = :comment
706
708
  hunk_left = nil
707
709
  io.each_line { |line|
710
+ replace_invalid_bytes!(line)
708
711
  case state
709
712
  when :comment
710
713
  case line
@@ -769,6 +772,7 @@ def colorize_context_diff(io)
769
772
  state = :comment
770
773
  hunk_part = nil
771
774
  io.each_line { |line|
775
+ replace_invalid_bytes!(line)
772
776
  case state
773
777
  when :comment
774
778
  case line
@@ -844,4 +848,21 @@ def colorize_context_diff(io)
844
848
  io.close
845
849
  end
846
850
 
851
+ def replace_invalid_bytes!(text)
852
+ colors = $diff.colors
853
+ text.replace(text.replace_invalid_bytes { |byte|
854
+ '%s<%02X>%s' % [colors[:open_inv], byte, colors[:close_inv]]
855
+ })
856
+ end
857
+
858
+ class String
859
+ def replace_invalid_bytes
860
+ return self if !defined?(Encoding) || valid_encoding?
861
+
862
+ each_char.inject('') { |s, c|
863
+ s << (c.valid_encoding? ? c : yield(*c.bytes))
864
+ }
865
+ end
866
+ end
867
+
847
868
  main(ARGV) if $0 == __FILE__
metadata CHANGED
@@ -1,50 +1,32 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: di
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 1
10
- version: 0.3.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Akinori MUSHA
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
12
+ date: 2013-01-09 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: ! 'The di(1) command wraps around GNU diff(1) to provide reasonable
17
15
 
18
- date: 2012-05-21 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: thoughtbot-shoulda
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
32
- type: :development
33
- version_requirements: *id001
34
- description: |
35
- The di(1) command wraps around GNU diff(1) to provide reasonable
36
16
  default settings and some original features.
37
17
 
38
- email: knu@idaemons.org
39
- executables:
18
+ '
19
+ email:
20
+ - knu@idaemons.org
21
+ executables:
40
22
  - di
41
23
  extensions: []
42
-
43
- extra_rdoc_files:
24
+ extra_rdoc_files:
44
25
  - LICENSE
45
26
  - README.rdoc
46
- files:
27
+ files:
47
28
  - .document
29
+ - .gitignore
48
30
  - HISTORY
49
31
  - LICENSE
50
32
  - README.rdoc
@@ -56,38 +38,28 @@ files:
56
38
  - test/test_di.rb
57
39
  homepage: https://github.com/knu/di
58
40
  licenses: []
59
-
60
41
  post_install_message:
61
42
  rdoc_options: []
62
-
63
- require_paths:
43
+ require_paths:
64
44
  - lib
65
- required_ruby_version: !ruby/object:Gem::Requirement
45
+ required_ruby_version: !ruby/object:Gem::Requirement
66
46
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 57
71
- segments:
72
- - 1
73
- - 8
74
- - 7
47
+ requirements:
48
+ - - ! '>='
49
+ - !ruby/object:Gem::Version
75
50
  version: 1.8.7
76
- required_rubygems_version: !ruby/object:Gem::Requirement
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
52
  none: false
78
- requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- hash: 3
82
- segments:
83
- - 0
84
- version: "0"
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
85
57
  requirements: []
86
-
87
58
  rubyforge_project:
88
- rubygems_version: 1.8.23
59
+ rubygems_version: 1.8.24
89
60
  signing_key:
90
61
  specification_version: 3
91
62
  summary: A wrapper around GNU diff(1)
92
- test_files: []
93
-
63
+ test_files:
64
+ - test/helper.rb
65
+ - test/test_di.rb