lib/yuyi/roll.rb in yuyi-0.0.8 vs lib/yuyi/roll.rb in yuyi-1.0.0

- old
+ new

@@ -11,31 +11,55 @@ def self.file_name file_name = nil file_name ? @file_name = file_name : @file_name end def self.pre_install &block - @pre_install ||= block + if block + @pre_install = block + else + @pre_install + end end def self.install &block - @install ||= block + if block + @install = block + else + @install + end end def self.post_install &block - @post_install ||= block + if block + @post_install = block + else + @post_install + end end def self.uninstall &block - @uninstall ||= block + if block + @uninstall = block + else + @uninstall + end end def self.upgrade &block - @upgrade ||= block + if block + @upgrade = block + else + @upgrade + end end def self.installed? &block - @installed ||= block + if block + @installed = block + else + @installed + end end def self.dependencies *dependencies @dependencies ||= [] @@ -115,36 +139,52 @@ end # Add to global collection of rolls # def self.inherited klass - # convert class name to a human readble title-cased string - klass.title klass.to_s.gsub(/(?=[A-Z])/, ' ').strip + return if klass.to_s.include? 'RollModel' - # convert absolute path to a file name symbol - klass.file_name caller.first[/[a-z_]+?(?=\.rb)/].to_sym + add_roll klass, caller + end + def self.add_roll klass, caller + # convert class name to a title string + klass.title class_to_title klass + + # convert caller to a file name symbol + klass.file_name caller_to_file_name caller + Yuyi::Menu.add_roll klass.file_name, klass end + def self.class_to_title klass + klass.to_s.match(/[^:]+$/)[0].gsub(/(?=[A-Z])/, ' ').strip + end + + def self.caller_to_file_name caller + caller.first[/[a-z_]+?(?=\.rb)/].to_sym + end + def self.require_dependencies @dependencies.each do |roll| unless Yuyi::Menu.on_the_menu? roll Yuyi::Menu.find_roll roll end end end def pre_install + return unless self.class.pre_install instance_eval(&self.class.pre_install) end def install instance_eval(&self.class.install) end def post_install + return unless self.class.post_install instance_eval(&self.class.post_install) end def uninstall instance_eval(&self.class.uninstall) @@ -158,9 +198,10 @@ !!instance_eval(&self.class.installed?) end # Helpers for Yuyi Cli methods def say *args; Yuyi.say *args; end + def ask *args; Yuyi.ask *args; end def run *args; Yuyi.run *args; end def command? *args; Yuyi.command? *args; end def osx_version; Yuyi.osx_version; end def on_the_menu? roll