class Flor::Pro::Matchr

Public Instance Methods

pre_execute() click to toggle source
# File lib/flor/pcore/matchr.rb, line 62
def pre_execute

  @node['rets'] = []
end
receive_last() click to toggle source
# File lib/flor/pcore/matchr.rb, line 67
def receive_last

  rex, str = arguments

  m = rex.match(str)

  payload['ret'] =
    case heap
    when 'match?' then !! m
    when 'pmatch' then (m && (m[1] || m[0])) || ''
    else m ? m.to_a : []
    end

  wrap_reply
end

Protected Instance Methods

arguments() click to toggle source
# File lib/flor/pcore/matchr.rb, line 85
def arguments

  rets = @node['rets'].dup
  rets.unshift(node_payload_ret) if rets.size < 2

  fail Flor::FlorError.new(
    "'#{tree[0]}' needs 1 or 2 arguments", self
  ) if rets.size < 2

  rex =
    rets.find { |r| Flor.is_regex_tree?(r) } ||
    rets.last

  str = (rets - [ rex ]).first

  rex = Flor.to_regex(rex)

  [ rex, str ]
end