beta_code 0.0.10 → 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.
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