class Raml::Template
Public Instance Methods
interpolate(params)
click to toggle source
@private
# File lib/raml/node/template.rb, line 7 def interpolate(params) name = @name.clone data = clone_data interpolate_params name, params interpolate_params data, params [ name, data ] end
Private Instance Methods
clone_data()
click to toggle source
# File lib/raml/node/template.rb, line 17 def clone_data # ugly but effective Marshal.load Marshal.dump @value end
interpolate_params(value, params)
click to toggle source
# File lib/raml/node/template.rb, line 22 def interpolate_params(value, params) case value when String interpolate_params_string value, params when Hash value.map! { |key,val| [ interpolate_params(key, params), interpolate_params(val, params) ] } when Array value.map! { |val| interpolate_params val, params } else value end end
interpolate_params_string(value, params)
click to toggle source
# File lib/raml/node/template.rb, line 35 def interpolate_params_string(value, params) value = value.dup if value.frozen? value.gsub!(/(<<([^!\s>]+)(?:\s*\|\s*!(\w+))?>>)/) do |match| param_name = $2 function = $3 param = params[param_name] raise UnknownTypeOrTraitParameter, "#{param_name} is not a known parameter." if param.nil? if function raise UnknownTypeOrTraitParamFunction, function unless [ 'singularize', 'pluralize'].include? function param = param.send function end param end value end