Sha256: a2e109444f1d51e9036b9b9a162be99ab78e5c4f8472c2dfd9d0e7d56988c040

Contents?: true

Size: 743 Bytes

Versions: 3

Compression:

Stored size: 743 Bytes

Contents

# -*- encoding : utf-8 -*-

module Kabutops

  class Recipe
    attr_reader :items

    def initialize
      @items = Hashie::Mash.new
      @nested = false
    end

    def method_missing name, *args, &block
      if block_given?
        recipe = Recipe.new
        recipe.instance_eval &block
        @items[name] = RecipeItem.new(:recipe, recipe)
        @nested = true
      else
        type, value, convert_to = args[0..2]
        @items[name] = RecipeItem.new(type, value, convert_to)
      end
    end

    def process resource, page
      result = Hashie::Mash.new

      @items.each do |name, item|
        result[name] = item.process(resource, page)
      end

      result
    end

    def nested?
      @nested
    end
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
kabutops-0.0.15 lib/kabutops/recipe.rb
kabutops-0.0.14 lib/kabutops/recipe.rb
kabutops-0.0.13 lib/kabutops/recipe.rb