/usr/lib/ruby/vendor_ruby/slim/controls.rb is in ruby-slim 2.0.2-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | module Slim
# @api private
class Controls < Filter
define_options :disable_capture
# Handle control expression `[:slim, :control, code, content]`
#
# @param [String] code Ruby code
# @param [Array] content Temple expression
# @return [Array] Compiled temple expression
def on_slim_control(code, content)
[:multi,
[:code, code],
compile(content)]
end
# Handle output expression `[:slim, :output, escape, code, content]`
#
# @param [Boolean] escape Escape html
# @param [String] code Ruby code
# @param [Array] content Temple expression
# @return [Array] Compiled temple expression
def on_slim_output(escape, code, content)
if empty_exp?(content)
[:multi, [:escape, escape, [:dynamic, code]], content]
else
tmp = unique_name
[:multi,
# Capture the result of the code in a variable. We can't do
# `[:dynamic, code]` because it's probably not a complete
# expression (which is a requirement for Temple).
[:block, "#{tmp} = #{code}",
# Capture the content of a block in a separate buffer. This means
# that `yield` will not output the content to the current buffer,
# but rather return the output.
#
# The capturing can be disabled with the option :disable_capture.
# Output code in the block writes directly to the output buffer then.
# Rails handles this by replacing the output buffer for helpers.
options[:disable_capture] ? compile(content) : [:capture, unique_name, compile(content)]],
# Output the content.
[:escape, escape, [:dynamic, tmp]]]
end
end
# Handle text expression `[:slim, :text, content]`
#
# @param [Array] content Temple expression
# @return [Array] Compiled temple expression
def on_slim_text(content)
compile(content)
end
end
end
|