class Alki::Dsls::Dsl
Public Class Methods
dsl_info()
click to toggle source
# File lib/alki/dsls/dsl.rb, line 28 def self.dsl_info { requires: [['alki/dsls/class',:before]], methods: [ :dsl_method, [:init,:dsl_init], [:finish,:dsl_finish], :require_dsl, :helper, :helper_module ], init: :init, finish: :finish } end
helpers()
click to toggle source
# File lib/alki/dsls/dsl.rb, line 24 def self.helpers [Helpers] end
Public Instance Methods
dsl_finish(&blk)
click to toggle source
# File lib/alki/dsls/dsl.rb, line 64 def dsl_finish(&blk) add_method :_dsl_finish, private: true, &blk @info[:finish] = :_dsl_finish end
dsl_init(&blk)
click to toggle source
# File lib/alki/dsls/dsl.rb, line 59 def dsl_init(&blk) add_method :_dsl_init, private: true, &blk @info[:init] = :_dsl_init end
dsl_method(name, &blk)
click to toggle source
# File lib/alki/dsls/dsl.rb, line 53 def dsl_method(name, &blk) method_name = name.to_sym add_method method_name, private: true, &blk @info[:methods] << [name.to_sym,method_name] end
finish()
click to toggle source
# File lib/alki/dsls/dsl.rb, line 86 def finish set_super_class 'alki/dsl/base' create_as_module(subclass: 'Helpers') add_class_method :helpers do [self::Helpers] end info = @info.freeze add_class_method :dsl_info do info end add_method(:require_dsl,private: true) do |dsl,order=:before| dsl_class = Alki.load dsl dsl_class.helpers.each do |helper| self.singleton_class.send :include, helper end @evaluator.update requires: [[dsl,order]] end end
helper(name,&blk)
click to toggle source
# File lib/alki/dsls/dsl.rb, line 78 def helper(name,&blk) add_helper name, &blk end
helper_module(mod)
click to toggle source
# File lib/alki/dsls/dsl.rb, line 82 def helper_module(mod) add_helper_module mod end
init()
click to toggle source
# File lib/alki/dsls/dsl.rb, line 44 def init @info = { methods: [], requires: [] } @helper_modules = [] @helpers = {} end
require_dsl(dsl, order=:before)
click to toggle source
# File lib/alki/dsls/dsl.rb, line 69 def require_dsl(dsl, order=:before) dsl_class = Alki.load dsl @info[:requires] << [dsl,order] dsl_class.helpers.each do |helper| add_module helper add_helper_module helper end end