Method: Cmds#render
- Defined in:
- lib/cmds.rb
#render(*args, **kwds) ⇒ String
Note:
the returned string is not formatted for shell execution.
Cmds passes this string through format before execution,
which addresses newlines in the rendered string through "squishing"
everything down to one line or adding \ to line ends.
render parameters into @template.
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 |
# File 'lib/cmds.rb', line 295 def render *args, **kwds # Create the context for ERB context = Cmds::ERBContext.new( (self.args + args), self.kwds.merge( kwds ), tokenize_options_opts: TOKENIZE_OPT_KEYS. each_with_object( {} ) { |key, hash| value = instance_variable_get "@#{ key}" hash[key] = value unless value.nil? } ) erb = Cmds::ShellEruby.new Cmds.replace_shortcuts( self.template ) rendered = NRSER.dedent erb.result(context.get_binding) if self.env_mode == :inline && !self.env.empty? rendered = self.env.sort_by {|name, value| name }.map {|name, value| "#{ name }=#{ Cmds.esc value }" }.join("\n\n") + "\n\n" + rendered end rendered end |