Sha256: a5b50822083ebbc71150bac3bdb2a04b60ef844853df287ad007acc2647feaab

Contents?: true

Size: 1.25 KB

Versions: 13

Compression:

Stored size: 1.25 KB

Contents

module RTurk::Utilities

  def camelize(phrase)
    phrase.gsub!(/^[a-z]|\_+[a-z]/) { |a| a.upcase }
    phrase.gsub!(/\_/, '')
    return phrase
  end

  def stringify_keys(ahash)
    ahash = ahash.inject({}) do |options, (key, value)|
      options[(key.to_s rescue key) || key] = value
      options
    end
    ahash
  end

  def camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true)
    if first_letter_in_uppercase
      lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
    else
      lower_case_and_underscored_word.first + camelize(lower_case_and_underscored_word)[1..-1]
    end
  end

  def underscore(camel_cased_word)
    camel_cased_word.to_s.gsub(/::/, '/').
      gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
      gsub(/([a-z\d])([A-Z])/,'\1_\2').
      tr("-", "_").
      downcase
  end
  
  # Executes the passed in block, retrying in cases of HTTP 503 Status Unvailable Errors
  def self.retry_on_unavailable(delay=1)
    begin
      yield
    rescue RTurk::ServiceUnavailable => e
      RTurk.logger.debug "HTTP Error 503: Service Unavailable.  Retrying in #{delay} seconds."
      sleep delay
      retry
    end
  end

end

# TODO: Build an Nokogiri from_xml parser, should return a hash

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rturk-2.12.1 lib/rturk/utilities.rb
rturk-2.12.0 lib/rturk/utilities.rb
rturk-2.11.3 lib/rturk/utilities.rb
rturk-2.11.2 lib/rturk/utilities.rb
rturk-2.11.1 lib/rturk/utilities.rb
rturk-2.11.0 lib/rturk/utilities.rb
rturk-2.10.3 lib/rturk/utilities.rb
rturk-2.10.2 lib/rturk/utilities.rb
rturk-2.10.1 lib/rturk/utilities.rb
rturk-2.10.0 lib/rturk/utilities.rb
rturk-2.9.0 lib/rturk/utilities.rb
rturk-2.8.0 lib/rturk/utilities.rb
rturk-2.7.0 lib/rturk/utilities.rb