sanscript 0.4.3 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 978f081a49e46e4cade8a7cdef95ebdb89f7daac
4
- data.tar.gz: e46caf2df596e745398a6a5ac86d2c11ed0c666d
3
+ metadata.gz: 348f8d72cc3d76ba760a4225a4f784324294474a
4
+ data.tar.gz: f3a1215ad14dc3778795dc0f6563345aaa3015fe
5
5
  SHA512:
6
- metadata.gz: e0f01c0322755e57c5690799660e810cc7d85271c5b6ef185ce21b13f516c396f1ae8e090529ecbfa8fd8a9bfcce8519f15d4d3291188d6bc1f83279c0b59071
7
- data.tar.gz: f87954bc573383f2ddf530274ef69dbe32e67ab49d3f49e6db90790abafef51e51c8596c22d044ae40b4907921c38fc26182342f0c96008492aec938e56afbc9
6
+ metadata.gz: c8eae2315a8d3a68ce1a873585ab752902287a027a6d45961fef77ad0174d3646d7c7c36107a5879b5b8b36c10afef93428b34098b2ae86dfb6026bb4d644e94
7
+ data.tar.gz: 1997c7bb6d11f4b139eb5cde903bc17bffb786bcad236351100e55248d57945fbd19e7cf83f409af357c4c36d1dfb43fbb5adc5a0c2997e66622ed1576bb1921
data/README.md CHANGED
@@ -25,7 +25,9 @@ Or install it yourself as:
25
25
 
26
26
  ## Usage
27
27
 
