grc 0.1.1 → 0.1.3

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.
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