grc 0.1.1 → 0.1.3

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
  SHA256:
3
- metadata.gz: 798c467ff22b45398cdc96912bb4ea808fa4e00cfdf5d914c58624be1622efef
4
- data.tar.gz: c08a1f326962c3354cb7ceeea7ac75215cdbc54955f56ce236b52f9a01bd8155
3
+ metadata.gz: 607b4978467b7021989bc97c470b46a97996a6e418dbacce9704e1827e87fb38
4
+ data.tar.gz: f7058a951b8863b30edb9fe0e3c93e350782c7adee00ca018c806888e70ee2f1
5
5
  SHA512:
6
- metadata.gz: 6dcce9c085b9b6de13e35b561ba8830405e61fe1db6c7be4d6d6378cdf62a3916fca4c2b7c79d7d8982825a9036b02e5be0f6347aacba1209011356db377803f
7
- data.tar.gz: 343da32bfd320228e8d530ae17456edc9212bc9b4d0f0d5307f32e9c25e2242e87d11b944c8be79e747b2f8a6d269e98d90fb95ee84540fff4667ede785af304
6
+ metadata.gz: ab9239b4caf50bd0813025a6fc7491a43d9e5e53f07d7eb50db49040089e19a0bebf603027c3ab0c9b5feaf22cc5f8613c7608d2b730bba035e855e79f281e4c
7
+ data.tar.gz: 767f82f5519ce78f257a165bdfcf712d6f9d854c9dccb2e1d167cff6495635bcd71113e5087a3d7b2b79ba5c73a8ae0eab1791a0f303121231d4be88292dd08d
data/.idea/workspace.xml CHANGED
@@ -4,10 +4,9 @@
4
4
  <option name="autoReloadType" value="SELECTIVE" />
5
5
  </component>
6
6
  <component name="ChangeListManager">
7
- <list default="true" id="0af4ebef-9f59-4a85-9f65-0d8163baa737" name="Changes" comment="2022-07-12-01-33">
7
+ <list default="true" id="0af4ebef-9f59-4a85-9f65-0d8163baa737" name="Changes" comment="2022-07-16-03-34">
8
8
  <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
9
- <change beforePath="$PROJECT_DIR$/Gemfile.lock" beforeDir="false" afterPath="$PROJECT_DIR$/Gemfile.lock" afterDir="false" />
10
- <change beforePath="$PROJECT_DIR$/lib/grc.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/grc.rb" afterDir="false" />
9
+ <change beforePath="$PROJECT_DIR$/CHANGELOG.md" beforeDir="false" afterPath="$PROJECT_DIR$/CHANGELOG.md" afterDir="false" />
11
10
  <change beforePath="$PROJECT_DIR$/lib/grc/version.rb" beforeDir="false" afterPath="$PROJECT_DIR$/lib/grc/version.rb" afterDir="false" />
12
11
  </list>
13
12
  <option name="SHOW_DIALOG" value="false" />
@@ -37,11 +36,13 @@
37
36
  &quot;keyToString&quot;: {
38
37
  &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
39
38
  &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
39
+ &quot;last_opened_file_path&quot;: &quot;/Users/bcdav/Dropbox/Developer/Ruby/Gems/grc&quot;,
40
40
  &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
41
- &quot;ruby.rails.projectView.checked&quot;: &quot;true&quot;
41
+ &quot;ruby.rails.projectView.checked&quot;: &quot;true&quot;,
42
+ &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;
42
43
  }
43
44
  }</component>
44
- <component name="RunManager" selected="Test::Unit/Shoulda/Minitest.test_grc.rb">
45
+ <component name="RunManager" selected="Ruby.grc">
45
46
  <configuration name="grc" type="RubyRunConfigurationType" factoryName="Ruby" temporary="true">
46
47
  <module name="grc" />
47
48
  <RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="" />
@@ -92,6 +93,68 @@
92
93
  <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
93
94
  <method v="2" />
94
95
  </configuration>
