Sha256: 55b362f90a9ba07410ac0d0122ce5bfc209277b55e9ea079a68c2123a6d38ff9

Contents?: true

Size: 1.15 KB

Versions: 15

Compression:

Stored size: 1.15 KB

Contents

#coding: utf-8
require 'wombat/processing/node_selector'

module Wombat
  module Property
    module Locators
      # Abstract base class
      class Base
        include Wombat::Processing::NodeSelector

        def initialize(property)
          @property = property
        end

        def locate(context, page = nil)
          @context = context

          raw_data = yield if block_given?
          data = @property.respond_to?(:callback) && @property.callback ? @property.callback.call(raw_data) : raw_data

          @property.wombat_property_name ? { @property.wombat_property_name => data } : data
        end

      protected
        def locate_nodes(context)
          @context = context

          select_nodes @property.wombat_property_selector, @property.wombat_property_namespaces
        end

        def filter_properties(context, page)
          Hash.new.tap do |h|
            @property.values
              .select { |v| v.is_a?(Wombat::DSL::Property) || v.is_a?(Wombat::DSL::PropertyGroup) }
              .map { |p| Factory.locator_for(p).locate(context, page) }
              .map { |p| h.merge! p }
          end
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
wombat-3.0.0 lib/wombat/property/locators/base.rb
wombat-2.10.0 lib/wombat/property/locators/base.rb
wombat-2.9.0 lib/wombat/property/locators/base.rb
wombat-2.8.0 lib/wombat/property/locators/base.rb
wombat-2.7.0 lib/wombat/property/locators/base.rb
wombat-2.6.0 lib/wombat/property/locators/base.rb
wombat-2.5.1 lib/wombat/property/locators/base.rb
wombat-2.5.0 lib/wombat/property/locators/base.rb
wombat-2.4.0 lib/wombat/property/locators/base.rb
wombat-2.3.0 lib/wombat/property/locators/base.rb
wombat-2.2.1 lib/wombat/property/locators/base.rb
wombat-2.2.0 lib/wombat/property/locators/base.rb
wombat-2.1.3 lib/wombat/property/locators/base.rb
wombat-2.1.2 lib/wombat/property/locators/base.rb
wombat-2.1.1 lib/wombat/property/locators/base.rb