Sha256: b9f34d813ce7c4c04ec33e68efcd9e3b7d46d1c3b22fad1a04008e60c7375275
Contents?: true
Size: 1.14 KB
Versions: 2
Compression:
Stored size: 1.14 KB
Contents
require 'seory' require 'seory/condition' module Seory class EmptyCondition < ::Seory::Error; end class AccessorNameTaken < ::Seory::Error; end class Page attr_reader :assign_name_accessors def initialize(*conditions, &block) @conditions = if block_given? [Condition::Block.new(block)] elsif conditions.first == :default :default else conditions.map {|condition| Seory::Condition[condition] } end raise EmptyCondition if @conditions.blank? @contents, @assign_name_accessors = {}, [] end def define(name, value = nil, &block) @contents[name] = block_given? ? block : value end def assign_reader(*assign_names) if (taken = Seory::CONTENTS & assign_names).size > 0 raise AccessorNameTaken, taken.join(', ') end assign_name_accessors.concat(assign_names) end def content_for(name) @contents[name] end def match?(controller) return true if default? @conditions.any? {|condition| condition.match?(controller) } end def default? @conditions == :default end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
seory-0.2.0 | lib/seory/page.rb |
seory-0.1.0 | lib/seory/page.rb |