parse result is cached in ctx. may improve performance
# File lib/rsec/parsers/misc.rb, line 173 def self.[] parser self.new parser end
# File lib/rsec/parsers/misc.rb, line 177 def initialize parser @parser = parser @salt = object_id() << 32 end
# File lib/rsec/parsers/misc.rb, line 182 def _parse ctx key = ctx.pos | @salt cache = ctx.cache # result maybe nil, so don't use ||= if cache.has_key? key ret, pos = cache[key] ctx.pos = pos ret else ret = @parser._parse ctx pos = ctx.pos cache[key] = [ret, pos] ret end end