docdiff 0.6.5 → 0.6.6

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +7 -7
  3. data/Guardfile +4 -4
  4. data/Makefile +1 -1
  5. data/Rakefile +6 -6
  6. data/bin/docdiff +1 -1
  7. data/devutil/Rakefile +12 -5
  8. data/devutil/char_by_charclass.rb +43 -20
  9. data/devutil/charclass_by_char.rb +40 -19
  10. data/devutil/jis0208.rb +263 -231
  11. data/devutil/jis0208_test.rb +196 -0
  12. data/doc/news.md +8 -0
  13. data/docdiff.gemspec +12 -10
  14. data/lib/doc_diff.rb +59 -60
  15. data/lib/docdiff/charstring.rb +225 -241
  16. data/lib/docdiff/cli.rb +285 -250
  17. data/lib/docdiff/diff/contours.rb +1 -1
  18. data/lib/docdiff/diff/editscript.rb +1 -1
  19. data/lib/docdiff/diff/rcsdiff.rb +1 -1
  20. data/lib/docdiff/diff/shortestpath.rb +1 -1
  21. data/lib/docdiff/diff/speculative.rb +1 -1
  22. data/lib/docdiff/diff/subsequence.rb +1 -1
  23. data/lib/docdiff/diff/unidiff.rb +1 -1
  24. data/lib/docdiff/diff.rb +1 -1
  25. data/lib/docdiff/difference.rb +71 -70
  26. data/lib/docdiff/document.rb +129 -109
  27. data/lib/docdiff/encoding/en_ascii.rb +64 -58
  28. data/lib/docdiff/encoding/ja_eucjp.rb +250 -235
  29. data/lib/docdiff/encoding/ja_sjis.rb +240 -226
  30. data/lib/docdiff/encoding/ja_utf8.rb +6952 -6939
  31. data/lib/docdiff/version.rb +1 -1
  32. data/lib/docdiff/view.rb +522 -438
  33. data/lib/docdiff.rb +2 -2
  34. data/test/charstring_test.rb +475 -351
  35. data/test/cli_test.rb +103 -101
  36. data/test/diff_test.rb +15 -16
  37. data/test/difference_test.rb +40 -31
  38. data/test/docdiff_test.rb +162 -136
  39. data/test/document_test.rb +280 -175
  40. data/test/test_helper.rb +2 -1
  41. data/test/view_test.rb +636 -497
  42. metadata +8 -8
  43. data/devutil/testjis0208.rb +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e6c9449dff2946f72c9da89b1a9cd443ea999368160f1712e6da7c56dc2a094f
4
- data.tar.gz: 67b4fbff27a464b6605e1a7b255c5de811a1fbdba86c9049f8b4adce8a7159f2
3
+ metadata.gz: 610b5b95840b0bc6c176dca519ba0b29f9da90a443f6e84026cded3619154d75
4
+ data.tar.gz: bd0ea4e230932dadc8bdf6ab4ecb112b56e1594111ebae3903b03c88bcd68394
5
5
  SHA512:
6
- metadata.gz: 6ee7f1e478639c73fe75bfe642e37912cbbb9df3bf7a13c287c932440e6c3fed68c99340c06e1411302f0afcadaefbabf442e1b229457d9615fe77a367f62682
7
- data.tar.gz: f62327185b55508a7a1045e1f479c1e1a79998c005aeede62f759743bd013f6e1b11bbd69343083c38f7587cf29aa069a3a9808b49c78eaae8d71756a4e7f747
6
+ metadata.gz: 6b281546af7612221702b0579ce26e99504ed76d5198c2894cff6c85371529b48bc3140acce1297f5191b0e3321f5c31a7aa3b222ed100941e1161856d08d521
7
+ data.tar.gz: aa76e99c2d89826abccf7dbbe64d3979d51389e87c79d491d309dc3589f096b0fdde16c84d0b840f6637dc21dac24bf52b3c9b6b68b6f774bf142db392506eb9
data/Gemfile CHANGED
@@ -1,16 +1,16 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  group :darwin do
4
- gem 'rb-fsevent'
5
- gem 'growl'
4
+ gem "rb-fsevent"
5
+ gem "growl"
6
6
  end
