Class Webby::Filters::Cursor
In: lib/webby/filters.rb
Parent: Object

Instances of this class handle processing a set of filters for a given renderer and page. Note: The instance is passed as the second argument to filters

      that require two parameters and can be used to access
      information on the renderer, page, or filters being
      processed.

Methods

Attributes

filters  [R] 
page  [R] 
renderer  [R] 

Public Class methods

[Source]

# File lib/webby/filters.rb, line 36
      def initialize(renderer, page)
        @renderer, @page = renderer, page
        @filters = Array(page.filter)
        @log = Logging::Logger[Webby::Renderer]
        @processed = 0
        @prev_cursor = nil
      end

Public Instance methods

Process arguments through a single filter

[Source]

# File lib/webby/filters.rb, line 69
      def _handle(filter, handler, *args)
        result = handler.call(*args)
        @processed += 1
        result
      rescue StandardError => err
        raise ::Webby::Error, "#{filter} filter error: #{err.message.inspect}"
      end

The name of the current filter

[Source]

# File lib/webby/filters.rb, line 64
      def current_filter
        filters[@processed]
      end

The list of filters yet to be processed

[Source]

# File lib/webby/filters.rb, line 59
      def remaining_filters
        filters[@processed..-1]
      end

[Source]

# File lib/webby/filters.rb, line 44
      def start_for(input)
        @prev_cursor = @renderer.instance_variable_get(:@_cursor)
        @renderer.instance_variable_set(:@_cursor, self)
        filters.inject(input) do |result, filter|
          handler = Filters[filter]
          raise ::Webby::Error, "unknown filter: #{filter.inspect}" if handler.nil?

          args = [result, self][0, handler.arity]
          _handle(filter, handler, *args)
        end
      ensure
        @renderer.instance_variable_set(:@_cursor, @prev_cursor)
      end

[Validate]