Sha256: e144496ab2f38975ed132a322591787681b3a94e7435d9068659c3628e325781

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module Brite

  # In you templates:
  #
  #   <%= part.some_part_name %>
  #
  class Part < Model

    # New Page.
    def initialize(site, file, copy={})
      @site = site
      @file = file

      initialize_defaults

      update(copy)

      @_template = Neapolitan.file(file, :stencil=>site.config.stencil) #site.page_defaults)

      update(@_template.metadata)
    end

    #
    def initialize_defaults
      @layout = nil

      @part = nil 
      @name = nil
      @basename = nil
    end

    #
    def name
      @name ||= file.chomp('.part')
    end

    #
    def basename
      @basename ||= File.basename(name)
    end

    # Render page or post template.
    #
    def render
      render = @_template.render(self) #, &body)

      result = render.to_s

      if layout
        if layout_object = site.lookup_layout(layout)
          result = layout_object.render(self){ result }
        #else
        #  raise "No such layout -- #{layout}"
        end
      end

      result.to_s.strip
    end

    #
    class Manager

      def initialize(model)
        @model = model
        @site  = model.site

        @parts = {}
        model.site.parts.each do |part|
          @parts[part.basename] = part
        end
      end

      #
      def to_h
        @parts
      end

      #
      def method_missing(name, *args, &block)
        @parts[name.to_s].render
      end
 
    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
brite-0.7.0 lib/brite/part.rb