Sha256: 134418958df86b66a1e6237c86aef42196be121f9bbc31ffac563e120494e11d

Contents?: true

Size: 767 Bytes

Versions: 2

Compression:

Stored size: 767 Bytes

Contents

module VaultTree
  class KeywordInterpreter
    attr_reader :word, :vault

    def initialize(word,vault)
      @word = word 
      @vault = vault
    end

    def evaluate # start here
      begin
        keyword_class_name.new(vault, arg_array).evaluate
      rescue NameError
        raise Exceptions::UnsupportedKeyword
      end
    end

    def word_base
      word.gsub(/(\[.*\])/,'').strip
    end

    private

    def keyword_class_name
      instance_eval "VaultTree::#{word_base.downcase.camelize}"
    end

    def arg_array
      if has_args?
        instance_eval arg_array_string
      else
        []
      end
    end

    def arg_array_string
      word.gsub(word_base,'').strip
    end

    def has_args?
      word.match(/\[/)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vault-tree-0.3.4 lib/vault-tree/keywords/keyword_interpreter.rb
vault-tree-0.3.3 lib/vault-tree/keywords/keyword_interpreter.rb