Sha256: 2b591d64b4a4c64f122a268f1168e010a2e80b50687474c001904f7dd05ce99c
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
# encoding: utf-8 # # PageBuilder # # PageBuilder is a simple DSL for building pages, for use in ie. seeds.rb # # Example: # # PageBuilder.build(User.first) do # page "Home", template: "home" # page "Products" do # page "Product 1" # page "Product 2" # end # page "Contact", unique_name: "contact" # end class PageBuilder attr_reader :user, :locale, :parent class << self def build(user, locale: nil, parent: nil, &block) new(user, locale: locale, parent: parent) .run(&block) end end def initialize(user, locale: nil, parent: nil) @user = user @locale = locale || I18n.default_locale @parent = parent end def page(name, options = {}, &block) page = Page.create( { name: name }.merge(default_options).merge(options) ) if block_given? self.class .new(user, locale: locale, parent: page) .run(&block) end page end def run(&block) instance_eval(&block) end private def default_options { author: user, parent: parent, status: 2, locale: locale } end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pages_core-3.5.1 | app/models/page_builder.rb |