Sha256: 3f126ad459d3a3502ec317f06cbb8225e733271f66d1d38d73eea8e66894ee31
Contents?: true
Size: 1.06 KB
Versions: 6
Compression:
Stored size: 1.06 KB
Contents
# frozen_string_literal: true # # 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:, 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 = {}, &) page = Page.create( { name: }.merge(default_options).merge(options) ) if block_given? self.class .new(user, locale:, parent: page) .run(&) end page end def run(&) instance_eval(&) end private def default_options { author: user, parent:, status: 2, locale: } end end
Version data entries
6 entries across 6 versions & 1 rubygems