Class: Sexp

Inherits:
Object
  • Object
show all
Includes:
SexpPath::Traverse
Defined in:
lib/sexp_path.rb

Overview

SexpPath extends Sexp with Traverse. This adds support for searching S-Expressions

Direct Known Subclasses

SexpPath::Matcher::Base

Instance Method Summary collapse

Methods included from SexpPath::Traverse

#capture_as, #replace_sexp, #search, #search_each

Instance Method Details

#satisfy?(o, data = {}) ⇒ Boolean

Extends Sexp to allow any Sexp to be used as a SexpPath matcher

Returns:

  • (Boolean)


50
51
52
53
54
55
56
# File 'lib/sexp_path.rb', line 50

def satisfy?(o, data={})
  return false unless o.is_a? Sexp
  return false unless length == o.length
  each_with_index{|c,i| return false unless c.is_a?(Sexp) ? c.satisfy?( o[i], data ) : c == o[i] }

  capture_match(o, data)
end