Module: Interscript::Stdlib::Functions

Defined in:
lib/interscript/stdlib.rb

Class Method Summary collapse

Class Method Details

.compose(output, _: nil) ⇒ Object



206
207
208
# File 'lib/interscript/stdlib.rb', line 206

def self.compose(output, _:nil)
  output.unicode_normalize(:nfc)
end

.decompose(output, _: nil) ⇒ Object



210
211
212
# File 'lib/interscript/stdlib.rb', line 210

def self.decompose(output, _:nil)
  output.unicode_normalize(:nfd)
end

.downcase(output, word_separator: nil) ⇒ Object



197
198
199
200
201
202
203
204
# File 'lib/interscript/stdlib.rb', line 197

def self.downcase(output, word_separator: nil)
  if word_separator
    output = output.gsub(/^(.)/, &:downcase)
    output = output.gsub(/#{word_separator}(.)/, &:downcase) unless word_separator == ''
  else
    output.downcase
  end
end

.rababa(output, config:) ⇒ Object



237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# File 'lib/interscript/stdlib.rb', line 237

def self.rababa(output, config:)
  require "rababa" rescue nil # Try to load rababa, but don't fail hard if not possible.
  unless defined? Rababa
    raise StandardError, "Rababa is not loaded. Please read docs/Usage_with_Rababa.adoc"
  end

  config_value = Interscript.rababa_configs[config]
  model_uri = config_value['model']
  rababa_config = config_value['config']
  model_path = Interscript.rababa_provision(config, model_uri)

  @rababa_diacritizer ||= Rababa::Diacritizer.new(model_path, rababa_config)

  @rababa_diacritizer.diacritize_text(output)
end

.secryst(output, model:) ⇒ Object



223
224
225
226
227
228
229
230
231
232
233
234
235
# File 'lib/interscript/stdlib.rb', line 223

def self.secryst(output, model:)
  require "secryst" rescue nil # Try to load secryst, but don't fail hard if not possible.
  unless defined? Secryst
    raise StandardError, "Secryst is not loaded. Please read docs/Usage_with_Secryst.adoc"
  end
  Interscript.secryst_index_locations.each do |remote|
    Secryst::Provisioning.add_remote(remote)
  end
  @secryst_models[model] ||= Secryst::Translator.new(model_file: model)
  output.split("\n").map(&:chomp).map do |i|
    @secryst_models[model].translate(i)
  end.join("\n")
end

.separate(output, separator: " ") ⇒ Object



214
215
216
# File 'lib/interscript/stdlib.rb', line 214

def self.separate(output, separator: " ")
  output.split("").join(separator)
end

.title_case(output, word_separator: " ") ⇒ Object



191
192
193
194
195
# File 'lib/interscript/stdlib.rb', line 191

def self.title_case(output, word_separator: " ")
  output = output.gsub(/^(.)/, &:upcase)
  output = output.gsub(/#{word_separator}(.)/, &:upcase) unless word_separator == ''
  output
end

.unseparate(output, separator: " ") ⇒ Object



218
219
220
# File 'lib/interscript/stdlib.rb', line 218

def self.unseparate(output, separator: " ")
  output.split(separator).join("")
end