beta_code 0.0.10 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/beta_code.rb +28 -7
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4d24ec36875a1d29e143719fd2474215f4551226
|
4
|
+
data.tar.gz: 3470c9bef70cd264d3f16602ccc4620b91952558
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1d428b8e7f916f22ba3b5a43e15debc35caeb9251a9fb7c1346da607e0a250be865a7e2d961740d7ae36f65beb6a6cd8663c8922b5f765477b0f378ee9b0edd
|
7
|
+
data.tar.gz: 757a07e014365157ca9705271e8a1fd8fed44ce5274540e0bacd261e7c60bf705b26561a0fb5abaf973124814ab06b7c0a0237fad4a4ffe816fea83bb647ad42
|
data/lib/beta_code.rb
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
require 'json'
|
2
2
|
|
3
3
|
class BetaCode
|
4
|
-
def self.greek_to_beta_code(greek)
|
5
|
-
|
4
|
+
def self.greek_to_beta_code(greek, custom_map: {})
|
5
|
+
map = unicode_to_beta_code_map.merge(stringify_keys(custom_map))
|
6
|
+
|
7
|
+
greek.unicode_normalize.chars.map { |c| map[c] || c }.join('')
|
6
8
|
end
|
7
9
|
|
8
|
-
|
10
|
+
# This method is absurd. But having the logic all in one method makes it easier to work with than
|
11
|
+
# having it spread across multiple methods.
|
12
|
+
# It also makes it easier to compare the logic to the Beta Code libraries in other languages.
|
13
|
+
# rubocop:disable Metrics/MethodLength
|
14
|
+
# rubocop:disable Metrics/AbcSize
|
15
|
+
def self.beta_code_to_greek(beta_code, custom_map: {})
|
16
|
+
map = beta_code_to_unicode_map.merge(stringify_keys(custom_map))
|
9
17
|
beta_code_characters = beta_code.chars
|
10
18
|
greek_characters = []
|
11
19
|
start = 0
|
@@ -19,8 +27,8 @@ class BetaCode
|
|
19
27
|
while last <= max_length
|
20
28
|
slice = beta_code_characters[start...last].join('')
|
21
29
|
|
22
|
-
if
|
23
|
-
current_character =
|
30
|
+
if map[slice]
|
31
|
+
current_character = map[slice]
|
24
32
|
new_start = last
|
25
33
|
end
|
26
34
|
|
@@ -33,13 +41,15 @@ class BetaCode
|
|
33
41
|
|
34
42
|
sigma_to_end_of_word_sigma(greek_characters.join(''))
|
35
43
|
end
|
44
|
+
# rubocop:enable Metrics/MethodLength
|
45
|
+
# rubocop:enable Metrics/AbcSize
|
36
46
|
|
37
47
|
def self.max_beta_code_character_length
|
38
48
|
@max_beta_code_character_length ||= beta_code_to_unicode_map.keys.map(&:length).max
|
39
49
|
end
|
40
50
|
|
41
51
|
def self.sigma_to_end_of_word_sigma(string)
|
42
|
-
string.gsub(/σ(?=[,.:;·\s]|$)/, 'ς')
|
52
|
+
string.gsub(/σ(?=[,.:;·\s]|$)/, 'ς')
|
43
53
|
end
|
44
54
|
|
45
55
|
def self.beta_code_to_unicode_map
|
@@ -54,5 +64,16 @@ class BetaCode
|
|
54
64
|
File.read(File.expand_path("../../vendor/#{file}", __FILE__))
|
55
65
|
end
|
56
66
|
|
57
|
-
|
67
|
+
def self.stringify_keys(hash)
|
68
|
+
{}.tap do |stringified_hash|
|
69
|
+
hash.each { |k, v| stringified_hash[k.to_s] = v }
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
private_class_method :beta_code_to_unicode_map,
|
74
|
+
:unicode_to_beta_code_map,
|
75
|
+
:read_vendor_file,
|
76
|
+
:sigma_to_end_of_word_sigma,
|
77
|
+
:max_beta_code_character_length,
|
78
|
+
:stringify_keys
|
58
79
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beta_code
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- perseids
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02
|
11
|
+
date: 2020-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: gnar-style
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.10'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: test-unit
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -47,14 +61,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
47
61
|
requirements:
|
48
62
|
- - ">="
|
49
63
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
64
|
+
version: 2.4.0
|
51
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
66
|
requirements:
|
53
67
|
- - ">="
|
54
68
|
- !ruby/object:Gem::Version
|
55
69
|
version: '0'
|
56
70
|
requirements: []
|
57
|
-
|
71
|
+
rubyforge_project:
|
72
|
+
rubygems_version: 2.6.8
|
58
73
|
signing_key:
|
59
74
|
specification_version: 4
|
60
75
|
summary: Converts Greek Beta Code to Greek characters and vice versa
|