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.
Files changed (3) hide show
  1. checksums.yaml +5 -5
  2. data/lib/beta_code.rb +28 -7
  3. metadata +19 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 77131cb8ad5b3c9135142e08614d71a9031b39ec3721b0fced366c8c715526bb
4
- data.tar.gz: f49382e662aaa423c2db3e9b8ca506bc535a826a0dacf1ea03f5cfb5ba3e61ab
2
+ SHA1:
3
+ metadata.gz: 4d24ec36875a1d29e143719fd2474215f4551226
4
+ data.tar.gz: 3470c9bef70cd264d3f16602ccc4620b91952558
5
5
  SHA512:
6
- metadata.gz: 954d6f1a5bb7077166e7dba72784f8e5707009230c46e3881ad4fe7f575863eb54aabe23ac920f7e4d9233a001acfd8b85ec30c3b73680a32ac05b0f167be328
7
- data.tar.gz: 99069f3b3df8d10ac0334418f185fd51a2efc09140cd863ca1382b84bbcbdff570b92ac952f995c933ad4d9e6903f4cd816e1a9c8f8a54ee9242267af20cac7e
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
- greek.unicode_normalize.chars.map { |c| unicode_to_beta_code_map[c] || c }.join('')
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
- def self.beta_code_to_greek(beta_code)
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 beta_code_to_unicode_map[slice]
23
- current_character = beta_code_to_unicode_map[slice]
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
- private_class_method :beta_code_to_unicode_map, :unicode_to_beta_code_map, :read_vendor_file, :sigma_to_end_of_word_sigma, :max_beta_code_character_length
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.10
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 00:00:00.000000000 Z
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: '0'
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
- rubygems_version: 3.0.1
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