unicode-name 1.3.0 β†’ 1.4.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: 6c4c7dc593b6cd58f81e901a6f2cdbf002bc376b
4
- data.tar.gz: a5924488152b102826924f9e1b7c4eba33dbedb0
3
+ metadata.gz: 990485823ed1ab3282dcd13d6fd065499f5dcf46
4
+ data.tar.gz: 890802e0e5d2bdc61960dc79eb8cff5c9c353174
5
5
  SHA512:
6
- metadata.gz: e18c263bff378f12d193a4aac7d108cbdbdc366e6160777a56470149f113f3bd0cf6fb6f78c098830f34e2d4a121eadeb611044f1c33a1794ebd93d0dafef555
7
- data.tar.gz: a7b7d8fdb3645ff27f87603f207052e9ed1c58a894c6901db59f00364921b423e3a3c28dbce52fd27380e819569dd556066fe142ff4fb8affe90729caa3a38cb
6
+ metadata.gz: e0b5c9abefc9f0b6f521a54c86ef0334e815645328aa07af46f20a20db4529ebdd3d06e104f7720e96b24fd085df36f9f5ea70d2a6be8c04d295e7bb592dd088
7
+ data.tar.gz: 6adcb039b952fafd091cccf69b9b0e648085130695934e310ffe6cf4417249aa0942a0607b5ead164d39341b3cdacc5b073abaa89cb00f7d446ab3462e3b14dd
data/.travis.yml CHANGED
@@ -4,13 +4,13 @@ language: ruby
4
4
  script: bundle exec ruby spec/unicode_name_spec.rb
5
5
 
6
6
  rvm:
7
- - 2.3.0
7
+ - 2.4.0
8
+ - 2.3.3
8
9
  - 2.2
9
10
  - 2.1
10
11
  - ruby-head
11
- - rbx-2
12
12
  - jruby-head
13
- - jruby-9.0.5.0
13
+ - jruby-9.1.7.0
14
14
 
15
15
  cache:
16
16
  - bundler
@@ -18,4 +18,3 @@ cache:
18
18
  matrix:
19
19
  allow_failures:
20
20
  - rvm: jruby-head
21
- - rvm: rbx-2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  ## CHANGELOG
2
2
 
3
+ ### 1.4.0
4
+
5
+ * Support Hangul Syllables
6
+
3
7
  ### 1.3.0
4
8
 
5
9
  * Support Unicode 9.0
data/MIT-LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2016 Jan Lelis, mail@janlelis.de
1
+ Copyright (c) 2016-2017 Jan Lelis, mail@janlelis.de
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -4,7 +4,7 @@ Return Unicode codepoint names, aliases, and labels.
4
4
 
5
5
  Unicode version: **9.0.0**
6
6
 
7
- Supported Rubies: **2.3**, **2.2**, **2.1**
7
+ Supported Rubies: **2.4**, **2.3**, **2.2**, **2.1**
8
8
 
9
9
  ## Usage
10
10
 
@@ -15,6 +15,7 @@ require "unicode/name"
15
15
  Unicode::Name.of "A" # => "LATIN CAPITAL LETTER A"
16
16
  Unicode::Name.of "🚑" # => "AERIAL TRAMWAY"
17
17
  Unicode::Name.of "丁" # => "CJK UNIFIED IDEOGRAPH-4E01"
18
+ Unicode::Name.of "ν•œ" # => "HANGUL SYLLABLE HAN"
18
19
 
19
20
  # Aliases, by type
20
21
  Unicode::Name.aliases "\t" # => {:control=>["CHARACTER TABULATION", "HORIZONTAL TABULATION"],
@@ -38,11 +39,7 @@ Unicode::Name.readable("\u{FFFFD}") # => "<private-use-FFFFD>"
38
39
 
