class Keisan::AST::Cache
Public Class Methods
new()
click to toggle source
# File lib/keisan/ast/cache.rb, line 4 def initialize @cache = {} end
Public Instance Methods
fetch_or_build(string)
click to toggle source
# File lib/keisan/ast/cache.rb, line 8 def fetch_or_build(string) return @cache[string] if @cache.has_key?(string) build_from_scratch(string).tap do |ast| unless frozen? # Freeze the AST to keep it from changing in the cache ast.freeze @cache[string] = ast end end end
has_key?(string)
click to toggle source
# File lib/keisan/ast/cache.rb, line 20 def has_key?(string) @cache.has_key?(string) end
Private Instance Methods
build_from_scratch(string)
click to toggle source
# File lib/keisan/ast/cache.rb, line 26 def build_from_scratch(string) Builder.new(string: string).ast end