class SexpPath::RubyQueryBuilder
Public Class Methods
_assignment(name=nil, bind='assignment')
click to toggle source
# File lib/sexp_path/ruby_query_builder.rb, line 25 def _assignment(name=nil, bind='assignment') term = v(name, bind) tag = variable_tag(name, :iasgn, :lasgn) s(tag, term) | # declaration s(tag, term, _) | # assignment ( # block arument t(:args) & ( # note this last case is wrong for regexps SexpPath::Matcher::Block.new{|s| s[1..-1].any?{|a| a == name}} % bind ) ) end
_call(name=nil, bind='call')
click to toggle source
# File lib/sexp_path/ruby_query_builder.rb, line 12 def _call(name=nil, bind='call') s(:call, _, v(name, bind), _) end
_class(name=nil, bind='class')
click to toggle source
# File lib/sexp_path/ruby_query_builder.rb, line 16 def _class(name=nil, bind='class') s(:class, v(name, bind), _, _) end
_class_method(name=nil, bind='class_method')
click to toggle source
# File lib/sexp_path/ruby_query_builder.rb, line 8 def _class_method(name=nil, bind='class_method') s(:defs, v(name, bind), _, _) end
_method(name=nil, bind='method')
click to toggle source
# File lib/sexp_path/ruby_query_builder.rb, line 4 def _method(name=nil, bind='method') s(:defn, v(name, bind), _, _) end
_variable(name=nil, bind='variable')
click to toggle source
# File lib/sexp_path/ruby_query_builder.rb, line 20 def _variable(name=nil, bind='variable') tag = variable_tag(name, :ivar, :lvar) s(tag, v(name, var)) end
Private Class Methods
v(name, bind)
click to toggle source
Inserts the appropriate type of value given name. For instance:
v('/cake/') #=> /cake/ # regular expression match v('apple') #=> :apple # atom match
# File lib/sexp_path/ruby_query_builder.rb, line 44 def v(name, bind) if name.nil? atom % bind else m(name) % bind end end
variable_tag(name, ivar, lvar)
click to toggle source
# File lib/sexp_path/ruby_query_builder.rb, line 52 def variable_tag(name, ivar, lvar) if name.nil? atom else name = name.is_a?(Regexp) ? name.inspect[1..-2] : name.to_s name[0..0] == '@' ? ivar : lvar end end