Hacked By AnonymousFox
# coding: utf-8
require "forwardable"
class HighLine
# Renders an erb template taking a {Question} and a {HighLine} instance
# as context.
class TemplateRenderer
extend Forwardable
def_delegators :@highline, :color, :list, :key
def_delegators :@source, :answer_type, :prompt, :header, :answer
# @return [ERB] ERB template being rendered
attr_reader :template
# @return [Question, Menu] Question instance used as context
attr_reader :source
# @return [HighLine] HighLine instance used as context
attr_reader :highline
# Initializes the TemplateRenderer object with its template and
# HighLine and Question contexts.
#
# @param template [ERB] ERB template.
# @param source [Question] question object.
# @param highline [HighLine] HighLine instance.
def initialize(template, source, highline)
@template = template
@source = source
@highline = highline
end
# @return [String] rendered template
def render
template.result(binding)
end
# Returns an error message when the called method
# is not available.
# @return [String] error message.
def method_missing(method, *args)
"Method #{method} with args #{args.inspect} " \
"is not available on #{inspect}. " \
"Try #{methods(false).sort.inspect}"
end
# @return [Question, Menu] {#source} attribute.
def menu
source
end
# If some constant is missing at this TemplateRenderer instance,
# get it from HighLine. Useful to get color and style contants.
# @param name [Symbol] automatically passed constant's name as Symbol
def self.const_missing(name)
HighLine.const_get(name)
end
end
end
Hacked By AnonymousFox1.0, Coded By AnonymousFox