module Nanoc::Helpers::Capturing
Public Instance Methods
capture() { || ... }
click to toggle source
@return [String]
# File lib/nanoc/helpers/capturing.rb, line 149 def capture(&block) # Get erbout so far erbout = eval('_erbout', block.binding) erbout_length = erbout.length # Execute block yield # Get new piece of erbout erbout_addition = erbout[erbout_length..] # Remove addition erbout[erbout_length..-1] = +'' # Depending on how the filter outputs, the result might be a # single string or an array of strings (slim outputs the latter). erbout_addition = erbout_addition.join('') if erbout_addition.is_a? Array # Done. erbout_addition end
content_for(*args, &)
click to toggle source
@overload content_for
(name, &block)
@param [Symbol, String] name @return [void]
@overload content_for
(name, params, &block)
@param [Symbol, String] name @option params [Symbol] existing @return [void]
@overload content_for
(name, content)
@param [Symbol, String] name @param [String] content @return [void]
@overload content_for
(name, params, content)
@param [Symbol, String] name @param [String] content @option params [Symbol] existing @return [void]
@overload content_for
(item, name)
@param [Symbol, String] name @return [String]
# File lib/nanoc/helpers/capturing.rb, line 105 def content_for(*args, &) if block_given? # Set content name = args[0] params = case args.size when 1 {} when 2 args[1] else raise ArgumentError, 'expected 1 or 2 argument (the name ' \ "of the capture, and optionally params) but got #{args.size} instead" end SetContent.new(name, params, @item).run(&) elsif args.size > 1 && (args.first.is_a?(Symbol) || args.first.is_a?(String)) # Set content name = args[0] content = args.last params = case args.size when 2 {} when 3 args[1] else raise ArgumentError, 'expected 2 or 3 arguments (the name ' \ "of the capture, optionally params, and the content) but got #{args.size} instead" end _erbout = +'' # rubocop:disable Lint/UnderscorePrefixedVariableName SetContent.new(name, params, @item).run { _erbout << content } else # Get content if args.size != 2 raise ArgumentError, 'expected 2 arguments (the item ' \ "and the name of the capture) but got #{args.size} instead" end requested_item = args[0] name = args[1] GetContent.new(requested_item, name, @item, @config).run end end