28
- You can access detection through `Sanscript.detect(text)` and transliteration through `Sanscript.transliterate(text, from, to)`. Code should be fairly straightforward and partially documented.
28
+ You can access detection through `Sanscript.detect(text)` and transliteration through `Sanscript.transliterate(text, from, to)`.
29
+
30
+ Documentation is provided in YARD format and available online at [rubydoc.info](http://www.rubydoc.info/github/ubcsanskrit/sanscript.rb).
29
31
 
30
32
  ## Development
31
33
 
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
+ require "ragabash"
3
+
2
4
  require "sanscript/version"
5
+ require "sanscript/exceptions"
3
6
  require "sanscript/detect"
4
7
  require "sanscript/transliterate"
5
8
  require "sanscript/benchmark"
@@ -21,23 +24,35 @@ module Sanscript
21
24
  #
22
25
  # @overload transliterate(text, from, to, **opts)
23
26
  # @param text [String] the String to transliterate
24
- # @param from [Symbol] the name of the scheme to transliterate from
27
+ # @param from [Symbol, nil] the name of the scheme to transliterate from, or Nil to detect
25
28
  # @param to [Symbol] the name of the scheme to transliterate to
29
+ # @option opts [Symbol] :default_scheme a default scheme to fall-back to if detection fails
26
30
  # @option opts [Boolean] :skip_sgml (false) escape SGML-style tags in text string
27
31
  # @option opts [Boolean] :syncope (false) activate Hindi-style schwa syncope
28
32
  # @return [String] the transliterated String
29
33
  #
34
+ # @raise [DetectionError] if scheme detection and fallback fail
35
+ # @raise [SchemeNotSupportedError] if a provided transliteration scheme is not supported
36
+ #
30
37
  # @overload transliterate(text, to, **opts)
31
38
  # @param text [String] the String to transliterate
32
39
  # @param to [Symbol] the name of the scheme to transliterate to
33
40
  # @option opts [Symbol] :default_scheme a default scheme to fall-back to if detection fails
34
41
  # @option opts [Boolean] :skip_sgml (false) escape SGML-style tags in text string
35
42
  # @option opts [Boolean] :syncope (false) activate Hindi-style schwa syncope
36
- # @return [String, nil] the transliterated String, or nil if detection and fallback fail
43
+ # @return [String] the transliterated String
44
+ #
45
+ # @raise [DetectionError] if scheme detection and fallback fail
46
+ # @raise [SchemeNotSupportedError] if a provided transliteration scheme is not supported
47
+ #
37
48
  def transliterate(text, from, to = nil, **opts)
38
49
  if to.nil?
39
50
  to = from
40
- from = Detect.detect_scheme(text) || opts[:default_scheme] || return
51
+ from = nil
52
+ end
53
+ if from.nil?
54
+ from = Detect.detect_scheme(text) || opts[:default_scheme] ||
55
+ raise(DetectionError, "String detection and fallback failed.")
41
56
  end
42
57
  Transliterate.transliterate(text, from, to, opts)
43
58
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ #:nocov:
2
3
 
3
- require "sanscript/refinements"
4
4
  begin
5
5
  require "benchmark/ips"
6
6
  rescue LoadError
@@ -12,18 +12,17 @@ rescue LoadError
12
12
  end
13
13
 
14
14
  module Sanscript
15
- using Refinements
16
15
  # Benchmark/testing module.
17
16
  module Benchmark
18
17
  module_function
19
18
 
20
19
  # Runs benchmark-ips test on detection methods.
21
20
  def detect!
22
- iast_string = "nānāśāstrasubhāṣitāmṛtarasaiḥ śrotrotsavaṃ kurvatāṃ yeṣāṃ yānti dināni paṇḍitajanavyāyāmakhinnātmanām teṣāṃ janma ca jīvitaṃ ca sukṛtaṃ tair eva bhūr bhūṣitā śeṣaih kiṃ paśuvad vivekarahitair bhūbhārabhūtair naraḥ"
23
21
  deva_string = "नानाशास्त्रसुभाषितामृतरसैः श्रोत्रोत्सवं कुर्वतां येषां यान्ति दिनानि पण्डितजनव्यायामखिन्नात्मनाम् तेषां जन्म च जीवितं च सुकृतं तैर् एव भूर् भूषिता शेषैह् किं पशुवद् विवेकरहितैर् भूभारभूतैर् नरः"
22
+ malayalam_string = "നാനാശാസ്ത്രസുഭാഷിതാമൃതരസൈഃ ശ്രോത്രോത്സവം കുര്വതാം യേഷാം യാന്തി ദിനാനി പണ്ഡിതജനവ്യായാമഖിന്നാത്മനാമ് തേഷാം ജന്മ ച ജീവിതം ച സുകൃതം തൈര് ഏവ ഭൂര് ഭൂഷിതാ ശേഷൈഹ് കിം പശുവദ് വിവേകരഹിതൈര് ഭൂഭാരഭൂതൈര് നരഃ"
23
+ iast_string = "nānāśāstrasubhāṣitāmṛtarasaiḥ śrotrotsavaṃ kurvatāṃ yeṣāṃ yānti dināni paṇḍitajanavyāyāmakhinnātmanām teṣāṃ janma ca jīvitaṃ ca sukṛtaṃ tair eva bhūr bhūṣitā śeṣaih kiṃ paśuvad vivekarahitair bhūbhārabhūtair naraḥ"
24
24
  slp1_string = "nAnASAstrasuBAzitAmftarasEH SrotrotsavaM kurvatAM yezAM yAnti dinAni paRqitajanavyAyAmaKinnAtmanAm tezAM janma ca jIvitaM ca sukftaM tEr eva BUr BUzitA SezEh kiM paSuvad vivekarahitEr BUBAraBUtEr naraH"
25
25
  hk_string = "nAnAzAstrasubhASitAmRtarasaiH zrotrotsavaM kurvatAM yeSAM yAnti dinAni paNDitajanavyAyAmakhinnAtmanAm teSAM janma ca jIvitaM ca sukRtaM tair eva bhUr bhUSitA zeSaih kiM pazuvad vivekarahitair bhUbhArabhUtair naraH"
26
- malayalam_string = "അ ആ ഇ ഈ ഉ ഊ ഋ ൠ ഌ ൡ എ ഏ ഐ ഒ ഓ ഔ"
27
26
 
28
27
  ::Benchmark.ips do |x|
29
28
  x.config(time: 5, warmup: 1)
@@ -47,32 +46,61 @@ module Sanscript
47
46
  true
48
47
  end
49
48
 
50
- # Runs benchmark-ips test on transliteration methods.
51
- def transliterate!
49
+ # Runs benchmark-ips test on roman-source transliteration methods.
50
+ def transliterate_roman!
52
51
  iast_string = "nānāśāstrasubhāṣitāmṛtarasaiḥ śrotrotsavaṃ kurvatāṃ yeṣāṃ yānti dināni paṇḍitajanavyāyāmakhinnātmanām teṣāṃ janma ca jīvitaṃ ca sukṛtaṃ tair eva bhūr bhūṣitā śeṣaih kiṃ paśuvad vivekarahitair bhūbhārabhūtair naraḥ"
53
- deva_string = "नानाशास्त्रसुभाषितामृतरसैः श्रोत्रोत्सवं कुर्वतां येषां यान्ति दिनानि पण्डितजनव्यायामखिन्नात्मनाम् तेषां जन्म च जीवितं च सुकृतं तैर् एव भूर् भूषिता शेषैह् किं पशुवद् विवेकरहितैर् भूभारभूतैर् नरः"
54
52
  slp1_string = "nAnASAstrasuBAzitAmftarasEH SrotrotsavaM kurvatAM yezAM yAnti dinAni paRqitajanavyAyAmaKinnAtmanAm tezAM janma ca jIvitaM ca sukftaM tEr eva BUr BUzitA SezEh kiM paSuvad vivekarahitEr BUBAraBUtEr naraH"
53
+ hk_string = "nAnAzAstrasubhASitAmRtarasaiH zrotrotsavaM kurvatAM yeSAM yAnti dinAni paNDitajanavyAyAmakhinnAtmanAm teSAM janma ca jIvitaM ca sukRtaM tair eva bhUr bhUSitA zeSaih kiM pazuvad vivekarahitair bhUbhArabhUtair naraH"
55
54
 
56
55
  ::Benchmark.ips do |x|
57
- x.config(time: 5, warmup: 2)
56
+ x.config(time: 3, warmup: 2)
58
57
 
59
58
  x.report("IAST==>Devanagari") do
60
- raise unless Sanscript.transliterate(iast_string, :iast, :devanagari) == deva_string
59
+ Sanscript.transliterate(iast_string, :iast, :devanagari)
60
+ end
61
+ x.report("IAST==>SLP1") do
62
+ Sanscript.transliterate(iast_string, :iast, :slp1)
61
63
  end
62
64
  x.report("IAST==>SLP1") do
63
- raise unless Sanscript.transliterate(iast_string, :iast, :slp1) == slp1_string
65
+ Sanscript.transliterate(iast_string, :iast, :hk)
64
66
  end
65
67
  x.report("SLP1==>Devanagari") do
66
- raise unless Sanscript.transliterate(slp1_string, :slp1, :devanagari) == deva_string
68
+ Sanscript.transliterate(slp1_string, :slp1, :devanagari)
67
69
  end
68
70
  x.report("SLP1==>IAST") do
69
- raise unless Sanscript.transliterate(slp1_string, :slp1, :iast) == iast_string
71
+ Sanscript.transliterate(slp1_string, :slp1, :iast)
70
72
  end
71
- x.report("Devanagari==>SLP1") do
72
- raise unless Sanscript.transliterate(deva_string, :devanagari, :slp1) == slp1_string
73
+ x.report("SLP1==>HK") do
74
+ Sanscript.transliterate(slp1_string, :slp1, :hk)
75
+ end
76
+ x.report("HK==>Devanagari") do
77
+ Sanscript.transliterate(hk_string, :hk, :devanagari)
73
78
  end
79
+ x.report("HK==>IAST") do
80
+ Sanscript.transliterate(hk_string, :hk, :iast)
81
+ end
82
+ x.report("HK==>SLP1") do
83
+ Sanscript.transliterate(hk_string, :hk, :slp1)
84
+ end
85
+ x.compare!
86
+ end
87
+ true
88
+ end
89
+
90
+ # Runs benchmark-ips test on brahmic-source transliteration methods.
91
+ def transliterate_brahmic!
92
+ deva_string = "नानाशास्त्रसुभाषितामृतरसैः श्रोत्रोत्सवं कुर्वतां येषां यान्ति दिनानि पण्डितजनव्यायामखिन्नात्मनाम् तेषां जन्म च जीवितं च सुकृतं तैर् एव भूर् भूषिता शेषैह् किं पशुवद् विवेकरहितैर् भूभारभूतैर् नरः"
93
+
94
+ ::Benchmark.ips do |x|
95
+ x.config(time: 5, warmup: 2)
74
96
  x.report("Devanagari==>IAST") do
75
- raise unless Sanscript.transliterate(deva_string, :devanagari, :iast) == iast_string
97
+ Sanscript.transliterate(deva_string, :devanagari, :iast)
98
+ end
99
+ x.report("Devanagari==>SLP1") do
100
+ Sanscript.transliterate(deva_string, :devanagari, :slp1)
101
+ end
102
+ x.report("Devanagari==>HK") do
103
+ Sanscript.transliterate(deva_string, :devanagari, :hk)
76
104
  end
77
105
  x.compare!
78
106
  end
@@ -61,6 +61,7 @@ module Sanscript
61
61
  # @return [Symbol, nil] the Symbol of the scheme, or nil if no match
62
62
 
63
63
  # @!visibility private
64
+ # :nocov:
64
65
  if Regexp.method_defined?(:match?)
65
66
  require "sanscript/detect/ruby24"
66
67
  extend Ruby24
@@ -68,5 +69,6 @@ module Sanscript
68
69
  require "sanscript/detect/ruby2x"
69
70
  extend Ruby2x
70
71
  end
72
+ # :nocov:
71
73
  end
72
74
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sanscript
4
+ using ::Ragabash::Refinements
5
+ # Error for when transliteration scheme is not supported.
6
+ class SchemeNotSupportedError < StandardError
7
+ def initialize(scheme = :unknown)
8
+ super(":#{scheme} is not supported.")
9
+ end
10
+ end
11
+
12
+ # Error for when scheme detection should non-silently fail
13
+ # (such as inside a transliteration method).
14
+ class DetectionError < StandardError
15
+ def initialize(message = "String detection failed.")
16
+ super
17
+ end
18
+ end
19
+ end
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "sanscript/refinements"
4
3
  require "sanscript/transliterate/schemes"
5
4
  module Sanscript
6
- using Refinements
5
+ using ::Ragabash::Refinements
7
6
  # Sanskrit transliteration module.
8
7
  # Derived from Sanscript (https://github.com/sanskrit/sanscript.js), which is
9
8
  # released under the MIT and GPL Licenses.
@@ -144,8 +143,8 @@ module Sanscript
144
143
  from = from.to_sym
145
144
  to = to.to_sym
146
145
  return data if from == to
147
- raise "Scheme not known ':#{from}'" unless @schemes.key?(from)
148
- raise "Scheme not known ':#{to}'" unless @schemes.key?(to)
146
+ raise SchemeNotSupportedError, from unless @schemes.key?(from)
147
+ raise SchemeNotSupportedError, to unless @schemes.key?(to)
149
148
 
150
149
  data = data.to_str.dup
151
150
  options = @defaults.merge(opts)
@@ -229,39 +228,40 @@ module Sanscript
229
228
  # @param map [Hash] map data generated from {#make_map}
230
229
  # @return [String] the transliterated string
231
230
  def transliterate_roman(data, map, options = {})
232
- data = data.to_str.dup
231
+ data = data.to_str.chars
233
232
  buf = []
234
- token_buffer = String.new
233
+ token_buffer = []
235
234
  had_consonant = false
236
235
  transliteration_enabled = true
237
236
  control_char = false
237
+ max_token_length = map[:max_token_length]
238
238
 
239
239
  until data.empty? && token_buffer.empty?
240
- token_buffer << data.slice!(0, map[:max_token_length] - token_buffer.length)
241
-
242
240
  # Match all token substrings to our map.
243
- map[:max_token_length].downto(1) do |j|
244
- token = token_buffer[0, j]
245
-
246
- if !control_char && token == "##"
247
- transliteration_enabled = !transliteration_enabled
248
- token_buffer.slice!(0, 2)
249
- break
250
- elsif control_char && token == "#}"
251
- transliteration_enabled = true
252
- control_char = false
253
- buf << token
254
- token_buffer.slice!(0, 2)
255
- break
256
- elsif transliteration_enabled && token == "{#"
257
- transliteration_enabled = false
258
- control_char = true
259
- buf << token
260
- token_buffer.slice!(0, 2)
261
- break
241
+ token = data[0, max_token_length].join("")
242
+ max_token_length.downto(1) do |j|
243
+ token = token[0, j] unless j == max_token_length
244
+ if j == 2
245
+ if !control_char && token == "##"
246
+ transliteration_enabled = !transliteration_enabled
247
+ data.shift(2)
248
+ break
249
+ elsif control_char && token == "#}"
250
+ transliteration_enabled = true
251
+ control_char = false
252
+ buf << token
253
+ data.shift(2)
254
+ break
255
+ elsif transliteration_enabled && token == "{#"
256
+ transliteration_enabled = false
257
+ control_char = true
258
+ buf << token
259
+ data.shift(2)
260
+ break
261
+ end
262
262
  end
263
- temp_letter = map[:letters][token]
264
- if !temp_letter.nil? && transliteration_enabled
263
+
264
+ if transliteration_enabled && (temp_letter = map[:letters][token])
265
265
  if map[:to_roman?]
266
266
  buf << temp_letter
267
267
  else
@@ -269,18 +269,19 @@ module Sanscript
269
269
  # vowels to appear as marks if we've just seen a
270
270
  # consonant.
271
271
  if had_consonant
272
- temp_mark = map[:marks][token]
273
- if !temp_mark.nil?
272
+ # rubocop:disable Metrics/BlockNesting
273
+ if (temp_mark = map[:marks][token])
274
274
  buf << temp_mark
275
275
  elsif token != "a"
276
- buf << map[:virama] << temp_letter
276
+ buf.push(map[:virama], temp_letter)
277
277
  end
278
+ # rubocop:enable Metrics/BlockNesting
278
279
  else
279
280
  buf << temp_letter
280
281
  end
281
282
  had_consonant = map[:consonants].key?(token)
282
283
  end
283
- token_buffer.slice!(0, j)
284
+ j > 1 ? data.shift(j) : data.shift
284
285
  break
285
286
  elsif j == 1 # Last iteration
286
287
  if had_consonant
@@ -288,7 +289,7 @@ module Sanscript
288
289
  buf << map[:virama] unless options[:syncope]
289
290
  end
290
291
  buf << token
291
- token_buffer.slice!(0, 1)
292
+ data.shift
292
293
  end
293
294
  end
294
295
  end
@@ -302,27 +303,27 @@ module Sanscript
302
303
  # @param map [Hash] map data generated from {#make_map}
303
304
  # @return [String] the transliterated string
304
305
  def transliterate_brahmic(data, map)
305
- data = data.to_str.dup
306
+ data = data.to_str.chars
306
307
  buf = []
307
308
  had_roman_consonant = false
308
309
  transliteration_enabled = true
309
310
  control_char = false
310
311
 
311
312
  until data.empty?
312
- token = data.slice(0, 2)
313
+ token = data[0, 2].join("")
313
314
  if !control_char && token == "##"
314
315
  if had_roman_consonant
315
316
  buf << "a" if transliteration_enabled
316
317
  had_roman_consonant = false
317
318
  end
318
319
  transliteration_enabled = !transliteration_enabled
319
- data.slice!(0, 2)
320
+ data.shift(2)
320
321
  next
321
322
  elsif control_char && token == "#}"
322
323
  transliteration_enabled = true
323
324
  control_char = false
324
325
  buf << token
325
- data.slice!(0, 2)
326
+ data.shift(2)
326
327
  next
327
328
  elsif transliteration_enabled && token == "{#"
328
329
  if had_roman_consonant
@@ -332,11 +333,11 @@ module Sanscript
332
333
  transliteration_enabled = false
333
334
  control_char = true
334
335
  buf << token
335
- data.slice!(0, 2)
336
+ data.shift(2)
336
337
  next
337
338
  end
338
339
 
339
- l = data.slice!(0, 1)
340
+ l = data.shift
340
341
  unless transliteration_enabled
341
342
  buf << l
342
343
  next
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
- require "sanscript/refinements"
3
2
 
4
3
  module Sanscript
5
- using Refinements
4
+ using ::Ragabash::Refinements
6
5
  module Transliterate
7
6
  # Schemes
8
7
  # =======
@@ -25,13 +24,13 @@ module Sanscript
25
24
  # 'va' and 'ba' are both rendered as ব.
26
25
  #
27
26
  bengali: {
28
- vowels: "অ আ ই ঈ উ ঊ ঋ ৠ ঌ ৡ এ ঐ ও ঔ".w_split,
29
- vowel_marks: "া ি ী ু ূ ৃ ৄ ৢ ৣ ে ৈ ো ৌ".w_split,
30
- other_marks: "ং ঃ ঁ".w_split,
27
+ vowels: "অ আ ই ঈ উ ঊ ঋ ৠ ঌ ৡ এ ঐ ও ঔ".split(/\s/),
28
+ vowel_marks: "া ি ী ু ূ ৃ ৄ ৢ ৣ ে ৈ ো ৌ".split(/\s/),
29
+ other_marks: "ং ঃ ঁ".split(/\s/),
31
30
  virama: ["্"],
32
- consonants: "ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ল ব শ ষ স হ ळ ক্ষ জ্ঞ".w_split,
33
- symbols: "০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯ ॐ ঽ । ॥".w_split,
34
- other: " ড ঢ য ".w_split,
31
+ consonants: "ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ ম য র ল ব শ ষ স হ ळ ক্ষ জ্ঞ".split(/\s/),
32
+ symbols: "০ ১ ২ ৩ ৪ ৫ ৬ ৭ ৮ ৯ ॐ ঽ । ॥".split(/\s/),
33
+ other: " ড ঢ য ".split(/\s/),
35
34
  },
36
35
 
37
36
  # Devanagari
@@ -41,15 +40,15 @@ module Sanscript
41
40
  devanagari: {
42
41
  # "Independent" forms of the vowels. These are used whenever the
43
42
  # vowel does not immediately follow a consonant.
44
- vowels: "अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ऎ ए ऐ ऒ ओ औ".w_split,
43
+ vowels: "अ आ इ ई उ ऊ ऋ ॠ ऌ ॡ ऎ ए ऐ ऒ ओ औ".split(/\s/),
45
44
 
46
45
  # "Dependent" forms of the vowels. These are used whenever the
47
46
  # vowel immediately follows a consonant. If a letter is not
48
47
  # listed in `vowels`, it should not be listed here.
49
- vowel_marks: "ा ि ी ु ू ृ ॄ ॢ ॣ ॆ े ै ॊ ो ौ".w_split,
48
+ vowel_marks: "ा ि ी ु ू ृ ॄ ॢ ॣ ॆ े ै ॊ ो ौ".split(/\s/),
50
49
 
51
50
  # Miscellaneous marks, all of which are used in Sanskrit.
52
- other_marks: "ं ः ँ".w_split,
51
+ other_marks: "ं ः ँ".split(/\s/),
53
52
 
54
53
  # In syllabic scripts like Devanagari, consonants have an inherent
55
54
  # vowel that must be suppressed explicitly. We do so by putting a
@@ -58,10 +57,10 @@ module Sanscript
58
57
 
59
58
  # Various Sanskrit consonants and consonant clusters. Every token
60
59
  # here has an explicit vowel. Thus "क" is "ka" instead of "k".
61
- consonants: "क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ क्ष ज्ञ".w_split,
60
+ consonants: "क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ क्ष ज्ञ".split(/\s/),
62
61
 
63
62
  # Numbers and punctuation
64
- symbols: "० १ २ ३ ४ ५ ६ ७ ८ ९ ॐ ऽ । ॥".w_split,
63
+ symbols: "० १ २ ३ ४ ५ ६ ७ ८ ९ ॐ ऽ । ॥".split(/\s/),
65
64
 
66
65
  # Zero-width joiner. This is used to separate a consonant cluster
67
66
  # and avoid a complex ligature.
@@ -76,12 +75,12 @@ module Sanscript
76
75
 
77
76
  # Accent combined with anusvara and and visarga. For compatibility
78
77
  # with ITRANS, which allows the reverse of these four.
79
- combo_accent: "ः॑ ः॒ ं॑ ं॒".w_split,
78
+ combo_accent: "ः॑ ः॒ ं॑ ं॒".split(/\s/),
80
79
 
81
80
  candra: ["ॅ"],
82
81
 
83
82
  # Non-Sanskrit consonants
84
- other: "क़ ख़ ग़ ज़ ड़ ढ़ फ़ य़ ऱ".w_split,
83
+ other: "क़ ख़ ग़ ज़ ड़ ढ़ फ़ य़ ऱ".split(/\s/),
85
84
  },
86
85
 
87
86
  # Gujarati
@@ -89,12 +88,12 @@ module Sanscript
89
88
  # Sanskrit-complete.
90
89
  #
91
90
  gujarati: {
92
- vowels: "અ આ ઇ ઈ ઉ ઊ ઋ ૠ ઌ ૡ એ ઐ ઓ ઔ".w_split,
93
- vowel_marks: "ા િ ી ુ ૂ ૃ ૄ ૢ ૣ ે ૈ ો ૌ".w_split,
94
- other_marks: "ં ઃ ઁ".w_split,
91
+ vowels: "અ આ ઇ ઈ ઉ ઊ ઋ ૠ ઌ ૡ એ ઐ ઓ ઔ".split(/\s/),
92
+ vowel_marks: "ા િ ી ુ ૂ ૃ ૄ ૢ ૣ ે ૈ ો ૌ".split(/\s/),
93
+ other_marks: "ં ઃ ઁ".split(/\s/),
95
94
  virama: ["્"],
96
- consonants: "ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ ક્ષ જ્ઞ".w_split,
97
- symbols: "૦ ૧ ૨ ૩ ૪ ૫ ૬ ૭ ૮ ૯ ૐ ઽ ૤ ૥".w_split,
95
+ consonants: "ક ખ ગ ઘ ઙ ચ છ જ ઝ ઞ ટ ઠ ડ ઢ ણ ત થ દ ધ ન પ ફ બ ભ મ ય ર લ વ શ ષ સ હ ળ ક્ષ જ્ઞ".split(/\s/),
96
+ symbols: "૦ ૧ ૨ ૩ ૪ ૫ ૬ ૭ ૮ ૯ ૐ ઽ ૤ ૥".split(/\s/),
98
97
  candra: ["ૅ"],
99
98
  },
100
99
 
@@ -103,13 +102,13 @@ module Sanscript
103
102
  # Missing R/RR/lR/lRR
104
103
  #
105
104
  gurmukhi: {
106
- vowels: "ਅ ਆ ਇ ਈ ਉ ਊ ਏ ਐ ਓ ਔ".w_split,
107
- vowel_marks: "ਾ ਿ ੀ ੁ ੂ ੇ ੈ ੋ ੌ".w_split,
108
- other_marks: "ਂ ਃ ਁ".w_split,
105
+ vowels: "ਅ ਆ ਇ ਈ ਉ ਊ ਏ ਐ ਓ ਔ".split(/\s/),
106
+ vowel_marks: "ਾ ਿ ੀ ੁ ੂ ੇ ੈ ੋ ੌ".split(/\s/),
107
+ other_marks: "ਂ ਃ ਁ".split(/\s/),
109
108
  virama: ["੍"],
110
- consonants: "ਕ ਖ ਗ ਘ ਙ ਚ ਛ ਜ ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ ਬ ਭ ਮ ਯ ਰ ਲ ਵ ਸ਼ ਸ਼ ਸ ਹ ਲ਼ ਕ੍ਸ਼ ਜ੍ਞ".w_split,
111
- symbols: "੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ॐ ऽ । ॥".w_split,
112
- other: " ਖ ਗ ਜ ਡ ਫ ".w_split,
109
+ consonants: "ਕ ਖ ਗ ਘ ਙ ਚ ਛ ਜ ਝ ਞ ਟ ਠ ਡ ਢ ਣ ਤ ਥ ਦ ਧ ਨ ਪ ਫ ਬ ਭ ਮ ਯ ਰ ਲ ਵ ਸ਼ ਸ਼ ਸ ਹ ਲ਼ ਕ੍ਸ਼ ਜ੍ਞ".split(/\s/),
110
+ symbols: "੦ ੧ ੨ ੩ ੪ ੫ ੬ ੭ ੮ ੯ ॐ ऽ । ॥".split(/\s/),
111
+ other: " ਖ ਗ ਜ ਡ ਫ ".split(/\s/),
113
112
  },
114
113
 
115
114
  # Kannada
@@ -117,13 +116,13 @@ module Sanscript
117
116
  # Sanskrit-complete.
118
117
  #
119
118
  kannada: {
120
- vowels: "ಅ ಆ ಇ ಈ ಉ ಊ ಋ ೠ ಌ ೡ ಎ ಏ ಐ ಒ ಓ ಔ".w_split,
121
- vowel_marks: "ಾ ಿ ೀ ು ೂ ೃ ೄ ೢ ೣ ೆ ೇ ೈ ೊ ೋ ೌ".w_split,
122
- other_marks: "ಂ ಃ ँ".w_split,
119
+ vowels: "ಅ ಆ ಇ ಈ ಉ ಊ ಋ ೠ ಌ ೡ ಎ ಏ ಐ ಒ ಓ ಔ".split(/\s/),
120
+ vowel_marks: "ಾ ಿ ೀ ು ೂ ೃ ೄ ೢ ೣ ೆ ೇ ೈ ೊ ೋ ೌ".split(/\s/),
121
+ other_marks: "ಂ ಃ ँ".split(/\s/),
123
122
  virama: ["್"],
124
- consonants: "ಕ ಖ ಗ ಘ ಙ ಚ ಛ ಜ ಝ ಞ ಟ ಠ ಡ ಢ ಣ ತ ಥ ದ ಧ ನ ಪ ಫ ಬ ಭ ಮ ಯ ರ ಲ ವ ಶ ಷ ಸ ಹ ಳ ಕ್ಷ ಜ್ಞ".w_split,
125
- symbols: "೦ ೧ ೨ ೩ ೪ ೫ ೬ ೭ ೮ ೯ ಓಂ ಽ । ॥".w_split,
126
- other: " ಫ ಱ".w_split,
123
+ consonants: "ಕ ಖ ಗ ಘ ಙ ಚ ಛ ಜ ಝ ಞ ಟ ಠ ಡ ಢ ಣ ತ ಥ ದ ಧ ನ ಪ ಫ ಬ ಭ ಮ ಯ ರ ಲ ವ ಶ ಷ ಸ ಹ ಳ ಕ್ಷ ಜ್ಞ".split(/\s/),
124
+ symbols: "೦ ೧ ೨ ೩ ೪ ೫ ೬ ೭ ೮ ೯ ಓಂ ಽ । ॥".split(/\s/),
125
+ other: " ಫ ಱ".split(/\s/),
127
126
  },
128
127
 
129
128
  # Malayalam
@@ -131,13 +130,13 @@ module Sanscript
131
130
  # Sanskrit-complete.
132
131
  #
133
132
  malayalam: {
134
- vowels: "അ ആ ഇ ഈ ഉ ഊ ഋ ൠ ഌ ൡ എ ഏ ഐ ഒ ഓ ഔ".w_split,
135
- vowel_marks: "ാ ി ീ ു ൂ ൃ ൄ ൢ ൣ െ േ ൈ ൊ ോ ൌ".w_split,
136
- other_marks: "ം ഃ ँ".w_split,
133
+ vowels: "അ ആ ഇ ഈ ഉ ഊ ഋ ൠ ഌ ൡ എ ഏ ഐ ഒ ഓ ഔ".split(/\s/),
134
+ vowel_marks: "ാ ി ീ ു ൂ ൃ ൄ ൢ ൣ െ േ ൈ ൊ ോ ൌ".split(/\s/),
135
+ other_marks: "ം ഃ ँ".split(/\s/),
137
136
  virama: ["്"],
138
- consonants: "ക ഖ ഗ ഘ ങ ച ഛ ജ ഝ ഞ ട ഠ ഡ ഢ ണ ത ഥ ദ ധ ന പ ഫ ബ ഭ മ യ ര ല വ ശ ഷ സ ഹ ള ക്ഷ ജ്ഞ".w_split,
139
- symbols: "൦ ൧ ൨ ൩ ൪ ൫ ൬ ൭ ൮ ൯ ഓം ഽ । ॥".w_split,
140
- other: " റ".w_split,
137
+ consonants: "ക ഖ ഗ ഘ ങ ച ഛ ജ ഝ ഞ ട ഠ ഡ ഢ ണ ത ഥ ദ ധ ന പ ഫ ബ ഭ മ യ ര ല വ ശ ഷ സ ഹ ള ക്ഷ ജ്ഞ".split(/\s/),
138
+ symbols: "൦ ൧ ൨ ൩ ൪ ൫ ൬ ൭ ൮ ൯ ഓം ഽ । ॥".split(/\s/),
139
+ other: " റ".split(/\s/),
141
140
  },
142
141
 
143
142
  # Oriya
@@ -145,13 +144,13 @@ module Sanscript
145
144
  # Sanskrit-complete.
146
145
  #
147
146
  oriya: {
148
- vowels: "ଅ ଆ ଇ ଈ ଉ ଊ ଋ ୠ ଌ ୡ ଏ ଐ ଓ ଔ".w_split,
149
- vowel_marks: "ା ି ୀ ୁ ୂ ୃ ୄ ୢ ୣ େ ୈ ୋ ୌ".w_split,
150
- other_marks: "ଂ ଃ ଁ".w_split,
147
+ vowels: "ଅ ଆ ଇ ଈ ଉ ଊ ଋ ୠ ଌ ୡ ଏ ଐ ଓ ଔ".split(/\s/),
148
+ vowel_marks: "ା ି ୀ ୁ ୂ ୃ ୄ ୢ ୣ େ ୈ ୋ ୌ".split(/\s/),
149
+ other_marks: "ଂ ଃ ଁ".split(/\s/),
151
150
  virama: ["୍"],
152
- consonants: "କ ଖ ଗ ଘ ଙ ଚ ଛ ଜ ଝ ଞ ଟ ଠ ଡ ଢ ଣ ତ ଥ ଦ ଧ ନ ପ ଫ ବ ଭ ମ ଯ ର ଲ ଵ ଶ ଷ ସ ହ ଳ କ୍ଷ ଜ୍ଞ".w_split,
153
- symbols: "୦ ୧ ୨ ୩ ୪ ୫ ୬ ୭ ୮ ୯ ଓଂ ଽ । ॥".w_split,
154
- other: " ଡ ଢ ଯ ".w_split,
151
+ consonants: "କ ଖ ଗ ଘ ଙ ଚ ଛ ଜ ଝ ଞ ଟ ଠ ଡ ଢ ଣ ତ ଥ ଦ ଧ ନ ପ ଫ ବ ଭ ମ ଯ ର ଲ ଵ ଶ ଷ ସ ହ ଳ କ୍ଷ ଜ୍ଞ".split(/\s/),
152
+ symbols: "୦ ୧ ୨ ୩ ୪ ୫ ୬ ୭ ୮ ୯ ଓଂ ଽ । ॥".split(/\s/),
153
+ other: " ଡ ଢ ଯ ".split(/\s/),
155
154
  },
156
155
 
157
156
  # Tamil
@@ -160,13 +159,13 @@ module Sanscript
160
159
  # The most incomplete of the Sanskrit schemes here.
161
160
  #
162
161
  tamil: {
163
- vowels: "அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ".w_split,
164
- vowel_marks: "ா ி ீ ு ூ ெ ே ை ொ ோ ௌ".w_split,
165
- other_marks: "ஂ ஃ ".w_split,
162
+ vowels: "அ ஆ இ ஈ உ ஊ எ ஏ ஐ ஒ ஓ ஔ".split(/\s/),
163
+ vowel_marks: "ா ி ீ ு ூ ெ ே ை ொ ோ ௌ".split(/\s/),
164
+ other_marks: "ஂ ஃ ".split(/\s/),
166
165
  virama: ["்"],
167
- consonants: "க க க க ங ச ச ஜ ச ஞ ட ட ட ட ண த த த த ந ப ப ப ப ம ய ர ல வ ஶ ஷ ஸ ஹ ள க்ஷ ஜ்ஞ".w_split,
168
- symbols: "௦ ௧ ௨ ௩ ௪ ௫ ௬ ௭ ௮ ௯ ௐ ऽ । ॥".w_split,
169
- other: " ற".w_split,
166
+ consonants: "க க க க ங ச ச ஜ ச ஞ ட ட ட ட ண த த த த ந ப ப ப ப ம ய ர ல வ ஶ ஷ ஸ ஹ ள க்ஷ ஜ்ஞ".split(/\s/),
167
+ symbols: "௦ ௧ ௨ ௩ ௪ ௫ ௬ ௭ ௮ ௯ ௐ ऽ । ॥".split(/\s/),
168
+ other: " ற".split(/\s/),
170
169
  },
171
170
 
172
171
  # Telugu
@@ -174,13 +173,13 @@ module Sanscript
174
173
  # Sanskrit-complete.
175
174
  #
176
175
  telugu: {
177
- vowels: "అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఌ ౡ ఎ ఏ ఐ ఒ ఓ ఔ".w_split,
178
- vowel_marks: "ా ి ీ ు ూ ృ ౄ ౢ ౣ ె ే ై ొ ో ౌ".w_split,
179
- other_marks: "ం ః ఁ".w_split,
176
+ vowels: "అ ఆ ఇ ఈ ఉ ఊ ఋ ౠ ఌ ౡ ఎ ఏ ఐ ఒ ఓ ఔ".split(/\s/),
177
+ vowel_marks: "ా ి ీ ు ూ ృ ౄ ౢ ౣ ె ే ై ొ ో ౌ".split(/\s/),
178
+ other_marks: "ం ః ఁ".split(/\s/),
180
179
  virama: ["్"],
181
- consonants: "క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ల వ శ ష స హ ళ క్ష జ్ఞ".w_split,
182
- symbols: "౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯ ఓం ఽ । ॥".w_split,
183
- other: " ఱ".w_split,
180
+ consonants: "క ఖ గ ఘ ఙ చ ఛ జ ఝ ఞ ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ల వ శ ష స హ ళ క్ష జ్ఞ".split(/\s/),
181
+ symbols: "౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭ ౮ ౯ ఓం ఽ । ॥".split(/\s/),
182
+ other: " ఱ".split(/\s/),
184
183
  },
185
184
 
186
185
  # International Alphabet of Sanskrit Transliteration
@@ -188,11 +187,11 @@ module Sanscript
188
187
  # The most "professional" Sanskrit romanization scheme.
189
188
  #
190
189
  iast: {
191
- vowels: "a ā i ī u ū ṛ ṝ ḷ ḹ e ai o au".w_split,
190
+ vowels: "a ā i ī u ū ṛ ṝ ḷ ḹ e ai o au".split(/\s/),
192
191
  other_marks: ["ṃ", "ḥ", "~"],
193
192
  virama: [""],
194
- consonants: "k kh g gh ṅ c ch j jh ñ ṭ ṭh ḍ ḍh ṇ t th d dh n p ph b bh m y r l v ś ṣ s h ḻ kṣ jñ".w_split,
195
- symbols: "0 1 2 3 4 5 6 7 8 9 oṃ ' | ||".w_split,
193
+ consonants: "k kh g gh ṅ c ch j jh ñ ṭ ṭh ḍ ḍh ṇ t th d dh n p ph b bh m y r l v ś ṣ s h ḻ kṣ jñ".split(/\s/),
194
+ symbols: "0 1 2 3 4 5 6 7 8 9 oṃ ' | ||".split(/\s/),
196
195
  },
197
196
 
198
197
  # ITRANS
@@ -204,17 +203,17 @@ module Sanscript
204
203
  # '_' is a "null" letter, which allows adjacent vowels.
205
204
  #
206
205
  itrans: {
207
- vowels: "a A i I u U RRi RRI LLi LLI e ai o au".w_split,
206
+ vowels: "a A i I u U RRi RRI LLi LLI e ai o au".split(/\s/),
208
207
  other_marks: ["M", "H", ".N"],
209
208
  virama: [""],
210
- consonants: "k kh g gh ~N ch Ch j jh ~n T Th D Dh N t th d dh n p ph b bh m y r l v sh Sh s h L kSh j~n".w_split,
211
- symbols: "0 1 2 3 4 5 6 7 8 9 OM .a | ||".w_split,
209
+ consonants: "k kh g gh ~N ch Ch j jh ~n T Th D Dh N t th d dh n p ph b bh m y r l v sh Sh s h L kSh j~n".split(/\s/),
210
+ symbols: "0 1 2 3 4 5 6 7 8 9 OM .a | ||".split(/\s/),
212
211
  candra: [".c"],
213
212
  zwj: ["{}"],
214
213
  skip: ["_"],
215
214
  accent: ["\\'", "\\_"],
216
- combo_accent: "\\'H \\_H \\'M \\_M".w_split,
217
- other: "q K G z .D .Dh f Y R".w_split,
215
+ combo_accent: "\\'H \\_H \\'M \\_M".split(/\s/),
216
+ other: "q K G z .D .Dh f Y R".split(/\s/),
218
217
  },
219
218
 
220
219
  # Harvard-Kyoto
@@ -222,11 +221,11 @@ module Sanscript
222
221
  # A simple 1:1 mapping.
223
222
  #
224
223
  hk: {
225
- vowels: "a A i I u U R RR lR lRR e ai o au".w_split,
226
- other_marks: "M H ~".w_split,
224
+ vowels: "a A i I u U R RR lR lRR e ai o au".split(/\s/),
225
+ other_marks: "M H ~".split(/\s/),
227
226
  virama: [""],
228
- consonants: "k kh g gh G c ch j jh J T Th D Dh N t th d dh n p ph b bh m y r l v z S s h L kS jJ".w_split,
229
- symbols: "0 1 2 3 4 5 6 7 8 9 OM ' | ||".w_split,
227
+ consonants: "k kh g gh G c ch j jh J T Th D Dh N t th d dh n p ph b bh m y r l v z S s h L kS jJ".split(/\s/),
228
+ symbols: "0 1 2 3 4 5 6 7 8 9 OM ' | ||".split(/\s/),
230
229
  },
231
230
 
232
231
  # National Library at Kolkata
@@ -243,11 +242,11 @@ module Sanscript
243
242
  # scheme in use today and is especially suited to computer processing.
244
243
  #
245
244
  slp1: {
246
- vowels: "a A i I u U f F x X e E o O".w_split,
247
- other_marks: "M H ~".w_split,
245
+ vowels: "a A i I u U f F x X e E o O".split(/\s/),
246
+ other_marks: "M H ~".split(/\s/),
248
247
  virama: [""],
249
- consonants: "k K g G N c C j J Y w W q Q R t T d D n p P b B m y r l v S z s h L kz jY".w_split,
250
- symbols: "0 1 2 3 4 5 6 7 8 9 oM ' | ||".w_split,
248
+ consonants: "k K g G N c C j J Y w W q Q R t T d D n p P b B m y r l v S z s h L kz jY".split(/\s/),
249
+ symbols: "0 1 2 3 4 5 6 7 8 9 oM ' | ||".split(/\s/),
251
250
  },
252
251
 
253
252
  # Velthuis
@@ -255,11 +254,11 @@ module Sanscript
255
254
  # A case-insensitive Sanskrit encoding.
256
255
  #
257
256
  velthuis: {
258
- vowels: "a aa i ii u uu .r .rr .li .ll e ai o au".w_split,
259
- other_marks: ".m .h ".w_split,
257
+ vowels: "a aa i ii u uu .r .rr .li .ll e ai o au".split(/\s/),
258
+ other_marks: ".m .h ".split(/\s/),
260
259
  virama: [""],
261
- consonants: 'k kh g gh "n c ch j jh ~n .t .th .d .dh .n t th d dh n p ph b bh m y r l v ~s .s s h L k.s j~n'.w_split,
262
- symbols: "0 1 2 3 4 5 6 7 8 9 o.m ' | ||".w_split,
260
+ consonants: 'k kh g gh "n c ch j jh ~n .t .th .d .dh .n t th d dh n p ph b bh m y r l v ~s .s s h L k.s j~n'.split(/\s/),
261
+ symbols: "0 1 2 3 4 5 6 7 8 9 o.m ' | ||".split(/\s/),
263
262
  },
264
263
 
265
264
  # WX
@@ -267,11 +266,11 @@ module Sanscript
267
266
  # As terse as SLP1.
268
267
  #
269
268
  wx: {
270
- vowels: "a A i I u U q Q L e E o O".w_split,
271
- other_marks: "M H z".w_split,
269
+ vowels: "a A i I u U q Q L e E o O".split(/\s/),
270
+ other_marks: "M H z".split(/\s/),
272
271
  virama: [""],
273
- consonants: "k K g G f c C j J F t T d D N w W x X n p P b B m y r l v S R s h kR jF".w_split,
274
- symbols: "0 1 2 3 4 5 6 7 8 9 oM ' | ||".w_split,
272
+ consonants: "k K g G f c C j J F t T d D N w W x X n p P b B m y r l v S R s h kR jF".split(/\s/),
273
+ symbols: "0 1 2 3 4 5 6 7 8 9 oM ' | ||".split(/\s/),
275
274
  },
276
275
  }
