Sha256: 9077d7dac5924be3552b236feffea767f138952769f5d9fd29074bb0cd3adac8

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

module Pione
  module Util
    # Evaluatable is a module for providing to ability to evaluate PIONE
    # expression string.
    module Evaluatable
      # Evaluate the string as a PIONE expression and get the result value as model object.
      #
      # @param str [String]
      #   a PIONE expression
      # @param domain_dump [DomainDump]
      #   a domain dump object
      # @return [Object]
      #   the evaluation value
      def val!(str, domain_dump=nil)
        env = domain_dump ? domain_dump.env : Lang::Environment.new
        option = {package_name: env.current_package_id, filename: "pione-eval"}
        Lang::DocumentTransformer.new.apply(
          Lang::DocumentParser.new.expr.parse(str), option
        ).eval(env)
      end

      # Evaluate the string as a PIONE expression and get the result value as a textized string.
      #
      # @param str [String]
      #   a PIONE expression
      # @param domain_dump [DomainDump]
      #   a domain dump object
      # @return [String]
      #   the result of evaluation as an embeddable string
      def val(str, domain_dump=nil)
        env = domain_dump ? domain_dump.env : Lang::Environment.new
        val!(str, domain_dump).call_pione_method(env, "textize", []).first.value
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pione-0.5.0 lib/pione/util/evaluatable.rb
pione-0.5.0.alpha.2 lib/pione/util/evaluatable.rb
pione-0.5.0.alpha.1 lib/pione/util/evaluatable.rb
pione-0.4.2 lib/pione/util/evaluatable.rb
pione-0.4.1 lib/pione/util/evaluatable.rb
pione-0.4.0 lib/pione/util/evaluatable.rb