module Guff class TemplateToken getter :type getter :value TOKEN_TYPES = %i{key val} def initialize(@type : Symbol, @value : String) raise "invalid type: %s" % [@type] unless TOKEN_TYPES.includes?(@type) end def get(args : Hash(String, String)) case @type when :key raise "missing key: %s" % [@value] unless args.has_key?(@value) args[@value] when :val @value else # never reached raise "unknown token type: %s" % [@type] end end end end