7
7
 
8
- gem 'guard'
9
- gem 'guard-test'
8
+ gem "guard"
9
+ gem "guard-test"
10
10
 
11
11
  group :test do
12
- gem 'simplecov', :require => false, :platforms => :ruby_19
13
- gem 'rcov', :require => false, :platforms => :ruby_18
12
+ gem "simplecov", require: false, platforms: :ruby_19
13
+ gem "rcov", require: false, platforms: :ruby_18
14
14
  end
15
15
 
16
16
  # Specify your gem's dependencies in docdiff.gemspec
data/Guardfile CHANGED
@@ -1,8 +1,8 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard 'test', :all_on_start => true do
5
- watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
6
- watch(%r{^test/.+_test\.rb$})
7
- watch('test/test_helper.rb') { "test" }
4
+ guard "test", all_on_start: true do
5
+ watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
6
+ watch(%r{^test/.+_test\.rb$})
7
+ watch("test/test_helper.rb") { "test" }
8
8
  end
data/Makefile CHANGED
@@ -14,7 +14,7 @@ DESTDIR =
14
14
  PREFIX = /usr/local
15
15
  datadir = $(DESTDIR)$(PREFIX)/share
16
16
 
17
- all: test
17
+ all: test docs dist gem
18
18
 
19
19
  test: $(TESTS)
20
20
  $(RUBY) -I./lib -e 'ARGV.map{|a| require_relative "#{a}"}' $^
data/Rakefile CHANGED
@@ -1,12 +1,12 @@
1
- require 'rake/clean'
2
- require 'rake/testtask'
3
- require 'bundler/gem_tasks'
1
+ require "rake/clean"
2
+ require "rake/testtask"
3
+ require "bundler/gem_tasks"
4
4
 
5
- ENV['SOURCE_DATE_EPOCH'] ||= `git show --quiet --format=%ct HEAD`
5
+ ENV["SOURCE_DATE_EPOCH"] ||= `git show --quiet --format=%ct HEAD`
6
6
 
7
7
  Rake::TestTask.new do |t|
8
- t.test_files = FileList['test/*_test.rb']
8
+ t.test_files = FileList["test/*_test.rb"]
9
9
  t.verbose = true
10
10
  end
11
11
 
12
- task :default => :test
12
+ task default: :test
data/bin/docdiff CHANGED
@@ -2,6 +2,6 @@
2
2
  # DocDiff: word/character-oriented text comparison utility
3
3
  # Copyright (C) 2002-2011 Hisashi MORITA
4
4
  # Requirements: Ruby (>= 2.0)
5
- require 'docdiff'
5
+ require "docdiff"
6
6
 
7
7
  DocDiff::CLI.run
data/devutil/Rakefile CHANGED
@@ -1,9 +1,16 @@
1
- require 'rake/clean'
1
+ # frozen_string_literal: true
2
2
 
3
- file 'JIS0208.TXT' do |t|
4
- sh 'curl -O ftp://ftp.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT'
3
+ require "rake/clean"
4
+
5
+ file "JIS0208.TXT" do
6
+ sh "curl -O ftp://ftp.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT"
7
+ end
8
+
9
+ desc "Run unit test"
10
+ task :check => "jis0208_test.rb" do |t|
11
+ sh "ruby #{t.source}"
5
12
  end
6
13
 
7
- task :default => 'JIS0208.TXT'
14
+ task default: :check
8
15
 
9
- CLOBBER.include('JIS0208.TXT')
16
+ CLOBBER.include("JIS0208.TXT")
@@ -1,23 +1,46 @@
1
- #!/usr/bin/ruby
2
- # test character classes on ASCII characters.
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # Categorize ASCII characters by character classes
3
5
  # 2003-03-10 Hisashi MORITA
4
6
 