96
+ <configuration name="test_oxia_to_tonos" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true" nameIsGenerated="true">
97
+ <module name="grc" />
98
+ <predefined_log_file enabled="true" id="RUBY_TESTUNIT" />
99
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-Ilib:test" />
100
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
101
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
102
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
103
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
104
+ <envs>
105
+ <env name="JRUBY_OPTS" value="-X+O" />
106
+ </envs>
107
+ <EXTENSION ID="BundlerRunConfigurationExtension" BUNDLE_MODE="AUTO" bundleExecEnabled="true" />
108
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
109
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov" ENABLE_BRANCH_COVERAGE="true" ENABLE_FORKED_COVERAGE="true">
110
+ <COVERAGE_PATTERN ENABLED="true">
111
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
112
+ </COVERAGE_PATTERN>
113
+ </EXTENSION>
114
+ <EXTENSION ID="org.jetbrains.plugins.ruby.rails.run.RailsRunConfigurationExtension" SCRATCH_USE_RAILS_RUNNER="false" />
115
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
116
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/test/test_grc.rb" />
117
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPTS_PATHS" VALUE="$MODULE_DIR$/test/test_grc.rb" />
118
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
119
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="^test_oxia_to_tonos$" />
120
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_METHOD" />
121
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
122
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
123
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
124
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
125
+ <method v="2" />
126
+ </configuration>
127
+ <configuration name="test_tonos_to_oxia" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true" nameIsGenerated="true">
128
+ <module name="grc" />
129
+ <predefined_log_file enabled="true" id="RUBY_TESTUNIT" />
130
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUBY_ARGS" VALUE="-Ilib:test" />
131
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="WORK DIR" VALUE="$MODULE_DIR$" />
132
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SHOULD_USE_SDK" VALUE="false" />
133
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ALTERN_SDK_NAME" VALUE="" />
134
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="myPassParentEnvs" VALUE="true" />
135
+ <envs>
136
+ <env name="JRUBY_OPTS" value="-X+O" />
137
+ </envs>
138
+ <EXTENSION ID="BundlerRunConfigurationExtension" BUNDLE_MODE="AUTO" bundleExecEnabled="true" />
139
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
140
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" track_test_folders="true" runner="rcov" ENABLE_BRANCH_COVERAGE="true" ENABLE_FORKED_COVERAGE="true">
141
+ <COVERAGE_PATTERN ENABLED="true">
142
+ <PATTERN REGEXPS="/.rvm/" INCLUDED="false" />
143
+ </COVERAGE_PATTERN>
144
+ </EXTENSION>
145
+ <EXTENSION ID="org.jetbrains.plugins.ruby.rails.run.RailsRunConfigurationExtension" SCRATCH_USE_RAILS_RUNNER="false" />
146
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TESTS_FOLDER_PATH" VALUE="" />
147
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPT_PATH" VALUE="$MODULE_DIR$/test/test_grc.rb" />
148
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_SCRIPTS_PATHS" VALUE="$MODULE_DIR$/test/test_grc.rb" />
149
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_FILE_MASK" VALUE="" />
150
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_METHOD_NAME" VALUE="^test_tonos_to_oxia$" />
151
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="TEST_TEST_TYPE" VALUE="TEST_METHOD" />
152
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="DRB" VALUE="false" />
153
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="ZEUS" VALUE="false" />
154
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="SPRING" VALUE="false" />
155
+ <RTEST_RUN_CONFIG_SETTINGS_ID NAME="RUNNER_OPTIONS" VALUE="" />
156
+ <method v="2" />
157
+ </configuration>
95
158
  <configuration name="test_unicode_name" type="TestUnitRunConfigurationType" factoryName="Test::Unit/Shoulda/Minitest" temporary="true" nameIsGenerated="true">
96
159
  <module name="grc" />
97
160
  <predefined_log_file enabled="true" id="RUBY_TESTUNIT" />
@@ -125,9 +188,11 @@
125
188
  </configuration>
126
189
  <recent_temporary>
127
190
  <list>