277
276
 
@@ -307,7 +306,7 @@ module Sanscript
307
306
  "\\_" => ["\\`"],
308
307
  "\\_H" => ["\\`H"],
309
308
  "\\'M" => ["\\'.m", "\\'.n"],
310
- "\\_M" => "\\_.m \\_.n \\`M \\`.m \\`.n".w_split,
309
+ "\\_M" => "\\_.m \\_.n \\`M \\`.m \\`.n".split(/\s/),
311
310
  ".a" => ["~"],
312
311
  "|" => ["."],
313
312
  "||" => [".."],
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module Sanscript
3
3
  # The version number
4
- VERSION = "0.4.3"
4
+ VERSION = "0.5.0"
5
5
  end
@@ -29,5 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "benchmark-ips", "~> 2.6"
30
30
  spec.add_development_dependency "yard", "~> 0.9"
31
31
 
32
- spec.add_runtime_dependency "ice_nine", "~> 0.11"
32
+ spec.add_runtime_dependency "ragabash", "~> 0.1"
33
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanscript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Bellefleur
@@ -109,19 +109,19 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.9'
111
111
  - !ruby/object:Gem::Dependency
112
- name: ice_nine
112
+ name: ragabash
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0.11'
117
+ version: '0.1'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0.11'
124
+ version: '0.1'
125
125
  description:
