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.
- checksums.yaml +4 -4
- data/Gemfile +7 -7
- data/Guardfile +4 -4
- data/Makefile +1 -1
- data/Rakefile +6 -6
- data/bin/docdiff +1 -1
- data/devutil/Rakefile +12 -5
- data/devutil/char_by_charclass.rb +43 -20
- data/devutil/charclass_by_char.rb +40 -19
- data/devutil/jis0208.rb +263 -231
- data/devutil/jis0208_test.rb +196 -0
- data/doc/news.md +8 -0
- data/docdiff.gemspec +12 -10
- data/lib/doc_diff.rb +59 -60
- data/lib/docdiff/charstring.rb +225 -241
- data/lib/docdiff/cli.rb +285 -250
- data/lib/docdiff/diff/contours.rb +1 -1
- data/lib/docdiff/diff/editscript.rb +1 -1
- data/lib/docdiff/diff/rcsdiff.rb +1 -1
- data/lib/docdiff/diff/shortestpath.rb +1 -1
- data/lib/docdiff/diff/speculative.rb +1 -1
- data/lib/docdiff/diff/subsequence.rb +1 -1
- data/lib/docdiff/diff/unidiff.rb +1 -1
- data/lib/docdiff/diff.rb +1 -1
- data/lib/docdiff/difference.rb +71 -70
- data/lib/docdiff/document.rb +129 -109
- data/lib/docdiff/encoding/en_ascii.rb +64 -58
- data/lib/docdiff/encoding/ja_eucjp.rb +250 -235
- data/lib/docdiff/encoding/ja_sjis.rb +240 -226
- data/lib/docdiff/encoding/ja_utf8.rb +6952 -6939
- data/lib/docdiff/version.rb +1 -1
- data/lib/docdiff/view.rb +522 -438
- data/lib/docdiff.rb +2 -2
- data/test/charstring_test.rb +475 -351
- data/test/cli_test.rb +103 -101
- data/test/diff_test.rb +15 -16
- data/test/difference_test.rb +40 -31
- data/test/docdiff_test.rb +162 -136
- data/test/document_test.rb +280 -175
- data/test/test_helper.rb +2 -1
- data/test/view_test.rb +636 -497
- metadata +8 -8
- data/devutil/testjis0208.rb +0 -38
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 610b5b95840b0bc6c176dca519ba0b29f9da90a443f6e84026cded3619154d75
|
|
4
|
+
data.tar.gz: bd0ea4e230932dadc8bdf6ab4ecb112b56e1594111ebae3903b03c88bcd68394
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6b281546af7612221702b0579ce26e99504ed76d5198c2894cff6c85371529b48bc3140acce1297f5191b0e3321f5c31a7aa3b222ed100941e1161856d08d521
|
|
7
|
+
data.tar.gz: aa76e99c2d89826abccf7dbbe64d3979d51389e87c79d491d309dc3589f096b0fdde16c84d0b840f6637dc21dac24bf52b3c9b6b68b6f774bf142db392506eb9
|
data/Gemfile
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
source
|
|
1
|
+
source "https://rubygems.org"
|
|
2
2
|
|
|
3
3
|
group :darwin do
|
|
4
|
-
gem
|
|
5
|
-
gem
|
|
4
|
+
gem "rb-fsevent"
|
|
5
|
+
gem "growl"
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
gem
|
|
9
|
-
gem
|
|
8
|
+
gem "guard"
|
|
9
|
+
gem "guard-test"
|
|
10
10
|
|
|
11
11
|
group :test do
|
|
12
|
-
gem
|
|
13
|
-
gem
|
|
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
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
data/Rakefile
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
1
|
+
require "rake/clean"
|
|
2
|
+
require "rake/testtask"
|
|
3
|
+
require "bundler/gem_tasks"
|
|
4
4
|
|
|
5
|
-
ENV[
|
|
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[
|
|
8
|
+
t.test_files = FileList["test/*_test.rb"]
|
|
9
9
|
t.verbose = true
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
task :
|
|
12
|
+
task default: :test
|
data/bin/docdiff
CHANGED
data/devutil/Rakefile
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
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 :
|
|
14
|
+
task default: :check
|
|
8
15
|
|
|
9
|
-
CLOBBER.include(
|
|
16
|
+
CLOBBER.include("JIS0208.TXT")
|
|
@@ -1,23 +1,46 @@
|
|
|
1
|
-
#!/usr/bin/ruby
|
|
2
|
-
#
|
|
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 = [
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
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 = [
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|