Sha256: ff6259b7422c6d2efe9fdf664f2d7b0b038993f0e1f725b48032192b2a5759b9

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

# This class reads an application model file and turns it into an
# ApplicationModel instance.

require_relative 'application_model'
require 'katapult/model'
require 'katapult/web_ui'
require 'katapult/navigation'
require 'katapult/authentication'

module Katapult
  class Parser

    def initialize
      self.application_model = Katapult::ApplicationModel.new
    end

    def parse(application_model_string, path_to_model = '')
      instance_eval application_model_string, path_to_model

      application_model
    end

    def model(name, &block)
      application_model.add_model Model.new(name, &block)
    end

    def web_ui(name, options = {}, &block)
      application_model.add_web_ui WebUI.new(name, options, &block)
    end

    # A shortcut to create a #model together with a default #web_ui with CRUD
    # actions
    def crud(name, &block)
      application_model.add_model Model.new(name, &block)
      application_model.add_web_ui WebUI.new(name, &:crud)
    end

    def navigation(name = :main)
      application_model.set_navigation Navigation.new(name)
    end

    def authenticate(name, system_email:)
      application_model.set_authentication Authentication.new(name,
        system_email: system_email
      )
    end

    private

    attr_accessor :application_model

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
katapult-0.3.0 lib/katapult/parser.rb