def _call_template(tpl, context, args, localCall)
found = false
@templates[tpl].each_pair do |key, value|
if context.is_a?(key)
templateDesc = @templates[tpl][key]
proc = templateDesc.block
arity = proc.arity
arity = 0 if arity == -1
raise StandardError.new("Wrong number of arguments calling template #{tpl}: #{args.size} for #{arity} "+
"(Beware: Hashes as last arguments are taken as options and are ignored)") \
if arity != args.size
raise StandardError.new("Template can only be called locally: #{tpl}") \
if templateDesc.local && !localCall
begin
@@metamodels = @metamodels
proc.call(*args)
rescue Exception => e
processAndRaise(e, tpl)
end
found = true
end
end
raise StandardError.new("Template class not matching: #{tpl} for #{context.class.name}") unless found
end
def _direct_concat(s)
if @output.is_a? OutputHandler
@output.direct_concat(s)
else
@output << s
end
end
def _detectNewLinePattern(text)
tests = 0
rnOccurances = 0
text.scan(/(\r?)\n/) do |groups|
tests += 1
rnOccurances += 1 if groups[0] == "\r"
break if tests >= 10
end
if rnOccurances > (tests / 2)
@newLinePattern = "\r\n"
else
@newLinePattern = "\n"
end
end
end
end