50 lines
1.1 KiB
Ruby
50 lines
1.1 KiB
Ruby
module LifePex::AchievementDSL
|
|
UNDEFINED = :undefined_by_dsl
|
|
|
|
# @example
|
|
# include LifePex::AchievementDSL::Dslize
|
|
# dslize_input :name
|
|
# dslize_flag :required
|
|
module Dslize
|
|
def self.included(m)
|
|
def m.dslize_input(name)
|
|
define_method name do |v = UNDEFINED|
|
|
if v == :undefined_by_dsl
|
|
instance_variable_get "@#{name}"
|
|
else
|
|
instance_variable_set "@#{name}", v
|
|
end
|
|
end
|
|
end
|
|
|
|
def m.dslize_flag(name)
|
|
define_method "is_#{name}" do
|
|
instance_variable_get "@#{name}"
|
|
end
|
|
|
|
define_method name do
|
|
instance_variable_set "@#{name}", true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
require_relative "./success.rb"
|
|
|
|
module LifePex::AchievementDSL
|
|
AVAILABLE_GENERIC_SUCCESS = {}
|
|
AVAILABLE_SETUP_SUCCESS = {}
|
|
|
|
def success(name, &block)
|
|
Success.new(name, &block)
|
|
# if block_given?
|
|
# s = Success.new(name, &block)
|
|
# LifePex::AchievementDSL::AVAILABLE_GENERIC_SUCCESS[name] = s
|
|
# s
|
|
# else
|
|
# LifePex::AchievementDSL::AVAILABLE_GENERIC_SUCCESS[name]
|
|
# end
|
|
end
|
|
end
|