191
+ <item itemvalue="Ruby.grc" />
192
+ <item itemvalue="Test::Unit/Shoulda/Minitest.test_tonos_to_oxia" />
193
+ <item itemvalue="Test::Unit/Shoulda/Minitest.test_oxia_to_tonos" />
128
194
  <item itemvalue="Test::Unit/Shoulda/Minitest.test_grc.rb" />
129
195
  <item itemvalue="Test::Unit/Shoulda/Minitest.test_unicode_name" />
130
- <item itemvalue="Ruby.grc" />
131
196
  </list>
132
197
  </recent_temporary>
133
198
  </component>
@@ -141,7 +206,8 @@
141
206
  <option name="presentableId" value="Default" />
142
207
  <updated>1657595515095</updated>
143
208
  <workItem from="1657595516239" duration="5292000" />
144
- <workItem from="1657776231899" duration="6000" />
209
+ <workItem from="1657776231899" duration="3819000" />
210
+ <workItem from="1657925313775" duration="11283000" />
145
211
  </task>
146
212
  <task id="LOCAL-00001" summary="Initial commit">
147
213
  <created>1657596693848</created>
@@ -199,7 +265,42 @@
199
265
  <option name="project" value="LOCAL" />
200
266
  <updated>1657600429179</updated>
201
267
  </task>
202
- <option name="localTasksCounter" value="9" />
268
+ <task id="LOCAL-00009" summary="fixed no_upcase_diacritics">
269
+ <created>1657776287327</created>
270
+ <option name="number" value="00009" />
271
+ <option name="presentableId" value="LOCAL-00009" />
272
+ <option name="project" value="LOCAL" />
273
+ <updated>1657776287327</updated>
274
+ </task>
275
+ <task id="LOCAL-00010" summary="fixed no_upcase_diacritics">
276
+ <created>1657776308249</created>
277
+ <option name="number" value="00010" />
278
+ <option name="presentableId" value="LOCAL-00010" />
279
+ <option name="project" value="LOCAL" />
280
+ <updated>1657776308249</updated>
281
+ </task>
282
+ <task id="LOCAL-00011" summary="minor fix">
283
+ <created>1657777089163</created>
284
+ <option name="number" value="00011" />
285
+ <option name="presentableId" value="LOCAL-00011" />
286
+ <option name="project" value="LOCAL" />
287
+ <updated>1657777089163</updated>
288
+ </task>
289
+ <task id="LOCAL-00012" summary="minor fix">
290
+ <created>1657777286176</created>
291
+ <option name="number" value="00012" />
292
+ <option name="presentableId" value="LOCAL-00012" />
293
+ <option name="project" value="LOCAL" />
294
+ <updated>1657777286176</updated>
295
+ </task>
296
+ <task id="LOCAL-00013" summary="2022-07-16-03-34">
297
+ <created>1657953258951</created>
298
+ <option name="number" value="00013" />
299
+ <option name="presentableId" value="LOCAL-00013" />
300
+ <option name="project" value="LOCAL" />
301
+ <updated>1657953258951</updated>
302
+ </task>
303
+ <option name="localTasksCounter" value="14" />
203
304
  <servers />
204
305
  </component>
205
306
  <component name="TypeScriptGeneratedFilesManager">
@@ -223,11 +324,17 @@
223
324
  <MESSAGE value="2022-07-12-01-11" />
224
325
  <MESSAGE value="2022-07-12-01-24" />
225
326
  <MESSAGE value="2022-07-12-01-33" />
226
- <option name="LAST_COMMIT_MESSAGE" value="2022-07-12-01-33" />
327
+ <MESSAGE value="fixed no_upcase_diacritics" />
328
+ <MESSAGE value="minor fix" />
329
+ <MESSAGE value="Fixed `oxia_to_tonos` &amp; `tonos_to_oxia` and added the options of `to_tonos` &amp; `to_oxia`. Added `transliterate`." />
330
+ <MESSAGE value="2022-07-16-03-34" />
331
+ <option name="LAST_COMMIT_MESSAGE" value="2022-07-16-03-34" />
227
332
  </component>
228
333
  <component name="com.intellij.coverage.CoverageDataManagerImpl">
