LifePex/src/achievements/dsl.rb

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