module Calabash::Cucumber::QueryHelpers

A module of methods that can help you construct queries.

Public Instance Methods

escape_backslashes(str) click to toggle source

call this method to properly escape blackslashes () in Calabash methods (queries and uia actions). Calabash iOS has some annoying rules for text containing single quotes, and even moreso for backslash (). This helper frees you from manual escaping. @note

In ruby it is important to remember that "\\" is a *single character* string containing
a backslash: \

@example

quoted = escape_backslashes("Karl's \\ annoying problem")
# => "Karl's \\\\ annoying problem"

@param {String} str string to escape @return {String} escaped version of ‘str`

# File lib/calabash-cucumber/query_helpers.rb, line 35
def escape_backslashes(str)
  backslash = "\\"
  str.gsub(backslash, backslash*4)
end
escape_newlines(str) click to toggle source

call this method to properly escape newlines (n) in Calabash methods (queries and uia actions). This helper frees you from manual escaping. Note entering a ‘newline’ character only works in iOS UITextViews @note

In ruby it is important to remember that "\n" is a *single character* string containing
a new-line.

@example

quoted = escape_newlines("Karl's \n annoying problem")
# => "Karl's \\n annoying problem"

@param {String} str string to escape @return {String} escaped version of ‘str`

# File lib/calabash-cucumber/query_helpers.rb, line 53
def escape_newlines(str)
  nl = "\n"
  str.gsub(nl, "\\n")
end
escape_quotes(str) click to toggle source

call this method to properly escape single quotes in Calabash queries Calabash iOS has some annoying rules for text containing single quotes. This helper frees you from manual escaping. @example

quoted = escape_quotes("Karl's child")
# => "Karl\\'s child"

@param {String} str string to escape @return {String} escaped version of ‘str`

# File lib/calabash-cucumber/query_helpers.rb, line 66
def escape_quotes(str)
  str.gsub("'", "\\\\'")
end
escape_string(str) click to toggle source

call this method to properly escape strings with single quotes and black slashes in methods (queries and uia actions) Calabash iOS has some annoying rules for text containing single quotes, and even moreso for backslash (). This helper frees you from manual escaping. @example

quoted = escape_string("Karl's \\ annoying problem")
# => "Karl\\'s \\\\ annoying problem"

@param {String} str string to escape @return {String} escaped version of ‘str`

# File lib/calabash-cucumber/query_helpers.rb, line 17
def escape_string(str)
  escape_newlines(escape_quotes(escape_backslashes(str)))
end
point_from(query_result, options={}) click to toggle source

converts a query result or off-set hash to a point hash @!visibility private

# File lib/calabash-cucumber/query_helpers.rb, line 72
def point_from(query_result, options={})
  offset_x = 0
  offset_y = 0
  if options[:offset]
    offset_x += options[:offset][:x] || 0
    offset_y += options[:offset][:y] || 0
  end
  x = offset_x
  y = offset_y
  rect = query_result['rect'] || query_result[:rect]
  if rect
    x += rect['center_x'] || rect[:center_x] || rect[:x] || 0
    y += rect['center_y'] || rect[:center_y] || rect[:y] || 0
  else
    x += query_result['center_x'] || query_result[:center_x] || query_result[:x] || 0
    y += query_result['center_y'] || query_result[:center_y] || query_result[:y] || 0
  end

  {:x => x, :y => y}
end