       return false
 
     result
+
   obj     : ($, obj)  ->
     log "object"
     selection = $.find obj.selector

    found   = false
    result  = {}
    needs   = Object.keys rules if needs and needs is true
    Object.keys(rules).forEach (key) ->
      res = Parser.parse $, rules[key]
      return if res is false

    results = $.find selector
    return false if not results.length
    return results.eq(0).text() or false if single

    result = helpers.flatten if list
      (Parser.textTree(results[index].children) for index in [0..results.length - 1])
    else
      (results.eq(index).text() or false for index in [0..results.length - 1])

    # trim non-strings
    leaf for leaf in result when typeof leaf is 'string'

  string  : ($, {selector, single, list}) ->
    text = Parser.text $, selector, single, list
