Sha256: ce570032c544ec984581e3ac952f8c0c74a61d68936a36820801df01e1db8777

Contents?: true

Size: 1.36 KB

Versions: 7

Compression:

Stored size: 1.36 KB

Contents

require "bigdecimal"
require "concurrent"
require "dentaku/calculator"
require "dentaku/version"

module Dentaku
  @enable_ast_caching = false
  @enable_dependency_order_caching = false
  @enable_identifier_caching = false
  @aliases = {}

  def self.evaluate(expression, data = {}, &block)
    calculator.value.evaluate(expression, data, &block)
  end

  def self.evaluate!(expression, data = {}, &block)
    calculator.value.evaluate!(expression, data, &block)
  end

  def self.enable_caching!
    enable_ast_cache!
    enable_dependency_order_cache!
    enable_identifier_cache!
  end

  def self.enable_ast_cache!
    @enable_ast_caching = true
  end

  def self.cache_ast?
    @enable_ast_caching
  end

  def self.enable_dependency_order_cache!
    @enable_dependency_order_caching = true
  end

  def self.cache_dependency_order?
    @enable_dependency_order_caching
  end

  def self.enable_identifier_cache!
    @enable_identifier_caching = true
  end

  def self.cache_identifier?
    @enable_identifier_caching
  end

  def self.aliases
    @aliases
  end

  def self.aliases=(hash)
    @aliases = hash
  end

  def self.calculator
    @calculator ||= Concurrent::ThreadLocalVar.new { Dentaku::Calculator.new }
  end
end

def Dentaku(expression, data = {})
  Dentaku.evaluate(expression, data)
end

def Dentaku!(expression, data = {})
  Dentaku.evaluate!(expression, data)
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
dentaku-3.5.4 lib/dentaku.rb
dentaku-3.5.3 lib/dentaku.rb
dentaku-3.5.2 lib/dentaku.rb
dentaku_zevo-3.5.2 lib/dentaku.rb
dentaku-3.5.1 lib/dentaku.rb
dentaku-3.5.0 lib/dentaku.rb
dentaku-3.4.2 lib/dentaku.rb