jisx0208 0.1.0
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 +7 -0
- data/.rubocop.yml +19 -0
- data/LICENSE +21 -0
- data/README.md +31 -0
- data/Rakefile +12 -0
- data/data/JIS0208.TXT +6942 -0
- data/lib/jisx0208/processor.rb +42 -0
- data/lib/jisx0208/version.rb +5 -0
- data/lib/jisx0208.rb +24 -0
- data/sig/jisx0208.rbs +4 -0
- metadata +54 -0
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module JISX0208
|
4
|
+
class Processor
|
5
|
+
def initialize
|
6
|
+
# https://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/JIS/JIS0208.TXT
|
7
|
+
file_path = File.join(File.dirname(__FILE__), "..", "..", "data", "JIS0208.TXT")
|
8
|
+
file = File.open(file_path)
|
9
|
+
|
10
|
+
mappings = file.each_line.with_object([]) do |line, arr|
|
11
|
+
next if line.start_with?("#")
|
12
|
+
|
13
|
+
_sjis, _, unicode, _others = line.split(" ")
|
14
|
+
arr << { jisx: unicode.to_i(16) }
|
15
|
+
end
|
16
|
+
|
17
|
+
# see http://ash.jp/code/unitbl21.htm
|
18
|
+
@first_level_ranges = collect_unicode_set(mappings, 0x3021, 0x4F53)
|
19
|
+
@second_level_ranges = collect_unicode_set(mappings, 0x5021, 0x7426)
|
20
|
+
end
|
21
|
+
|
22
|
+
def contains_first_level_kanji?(string)
|
23
|
+
string.each_char.any? { |char| @first_level_ranges.include?(char.ord) }
|
24
|
+
end
|
25
|
+
|
26
|
+
def contains_seconde_level_kanji?(string)
|
27
|
+
string.each_char.any? { |char| @second_level_ranges.include?(char.ord) }
|
28
|
+
end
|
29
|
+
|
30
|
+
def contains_jisx0208_kanji?(string)
|
31
|
+
contains_first_level_kanji?(string) || contains_seconde_level_kanji?(string)
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def collect_unicode_set(mappings, jisx_start, jisx_end)
|
37
|
+
mappings.map do |unicode_value|
|
38
|
+
unicode_value[:jisx] if unicode_value[:jisx].between?(jisx_start, jisx_end)
|
39
|
+
end.compact.to_set
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/jisx0208.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "jisx0208/version"
|
4
|
+
require_relative "jisx0208/processor"
|
5
|
+
|
6
|
+
module JISX0208
|
7
|
+
class Code
|
8
|
+
def initialize
|
9
|
+
@processor = Processor.new
|
10
|
+
end
|
11
|
+
|
12
|
+
def contains_first_level_kanji?(string)
|
13
|
+
@processor.contains_first_level_kanji?(string)
|
14
|
+
end
|
15
|
+
|
16
|
+
def contains_second_level_kanji?(string)
|
17
|
+
@processor.contains_seconde_level_kanji?(string)
|
18
|
+
end
|
19
|
+
|
20
|
+
def contains_jisx0208_kanji?(string)
|
21
|
+
@processor.contains_jisx0208_kanji?(string)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/sig/jisx0208.rbs
ADDED
metadata
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jisx0208
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- kaiba
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-11-16 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Determines if a character is included in jisx0208 with JIS0208.TXT
|
14
|
+
email:
|
15
|
+
- kaibadash@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- ".rubocop.yml"
|
21
|
+
- LICENSE
|
22
|
+
- README.md
|
23
|
+
- Rakefile
|
24
|
+
- data/JIS0208.TXT
|
25
|
+
- lib/jisx0208.rb
|
26
|
+
- lib/jisx0208/processor.rb
|
27
|
+
- lib/jisx0208/version.rb
|
28
|
+
- sig/jisx0208.rbs
|
29
|
+
homepage: https://github.com/kaibadash/jisx0208-ruby
|
30
|
+
licenses: []
|
31
|
+
metadata:
|
32
|
+
homepage_uri: https://github.com/kaibadash/jisx0208-ruby
|
33
|
+
source_code_uri: https://github.com/kaibadash/jisx0208-ruby
|
34
|
+
changelog_uri: https://github.com/kaibadash/jisx0208-ruby
|
35
|
+
post_install_message:
|
36
|
+
rdoc_options: []
|
37
|
+
require_paths:
|
38
|
+
- lib
|
39
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 3.0.0
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
requirements: []
|
50
|
+
rubygems_version: 3.5.3
|
51
|
+
signing_key:
|
52
|
+
specification_version: 4
|
53
|
+
summary: Determines if a character is included in jisx0208
|
54
|
+
test_files: []
|