Sha256: d301d78be757384234151956c0beb8d78d2b4be135cd1153488f1409ba62022d
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
require 'seory/page_contents' require 'seory/runtime' module Seory module Dsl extend self def describe(&block) [].tap do |repositories| Descriptor.new(repositories).instance_exec(&block) end end def lookup(controller) page_contents = repositories.detect {|page| page.match?(controller) } Seory::Runtime.new(page_contents, controller) end class PageContentsBuilder def initialize(*conditions) @page_contents = PageContents.new(*conditions) end def build!(&block) instance_exec(&block) @page_contents end Seory::Runtime::CONTENTS.each do |name| define_method(name) do |val = nil, &block| @page_contents.define(name, val, &block) end end end class Descriptor def initialize(repositories) @repositories = repositories end def match(*conditions, &def_builder) @repositories << PageContentsBuilder.new(*conditions).build!(&def_builder) end def default(&def_builder) match(:default, &def_builder) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
seory-0.0.1 | lib/seory/dsl.rb |