sort_kana_jisx4061 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d6f0c5c42b2e0b2dadfc08ed0ae0d2112283776d
4
- data.tar.gz: 5bb7731e8526efc259bec4c9a95f4aac00db0365
3
+ metadata.gz: 1f398922e26d2aedfc4b2ee9f0241e641706c649
4
+ data.tar.gz: 9ee9eae6c2e20257cc226196667f975d66420e45
5
5
  SHA512:
6
- metadata.gz: babaa39b79f465ffc4a1d76bb3c83bee419fcdb9bbb401d414c795294411e5168d39e9af75ae6bbf74e34c86fd5b72aad2e38f795258b1ccbe3f790deb0bcd25
7
- data.tar.gz: 8ffac04a94ac36f11ba1d6332dedaea1ed1bf290ce851af7f14826714591cac37bee1be5d0c21f5001ff9f7971a916a9a3b32fe2edc28c45ff37f19a76a437f7
6
+ metadata.gz: 28e83f6e99ea1aaa151d3a177c77db9037f4c6933be059387b029679958887413025ba974899c94f2645ae1fe2e3ec4913171c72f6581dcb5da89a424ff9bf26
7
+ data.tar.gz: 49492ed88da38045a3e9f265652cf2cae6942aee48b11c1a4d55f4e32e2e4bf5540b0e3d8b20fe0b9afe16e05a9ef91ecf822084c7ab50129a620e15bad5a974
data/README.md CHANGED
@@ -20,6 +20,7 @@ words_sorted = sort_kana_jisx4061_by(words) {|x| x[:yomi] }
20
20
 
21
21
  ## Note
22
22
 
23
+ * Strings are exptected to be UTF-8
23
24
  * Sorting Kanji is not supported
24
25
  * Hiragana is converted to Katakana internally
25
26
 
@@ -1,3 +1,3 @@
1
1
  module SortKanaJisx4061
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -18,23 +18,34 @@ module SortKanaJisx4061 # :nodoc:
18
18
  CC_GETA = 12 # unused
19
19
 
20
20
  class << self
21
- def process_yomi(str)
22
- r = []
23
- str.each_char do |c|
24
- c = c.downcase
25
- c = c.tr('ぁ-ん', 'ァ-ン') # Hiragana -> Katakana
26
- c = base_char(c)
27
- if c == ''
28
- c = process_onbiki(c, r.last[1])
21
+
22
+ # == Example
23
+ # 'ガッコウ1'
24
+ #
25
+ # [[[CC_KANA, ''], [CC_KANA, ''], [CC_KANA, 'コ'],
26
+ # [CC_KANA, 'ウ'], [CC_NUMBER, '1'] ],
27
+ # [[CC_KANA, 'ガ'], [CC_KANA, ''], [CC_KANA, 'コ'],
28
+ # [CC_KANA, 'ウ'], [CC_NUMBER, '1'] ]]
29
+ def parse_yomi(str)
30
+ r1 = [] # without collation properties
31
+ r2 = [] # with collation properties
32
+ str.each_char do |c1|
33
+ c1 = c1.tr('ぁ-ん', 'ァ-ン') # Hiragana -> Katakana
34
+ if c1 == 'ー'
35
+ c1 = process_onbiki(c1, r1.last[1])
29
36
  end
30
- r << [jisx4061_charclass(c), c]
37
+ c2 = c1
38
+ c1 = base_char(c1)
39
+ c2 = c2.swapcase # WORKAROUND: downcase should be smaller than updase
40
+ ccls = jisx4061_charclass(c1)
41
+ r1 << [ccls, c1]; r2 << [ccls, c2]
31
42
  end
32
- r
43
+ [r1, r2]
33
44
  end
34
45
 
35
46
  # for test
36
47
  def compare(str1, str2)
37
- process_yomi(str1) <=> process_yomi(str2)
48
+ parse_yomi(str1) <=> parse_yomi(str2)
38
49
  end
39
50
 
40
51
  private
@@ -62,6 +73,7 @@ module SortKanaJisx4061 # :nodoc:
62
73
  }
63
74
 
64
75
  def base_char(c)
76
+ c = c.downcase
65
77
  BASE_CHAR_TBL[c] || c
66
78
  end
67
79
 
@@ -93,5 +105,5 @@ end
93
105
  #
94
106
  # words_sorted = sort_kana_jisx4061_by(words) {|x| x[:yomi] }
95
107
  def sort_kana_jisx4061_by(enum)
96
- enum.sort_by {|x| SortKanaJisx4061::process_yomi(yield(x)) }
108
+ enum.sort_by {|x| SortKanaJisx4061::parse_yomi(yield(x)) }
97
109
  end
@@ -5,6 +5,7 @@ require "sort_kana_jisx4061/version"
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "sort_kana_jisx4061"
7
7
  spec.version = SortKanaJisx4061::VERSION
8
+ spec.license = 'MIT'
8
9
  spec.authors = ["emasaka (Masakazu Takahashi)"]
9
10
  spec.email = ["emasaka@gmail.com"]
10
11
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sort_kana_jisx4061
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - emasaka (Masakazu Takahashi)
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-12 00:00:00.000000000 Z
11
+ date: 2018-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -68,7 +68,8 @@ files:
68
68
  - lib/sort_kana_jisx4061/version.rb
69
69
  - sort_kana_jisx4061.gemspec
70
70
  homepage: https://github.com/emasaka/sort_kana_jisx4061
71
- licenses: []
71
+ licenses:
72
+ - MIT
72
73
  metadata: {}
73
74
  post_install_message:
74
75
  rdoc_options: []
@@ -86,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
87
  version: '0'
87
88
  requirements: []
88
89
  rubyforge_project:
89
- rubygems_version: 2.4.8
90
+ rubygems_version: 2.6.14.1
90
91
  signing_key:
91
92
  specification_version: 4
92
93
  summary: sort Japanese Kana strings by JIS X 4061 order