126
126
  email:
127
127
  - nomoon@phoebus.ca
@@ -146,7 +146,7 @@ files:
146
146
  - lib/sanscript/detect.rb
147
147
  - lib/sanscript/detect/ruby24.rb
148
148
  - lib/sanscript/detect/ruby2x.rb
149
- - lib/sanscript/refinements.rb
149
+ - lib/sanscript/exceptions.rb
150
150
  - lib/sanscript/transliterate.rb
151
151
  - lib/sanscript/transliterate/schemes.rb
152
152
  - lib/sanscript/version.rb
@@ -1,95 +0,0 @@
1
- # frozen_string_literal: true
2
- require "ice_nine"
3
-
4
- module Sanscript
5
- # A set of helpful refinements for duplication and deep freezing.
6
- module Refinements
7
- refine Object do
8
- def deep_dup
9
- dup
10
- rescue TypeError
11
- self
12
- end
13
-
14
- def deep_freeze
15
- IceNine.deep_freeze(self)
16
- end
17
- end
18
-
19
- refine NilClass do
20
- def deep_dup
21
- self
22
- end
23
- end
24
-
25
- refine FalseClass do
26
- def deep_dup
27
- self
28
- end
29
- end
30
-
31
- refine TrueClass do
32
- def deep_dup
33
- self
34
- end
35
- end
36
-
37
- refine Symbol do
38
- def deep_dup
39
- self
40
- end
41
- end
42
-
43
- refine Numeric do
44
- def deep_dup
45
- self
46
- end
47
- end
48
-
49
- # Necessary to re-override Numeric
50
- require "bigdecimal"
51
- refine BigDecimal do
52
- def deep_dup
53
- dup
54
- end
55
- end
56
-
57
- refine String do
58
- def w_split
59
- split(/\s/)
60
- end
61
- end
62
-
63
- refine Array do
64
- def deep_dup
65
- map { |value| value.deep_dup } # rubocop:disable Style/SymbolProc
66
- end
67
- end
68
-
69
- refine Hash do
70
- def deep_dup
71
- hash = dup
72
- each_pair do |key, value|
73
- if ::String === key # rubocop:disable Style/CaseEquality
74
- hash[key] = value.deep_dup
75
- else
76
- hash.delete(key)
77
- hash[key.deep_dup] = value.deep_dup
78
- end
79
- end
80
- hash
81
- end
82
- end
83
-
84
- refine Set do
85
- def deep_dup
86
- set_a = to_a
87
- set_a.map! do |val|
88
- next val if ::String === val # rubocop:disable Style/CaseEquality
89
- val.deep_dup
90
- end
91
- self.class[set_a]
92
- end
93
- end
94
- end
95
- end