class Tml::Utils
Public Class Methods
browser_accepted_locales(header)
click to toggle source
# File lib/tml/utils.rb, line 128 def self.browser_accepted_locales(header) header.split(/\s*,\s*/).collect do |l| l += ';q=1.0' unless l =~ /;q=\d+\.\d+$/ l.split(';q=') end.sort do |x,y| unless x.first =~ /^[a-z\-]+$/i raise Tml::Exception.new('Not correctly formatted') end 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(payload, secret = nil)
click to toggle source
# File lib/tml/utils.rb, line 98 def self.decode(payload, secret = nil) # payload = URI::decode(payload) payload = Base64.decode64(payload) data = JSON.parse(payload) # TODO: Verify signature data rescue Exception => ex {} end
encode(params, secret = nil)
click to toggle source
# File lib/tml/utils.rb, line 108 def self.encode(params, secret = nil) # TODO: Add signature payload = Base64.encode64(params.to_json) # URI::encode(payload) payload rescue Exception => ex '' end
guid()
click to toggle source
# File lib/tml/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/tml/utils.rb, line 74 def self.hash_value(hash, key) hash[key.to_s] || hash[key.to_sym] end
interval_timestamp(interval)
click to toggle source
# File lib/tml/utils.rb, line 65 def self.interval_timestamp(interval) t = Time.now.to_i t - (t % interval.to_i) end
load_json(file_path, env = nil)
click to toggle source
# File lib/tml/utils.rb, line 84 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/tml/utils.rb, line 91 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/tml/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) or description.is_a?(Array) return { :label => label, :description => nil, :tokens => description, :options => tokens || {} } end { :label => label, :description => description, :tokens => tokens || {}, :options => options || {} } end
remove_nils(hash)
click to toggle source
# File lib/tml/utils.rb, line 78 def self.remove_nils(hash) return unless hash proc = Proc.new { |k, v| v.kind_of?(Hash) ? (v.delete_if(&proc); nil) : v.blank? } hash.delete_if(&proc) end
split_sentences(text)
click to toggle source
# File lib/tml/utils.rb, line 117 def self.split_sentences(text) sentence_regex = /[^.!?\s][^.!?]*(?:[.!?](?![\'"]?\s|$)[^.!?]*)*[.!?]?[\'"]?(?=\s|$)/ sentences = [] text.scan(sentence_regex).each do |s| sentences << s end sentences end
ungzip(tarfile)
click to toggle source
# File lib/tml/utils.rb, line 144 def self.ungzip(tarfile) z = Zlib::GzipReader.new(tarfile) unzipped = StringIO.new(z.read) z.close unzipped end
untar(io, destination)
click to toggle source
# File lib/tml/utils.rb, line 151 def self.untar(io, destination) Gem::Package::TarReader.new io do |tar| tar.each do |tarfile| destination_file = File.join destination, tarfile.full_name if tarfile.directory? FileUtils.mkdir_p destination_file else destination_directory = File.dirname(destination_file) FileUtils.mkdir_p destination_directory unless File.directory?(destination_directory) File.open destination_file, "wb" do |f| f.print tarfile.read end end end end end