39
40
  See [unicode-x](https://github.com/janlelis/unicode-x) for more Unicode related micro libraries.
40
41
 
41
- ## Todo
42
-
43
- * Hangul syllable names
44
-
45
42
  ## MIT License
46
43
 
47
- - Copyright (C) 2016 Jan Lelis <http://janlelis.com>. Released under the MIT license.
44
+ - Copyright (C) 2016-2017 Jan Lelis <http://janlelis.com>. Released under the MIT license.
48
45
  - Unicode data: http://www.unicode.org/copyright.html#Exhibit1
data/data/name.marshal.gz CHANGED
Binary file
data/lib/unicode/name.rb CHANGED
@@ -2,6 +2,11 @@ require_relative "name/constants"
2
2
 
3
3
  module Unicode
4
4
  module Name
5
+ HANGUL_START = 44032
6
+ HANGUL_END = 55203
7
+ HANGUL_MEDIAL_MAX = 588
8
+ HANGUL_FINAL_MAX = 28
9
+
5
10
  # Don't overwrite Module.name
6
11
  def self.unicode_name(char)
7
12
  codepoint = char.unpack("U")[0]
@@ -10,8 +15,8 @@ module Unicode
10
15
  res
11
16
  elsif INDEX[:CJK].any?{ |cjk_range| codepoint >= cjk_range[0] && codepoint <= cjk_range[1] }
12
17
  "CJK UNIFIED IDEOGRAPH-%.4X" % codepoint
13
- elsif codepoint >= INDEX[:HANGUL][0][0] && codepoint <= INDEX[:HANGUL][0][1]
14
- "HANGUL SYLLABLE-%.4X" % codepoint
18
+ elsif codepoint >= HANGUL_START && codepoint <= HANGUL_END
19
+ "HANGUL SYLLABLE %s" % hangul_decomposition(codepoint)
15
20
  else
16
21
  nil
17
22
  end
@@ -64,6 +69,17 @@ module Unicode
64
69
  as[:abbreviation] && as[:abbreviation][0] ) ||
65
70
  label(char)
66
71
  end
72
+
73
+ private
74
+
75
+ # See https://en.wikipedia.org/wiki/Korean_language_and_computers#Hangul_Syllables_Area
76
+ def self.hangul_decomposition(codepoint)
77
+ base = codepoint - HANGUL_START
78
+ final = base % HANGUL_FINAL_MAX
79
+ medial = (base - final) % HANGUL_MEDIAL_MAX
80
+ initial = base / HANGUL_MEDIAL_MAX
81
+ "#{INDEX[:JAMO][:INITIAL][initial]}#{INDEX[:JAMO][:MEDIAL][medial]}#{INDEX[:JAMO][:FINAL][final]}"
82
+ end
67
83
  end
68
84
  end
69
85
 
@@ -1,6 +1,6 @@
1
1
  module Unicode
2
2
  module Name
3
- VERSION = "1.3.0".freeze
3
+ VERSION = "1.4.0".freeze
4
4
  UNICODE_VERSION = "9.0.0".freeze
5
5
  DATA_DIRECTORY = File.expand_path(File.dirname(__FILE__) + '/../../../data/').freeze
6
6
  INDEX_FILENAME = (DATA_DIRECTORY + '/name.marshal.gz').freeze
@@ -13,13 +13,14 @@ describe Unicode::Name do
13
13
  assert_equal "CJK UNIFIED IDEOGRAPH-4E01", Unicode::Name.of("丁")
14
14
  end
15
15
 
16
- # it "works for Hangul Syllables" do
17
- # assert_equal "HANGUL SYLLABLE GAG", Unicode::Name.of("각")
18
- # end
16
+ it "works for Hangul Syllables" do
17
+ assert_equal "HANGUL SYLLABLE HAN", Unicode::Name.of("ν•œ")
18
+ assert_equal "HANGUL SYLLABLE GAG", Unicode::Name.of("각")
19
+ end
19
20
 
20
21
  it "will return nil for characters without name" do
21
- assert_equal nil, Unicode::Name.of("\u{10c50}")
22
- assert_equal nil, Unicode::Name.of("\0")
22
+ assert_nil Unicode::Name.of("\u{10c50}")
23
+ assert_nil Unicode::Name.of("\0")
23
24
  end
24
25
  end
25
26
 
@@ -35,7 +36,7 @@ describe Unicode::Name do
35
36
 
36
37
  describe ".aliases" do
37
38
  it "will return nil if no alias available" do
38
- assert_equal nil, Unicode::Name.aliases("A")
39
+ assert_nil Unicode::Name.aliases("A")
39
40
  end
40
41
 
41
42
  it "will always return a Hash" do
@@ -50,7 +51,7 @@ describe Unicode::Name do
50
51
 
51
52
  describe ".label" do
52
53
  it "will return nil for usual (graphic) characters" do
53
- assert_equal nil, Unicode::Name.label("A")
54
+ assert_nil Unicode::Name.label("A")
54
55
  end
55
56
 
56
57
  it "will return <control-hhhh> for control characters" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unicode-name
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Lelis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-22 00:00:00.000000000 Z
11
+ date: 2017-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: unicode-types
@@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  version: '0'
67
67
  requirements: []
68
68
  rubyforge_project:
69
- rubygems_version: 2.5.1
69
+ rubygems_version: 2.6.8
70
70
  signing_key:
71
71
  specification_version: 4
72
72
  summary: Returns name/aliases/label of a Unicode codepoint