334
+ <SUITE FILE_PATH="coverage/grc@test_oxia_to_tonos.rcov" NAME="test_oxia_to_tonos Coverage Results" MODIFIED="1657949990401" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="grc" />
335
+ <SUITE FILE_PATH="coverage/grc@test_tonos_to_oxia.rcov" NAME="test_tonos_to_oxia Coverage Results" MODIFIED="1657950558051" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="grc" />
229
336
  <SUITE FILE_PATH="coverage/grc@test_grc_rb.rcov" NAME="test_grc.rb Coverage Results" MODIFIED="1657599843372" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="grc" />
230
337
  <SUITE FILE_PATH="coverage/grc@test_unicode_name.rcov" NAME="test_unicode_name Coverage Results" MODIFIED="1657596419433" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="grc" />
231
- <SUITE FILE_PATH="coverage/grc@grc.rcov" NAME="grc Coverage Results" MODIFIED="1657596407748" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="grc" />
338
+ <SUITE FILE_PATH="coverage/grc@grc.rcov" NAME="grc Coverage Results" MODIFIED="1657952337434" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="rcov" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" MODULE_NAME="grc" />
232
339
  </component>
233
340
  </project>
data/.rubocop.yml CHANGED
@@ -11,3 +11,12 @@ Style/StringLiteralsInInterpolation:
11
11
 
12
12
  Layout/LineLength:
13
13
  Max: 480
14
+
15
+ Metrics/AbcSize:
16
+ Enabled: false
17
+
18
+ Metrics/MethodLength:
19
+ Enabled: false
20
+
21
+ Metrics/ModuleLength:
22
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -3,3 +3,8 @@
3
3
  ## [0.1.0] - 2022-07-12
4
4
 
5
5
  - Initial release
6
+
7
+ ## [0.1.3] - 2022-07-12
8
+ - Fixed `oxia_to_tonos` & `tonos_to_oxia`
9
+ - New shorter versions `to_tonos` & `to_oxia`.
10
+ - Added `transliterate`.
data/Gemfile CHANGED
@@ -16,3 +16,4 @@ gem 'unicode-name', '~> 1.10.0'
16
16
  gem 'rubocop-minitest', '~> 0.20.1'
17
17
 
18
18
  gem 'rubocop-rake', '~> 0.6.0'
19
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- grc (0.1.1)
4
+ grc (0.1.3)
5
5
  minitest (~> 5.0)
6
6
  rake (~> 13.0)
7
7
  unicode-name (~> 1.10.0)
@@ -43,6 +43,7 @@ GEM
43
43
 
44
44
  PLATFORMS
45
45
  arm64-darwin-21
46
+ x86_64-linux
46
47
 
47
48
  DEPENDENCIES
48
49
  grc!
data/README.md CHANGED
@@ -1,6 +1,22 @@
1
1
  # GRC - Methods for working with Ancient Greek in Ruby
2
2
 
