class Tr8n::Utils

Public Class Methods

browser_accepted_locales(request) click to toggle source

Author: Iain Hecker reference: github.com/iain/http_accept_language

# File lib/tr8n/utils.rb, line 132
def self.browser_accepted_locales(request)
  request.env['HTTP_ACCEPT_LANGUAGE'].split(/\s*,\s*/).collect do |l|
    l += ';q=1.0' unless l =~ /;q=\d+\.\d+$/
    l.split(';q=')
  end.sort do |x,y|
    raise Tr8n::Exception.new("Not correctly formatted") unless x.first =~ /^[a-z\-]+$/i
    y.last.to_f <=> x.last.to_f
  end.collect do |l|
    l.first.downcase.gsub(/-[a-z]+$/i) { |x| x.upcase }
  end
rescue
  []
end
decode_and_verify_params(signed_request, secret) click to toggle source
# File lib/tr8n/utils.rb, line 104
def self.decode_and_verify_params(signed_request, secret)
  payload = URI::decode(signed_request)
  payload = Base64.decode64(payload)
  JSON.parse(payload)

  #parts = signed_request.split('.')
  #return JSON.parse(Base64.decode64(parts.first)) if parts.size == 1
  #encoded_sig = parts.first
  #payload = parts.last
  #expected_sig = OpenSSL::HMAC.digest('sha256', secret, payload)
  #expected_sig = Base64.encode64(expected_sig)
  #if expected_sig != encoded_sig
  #  raise Tr8n::Exception.new('Bad signature')
  #end
  #JSON.parse(Base64.decode64(payload))
rescue Exception => ex
  {}
end
guid() click to toggle source
# File lib/tr8n/utils.rb, line 61
def self.guid
  (0..16).to_a.map{|a| rand(16).to_s(16)}.join
end
hash_value(hash, key) click to toggle source
# File lib/tr8n/utils.rb, line 65
def self.hash_value(hash, key)
  hash[key.to_s] || hash[key.to_sym]
end
load_json(file_path, env = nil) click to toggle source
# File lib/tr8n/utils.rb, line 80
def self.load_json(file_path, env = nil)
  json = JSON.parse(File.read(file_path))
  return json if env.nil?
  return yml['defaults'] if env == 'defaults'
  yml['defaults'].rmerge(yml[env] || {})
end
load_yaml(file_path, env = nil) click to toggle source
# File lib/tr8n/utils.rb, line 87
def self.load_yaml(file_path, env = nil)
  yaml = YAML.load_file(file_path)
  return yaml if env.nil?
  return yaml['defaults'] if env == 'defaults'
  yaml['defaults'].rmerge(yaml[env] || {})
end
normalize_tr_params(label, description, tokens, options) click to toggle source
# File lib/tr8n/utils.rb, line 41
def self.normalize_tr_params(label, description, tokens, options)
  return label if label.is_a?(Hash)

  if description.is_a?(Hash)
    return {
      :label        => label,
      :description  => nil,
      :tokens       => description,
      :options      => tokens
    }
  end

  {
    :label        => label,
    :description  => description,
    :tokens       => tokens,
    :options      => options
  }
end
sign_and_encode_params(params, secret) click to toggle source
# File lib/tr8n/utils.rb, line 94
def self.sign_and_encode_params(params, secret)
  URI::encode(Base64.encode64(params.to_json))

  #payload = params.merge(:algorithm => 'HMAC-SHA256', :ts => Time.now.to_i).to_json
  #payload = Base64.encode64(payload)
  #sig = OpenSSL::HMAC.digest('sha256', secret, payload)
  #encoded_sig = Base64.encode64(sig)
  #URI::encode(Base64.encode64("#{encoded_sig}.#{payload}"))
end
split_by_sentence(text) click to toggle source
# File lib/tr8n/utils.rb, line 69
def self.split_by_sentence(text)
  sentence_regex = /[^.!?\s][^.!?]*(?:[.!?](?![\'"]?\s|$)[^.!?]*)*[.!?]?[\'"]?(?=\s|$)/

  sentences = []
  text.scan(sentence_regex).each do |s|
    sentences << s
  end

  sentences
end
split_sentences(paragraph) click to toggle source
# File lib/tr8n/utils.rb, line 123
def self.split_sentences(paragraph)
  sentence_regex = /[^.!?\s][^.!?]*(?:[.!?](?![\'"]?\s|$)[^.!?]*)*[.!?]?[\'"]?(?=\s|$)/
  paragraph.match(sentence_regex)
end