5
- charclasses = ["[:cntrl:]",
6
- "[:space:]", "[:blank:]",
7
- "[:digit:]",
8
- "[:alpha:]", "[:alnum:]",
9
- "[:punct:]",
10
- "[:lower:]", "[:upper:]",
11
- "[:print:]", "[:graph:]",
12
- "[:xdigit:]"]
13
- chars = (0x00 .. 0xff).to_a
7
+ charclasses = [
8
+ "[:cntrl:]",
9
+ "[:space:]",
10
+ "[:blank:]",
11
+ "[:digit:]",
12
+ "[:alpha:]",
13
+ "[:alnum:]",
14
+ "[:punct:]",
15
+ "[:lower:]",
16
+ "[:upper:]",
17
+ "[:print:]",
18
+ "[:graph:]",
19
+ "[:xdigit:]",
20
+ ]
21
+
22
+ chars = (0x00..0xff).to_a
23
+
24
+ result =
25
+ charclasses.map do |charclass|
26
+ charclass_re = /[#{charclass}]/
27
+ member_chars =
28
+ chars.reduce([]) do |acc, char|
29
+ if charclass_re.match([char].pack("C*"))
30
+ acc << char
31
+ else
32
+ acc
33
+ end
34
+ end
35
+ member_chars_in_hex =
36
+ member_chars.map { |char| format("\\x%02x", char) }.join
37
+ member_chars_packed =
38
+ member_chars.map { |char| [char].pack("C*").inspect[1..-2] }.join
39
+
40
+ <<~EOS
41
+ #{charclass}\t#{member_chars_in_hex}
42
+ \t\t(#{member_chars_packed})
43
+ EOS
44
+ end
14
45
 
15
- charclasses.each{|charclass|
16
- member_chars = []
17
- chars.each{|char|
18
- if Regexp.new("[#{charclass}]") =~ char.to_a.pack("C*")
19
- member_chars.push char
20
- end
21
- }
22
- puts "#{charclass}\t#{member_chars.collect{|char|sprintf("\\x%02x", char)}.join}\n\t\t(#{member_chars.collect{|char|char.to_a.pack('C*').inspect[1..-2]}.join})"
23
- }
46
+ puts result
@@ -1,21 +1,42 @@
1
- #!/usr/bin/ruby
2
- # test character classes on ASCII characters.
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # List ASCII characters with matching character classes
3
5
  # 2003-03-10 Hisashi MORITA
4
6
 
5
- charclasses = ["[:cntrl:]",
6
- "[:space:]", "[:blank:]",
7
- "[:digit:]",
8
- "[:alpha:]", "[:alnum:]",
9
- "[:punct:]",
10
- "[:lower:]", "[:upper:]",
11
- "[:print:]", "[:graph:]",
12
- "[:xdigit:]"]
13
- (0x00 .. 0xff).to_a.each{|char|
14
- attribute = []
15
- charclasses.each{|charclass|
16
- if Regexp.new("[#{charclass}]") =~ char.to_a.pack("C*")
17
- attribute.push charclass
18
- end
19
- }
20
- puts "#{sprintf("\\x%02x", char)} (#{char.to_a.pack('C*').inspect})\t#{attribute.join(', ')}"
21
- }
7
+ charclasses = [
8
+ "[:cntrl:]",
9
+ "[:space:]",
10
+ "[:blank:]",
11
+ "[:digit:]",
12
+ "[:alpha:]",
13
+ "[:alnum:]",
14
+ "[:punct:]",
15
+ "[:lower:]",
16
+ "[:upper:]",
17
+ "[:print:]",
18
+ "[:graph:]",
19
+ "[:xdigit:]",
20
+ ]
21
+
22
+ chars = (0x00..0xff).to_a
23
+
24
+ result =
25
+ chars.map do |char|
26
+ char_packed = [char].pack("C*")
27
+ attribute =
28
+ charclasses.reduce([]) do |acc, charclass|
29
+ if /[#{charclass}]/.match(char_packed)
30
+ acc << charclass
31
+ else
32
+ acc
33
+ end
34
+ end
35
+ hex = format("\\x%02x", char)
36
+ packed_string = [char].pack("C*").inspect
37
+ attributes = attribute.join(", ")
38
+
39
+ "#{hex} (#{packed_string})\t#{attributes}"
40
+ end
41
+
42
+ puts result