3
3
  [![Ruby](https://github.com/bcdavasconcelos/grc/actions/workflows/main.yml/badge.svg)](https://github.com/bcdavasconcelos/grc/actions/workflows/main.yml) [![Gem Version](https://badge.fury.io/rb/grc.svg)](https://badge.fury.io/rb/grc)
4
+
5
+ ```ruby
6
+ 'αβγ'.grc? # true
7
+ 'abc'.grc? # false
8
+ 'ἄ'.no_downcase_diacritics # α
9
+ 'Ἀ'.no_upcase_diacritics # Α
10
+ 'ἄἈ'.no_diacritics # αΑ
11
+ 'ά'.tonos_to_oxia # ά
12
+ 'ά'.oxia_to_tonos # ά
13
+ 'ὰ'.grave_to_acute # ά
14
+ 'ά'.acute_to_grave # ὰ
15
+ 'α'.unicode_name # ['GREEK SMALL LETTER ALPHA']
16
+ 'α'.unicode_points # ['\\u03B1']
17
+ 'ᾄ'.nfc # ᾄ
18
+ 'ᾄ'.nfd # ᾄ
19
+ ```
4
20
 
5
21
  ## Installation
6
22
 
data/lib/grc/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Grc
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.3'
5
5
  end
data/lib/grc.rb CHANGED
@@ -6,46 +6,75 @@ require_relative 'grc/version'
6
6
  module Grc
7
7
  class Error < StandardError; end
8
8
 
9
+ @std_error = 'ERROR: String does not contain any greek. Summon the muse and try again.'
10
+
9
11
  def grc?
10
12
  !scan(/(\p{Greek})/).empty?
11
13
  end
12
14
 
13
15
  def no_downcase_diacritics
16
+ return @std_error unless grc?
17
+
14
18
  tr('ἀἄᾄἂᾂἆᾆᾀἁἅᾅἃᾃἇᾇᾁάάᾴὰᾲᾰᾶᾷᾱᾳἐἔἒἑἕἓέέὲἠἤᾔἢᾒἦᾖᾐἡἥᾕἣᾓἧᾗᾑήήῄὴῂῆῇῃἰἴἲἶἱἵἳἷίίὶῐῖϊϊΐῒῗῑὀὄὂὁὅὃόόὸῤῥὐὔὒὖὑὕὓὗύύὺῠῦϋΰΰΰῢῧῡὠὤᾤὢᾢὦᾦᾠὡὥᾥὣᾣὧᾧᾡώώῴὼῲῶῷῳ',
15
19
  'ααααααααααααααααααααααααααεεεεεεεεεηηηηηηηηηηηηηηηηηηηηηηηηιιιιιιιιιιιιιιιιιιιοοοοοοοοορρυυυυυυυυυυυυυυυυυυυυωωωωωωωωωωωωωωωωωωωωωωωω')
16
20
  end
17
21
 
18
22
  def no_upcase_diacritics
23
+ return @std_error unless grc?
24
+
19
25
  str = self
26
+ # Adhoc solution for odd combinations of diacritics with capital letters
20
27
  ars = [[/[́̀͂́́́̀͂]/, ''], [/Α͂/, 'Α'], [/Η͂/, 'Η'], [/Ί|Ὶ|Ι͂|́Ι|̀Ι|͂Ι/, 'Ι'],
21
- [/Ρ̓/, 'Ρ'], [/ Ὺ| ́Υ|Υ̓|Ύ|Ὺ|Υ͂|́Υ|̀Υ|͂Υ/, 'Υ'], [/͂Ω/, 'Ω']] # Adhoc solution for crazy diacritics with capital letters
28
+ [/Ρ̓/, 'Ρ'], [/ Ὺ| ́Υ|Υ̓|Ύ|Ὺ|Υ͂|́Υ|̀Υ|͂Υ/, 'Υ'], [/͂Ω/, 'Ω']]
22
29
  ars.each do |a|
23
30
  str = str.gsub(/#{a[0]}/, a[1])
24
31
  end
25
- str = str.tr('ἈἌἊἎἉἍἋἏΆᾺᾸᾹἘἜἚἙἝἛΈῈἨἬἪἮἩἭἫἯΉῊἸἼἺἾἹἽἻἿΊῚῘΪῙὈὌὊὉὍὋΌῸΡῬὙὝὛὟΎῪῨΫῩὨὬὪὮὩὭὫὯΏῺ',
26
- 'ΑΑΑΑΑΑΑΑΑΑΑΑΕΕΕΕΕΕΕΕΗΗΗΗΗΗΗΗΗΗΙΙΙΙΙΙΙΙΙΙΙΙΙΟΟΟΟΟΟΟΟΡΡΥΥΥΥΥΥΥΥΥΩΩΩΩΩΩΩΩΩΩ')
32
+ str.tr('ἈἌἊἎἉἍἋἏΆᾺᾸᾹἘἜἚἙἝἛΈῈἨἬἪἮἩἭἫἯΉῊἸἼἺἾἹἽἻἿΊῚῘΪῙὈὌὊὉὍὋΌῸΡῬὙὝὛὟΎῪῨΫῩὨὬὪὮὩὭὫὯΏῺ',
33
+ 'ΑΑΑΑΑΑΑΑΑΑΑΑΕΕΕΕΕΕΕΕΗΗΗΗΗΗΗΗΗΗΙΙΙΙΙΙΙΙΙΙΙΙΙΟΟΟΟΟΟΟΟΡΡΥΥΥΥΥΥΥΥΥΩΩΩΩΩΩΩΩΩΩ')
27
34
  end
28
35
 
29
36
  def no_diacritics
37
+ return @std_error unless grc?
38
+
30
39
  no_downcase_diacritics.no_upcase_diacritics
31
40
  end
32
41
 
33
42
  def tonos_to_oxia
34
- tr('ΆΈΉΊΎΌΏάέήίΐύΰόώ',
35
- 'ΆΈΉΊΎΌΏάέήίΐύΰόώ')
43
+ return @std_error unless grc?
44
+
45
+ tr('άΆέΈήΉίΊΐόΌύΎΰώΏ',
46
+ 'άΆέΈήΉίΊΐόΌύΎΰώΏ')
47
+ end
48
+
49
+ def to_oxia
50
+ return @std_error unless grc?
51
+
52
+ tonos_to_oxia
36
53
  end
37
54
 
38
55
  def oxia_to_tonos
39
- tr('ΆΈΉΊΎΌΏάέήίΐύΰόώ',
40
- 'ΆΈΉΊΎΌΏάέήίΐύΰόώ')
56
+ return @std_error unless grc?
57
+
58
+ tr('άΆέΈήΉίΊΐόΌύΎΰώΏ',
59
+ 'άΆέΈήΉίΊΐόΌύΎΰώΏ')
60
+ end
61
+
62
+ def to_tonos
63
+ return @std_error unless grc?
64
+
65
+ oxia_to_tonos
41
66
  end
42
67
 
43
68
  def acute_to_grave
69
+ return @std_error unless grc?
70
+
44
71
  tr('ἄᾄἅᾅάάᾴἔἕέέἤᾔἥᾕήήῄἴἵίίΐὄὅόόὔὕύύΰΰὤᾤὥᾥώῴ',
45
72
  'ἂᾂἃᾃὰὰᾲἒἓὲὲἢᾒἣᾓὴὴῂἲἳὶὶῒὂὃὸὸὒὓὺὺῢῢὢᾢὣᾣὼῲ')
46
73
  end
47
74
 
48
75
  def grave_to_acute
76
+ return @std_error unless grc?
77
+
49
78
  tr('ἂᾂἃᾃὰὰᾲἒἓὲὲἢᾒἣᾓὴὴῂἲἳὶὶῒὂὃὸὸὒὓὺὺῢῢὢᾢὣᾣὼῲ',
50
79
  'ἄᾄἅᾅάάᾴἔἕέέἤᾔἥᾕήήῄἴἵίίΐὄὅόόὔὕύύΰΰὤᾤὥᾥώῴ')
51
80
  end
@@ -75,6 +104,147 @@ module Grc
75
104
  hash
76
105
  end
77
106
 
107
+ def transliterate
108
+ return @std_error unless grc?
109
+
110
+ hash = {
111
+ ῥ: 'rh',
112
+ ͱ: '',
113
+ Ͳ: '',
114
+ ͳ: '',
115
+ ʹ: '',
116
+ "\u0375": '',
117
+ Ͷ: '',
118
+ ͷ: '',
119
+ ͺ: '',
120
+ ͻ: '',
121
+ ͼ: '',
122
+ ͽ: '',
123
+ Α: 'a',
124
+ Β: 'b',
125
+ Γ: 'g',
126
+ Δ: 'd',
127
+ Ε: 'e',
128
+ Ζ: 'z',
129
+ Η: 'ē',
130
+ Θ: 'th',
131
+ Ι: 'i',
132
+ Κ: 'k',
133
+ Λ: 'l',
134
+ Μ: 'm',
135
+ Ν: 'n',
136
+ Ξ: 'x',
137
+ Ο: 'o',
138
+ Π: 'p',
139
+ Ρ: 'r',
140
+ Σ: 's',
141
+ Τ: 't',
142
+ Υ: 'y',
143
+ Φ: 'ph',
144
+ Χ: 'ch',
145
+ Ψ: 'ps',
146
+ Ω: 'ō',
147
+ α: 'a',
148
+ β: 'b',
149
+ γ: 'g',
150
+ δ: 'd',
151
+ ε: 'e',
152
+ ζ: 'z',
153
+ η: 'ē',
154
+ θ: 'th',
155
+ ι: 'i',
156
+ κ: 'k',
157
+ λ: 'l',
158
+ μ: 'm',
159
+ ν: 'n',
160
+ ξ: 'x',
161
+ ο: 'o',
162
+ π: 'p',
163
+ ρ: 'r',
164
+ ς: 's',
165
+ σ: 's',
166
+ τ: 't',
167
+ υ: 'y',
168
+ φ: 'ph',
169
+ χ: 'ch',
170
+ ψ: 'ps',
171
+ ω: 'ō',
172
+ Ϗ: '',
173
+ ϐ: '',
174
+ ϑ: '',
175
+ ϒ: '',
176
+ ϓ: '',
177
+ ϔ: '',
178
+ ϕ: '',
179
+ ϖ: '',
180
+ ϗ: '',
181
+ Ϙ: '',
182
+ ϙ: '',
183
+ Ϛ: '',
184
+ ϛ: '',
185
+ Ϝ: '',
186
+ ϝ: '',
187
+ Ϟ: '',
188
+ ϟ: '',
189
+ Ϡ: '',
190
+ ϡ: '',
191
+ Ϣ: '',
192
+ ϣ: '',
193
+ Ϥ: '',
194
+ ϥ: '',
195
+ Ϧ: '',
196
+ ϧ: '',
197
+ Ϩ: '',
198
+ ϩ: '',
199
+ Ϫ: '',
200
+ ϫ: '',
201
+ Ϭ: '',
202
+ ϭ: '',
203
+ Ϯ: '',
204
+ ϯ: '',
205
+ ϰ: '',
206
+ ϱ: '',
207
+ ϲ: '',
208
+ ϳ: '',
209
+ ϴ: '',
210
+ ϵ: '',
211
+ "\u03F6": '',
212
+ Ϸ: '',
213
+ ϸ: '',
214
+ Ϲ: '',
215
+ Ϻ: '',
216
+ ϻ: '',
217
+ ϼ: '',
218
+ Ͻ: '',
219
+ Ͼ: '',
220
+ Ͽ: '',
221
+ gg: 'ng',
222
+ gk: 'nk',
223
+ gx: 'nx',
224
+ gc: 'nc',
225
+ "\u{0314}": 'rh',
226
+ rr: 'rrh',
227
+ ay: 'au',
228
+ ey: 'eu',
229
+ ēy: 'ēu',
230
+ oy: 'ou',
231
+ yi: 'ui'
232
+ }
233
+ result = []
234
+ str = self
235
+ str.split.each do |word|
236
+ result << if word.grc?
237
+ the_word = word.gsub(/ῥ/, 'rh')
238
+ the_word = the_word =~ /[ἁἅᾅἃᾃἇᾇᾁἑἕἓἡἥᾕἣᾓἧᾗᾑἱἵἳἷὁὅὃὑὕὓὗὡὥᾥὣᾣὧᾧᾡ]/ ? "h#{the_word.no_diacritics}" : the_word.no_diacritics
239
+ hash.each { |k, v| the_word = the_word.gsub(/#{k}/, v) }
240
+ the_word
241
+ else
242
+ word
243
+ end
244
+ end
245
+ result.join(' ')
246
+ end
247
+
78
248
  def nfc
79
249
  unicode_normalize(:nfc)
80
250
  end
@@ -86,4 +256,4 @@ end
86
256
 
87
257
  class String
88
258
  include Grc
89
- end
259
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bernardo C.D.A. Vasconcelos
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-14 00:00:00.000000000 Z
11
+ date: 2022-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest