class SettingsManager
all about settings
Attributes
default_settings[R]
homedir_settings[R]
settings[R]
Public Class Methods
new(hash)
click to toggle source
expacting :homedir_path, :default_path, template_path
# File lib/ascii_invoicer/settings_manager.rb, line 12 def initialize hash @init_hash = Hashr.new hash raise "SettingsManager: No default file given." unless @init_hash.default_path? raise "SettingsManager: No homedir file given." unless @init_hash.homedir_path? @init_hash.default_path = File.expand_path @init_hash.default_path @init_hash.homedir_path = File.expand_path @init_hash.homedir_path @init_hash.template_path = File.expand_path @init_hash.template_path if @init_hash.template_path? if File.exists?(@init_hash.default_path) @default_settings = load_file @init_hash.default_path else raise "SettingsManager: Default settings file does not exist (#{@init_hash.default_path})." end if not File.exists?(@init_hash.homedir_path) if @init_hash.template_path? raise "SettingsManager: Template file does not exist" unless File.exists?(@init_hash.template_path) puts "#{@init_hash.homedir_path} does not exist, but #{@init_hash.homedir_path} does" puts "-> copying over" FileUtils.cp @init_hash.template_path, @init_hash.homedir_path else # using only default_settings # suggested use: used a default_settings as template, perhaps comment out everything end else @homedir_settings = load_file @init_hash.homedir_path end # putting it all together @settings = Hashr.new @default_settings.graft @homedir_settings # adding some meta stuff @settings.settings_homedir_path = @init_hash.homedir_path @settings.settings_default_path = @init_hash.default_path @settings.settings_template_path = @init_hash.template_path @settings.default_settings = @default_settings @settings.homedir_settings = @homedir_settings return @settings end
Public Instance Methods
load_file(path)
click to toggle source
# File lib/ascii_invoicer/settings_manager.rb, line 54 def load_file path begin YAML::load File.open File.expand_path path rescue SyntaxError => error puts "ERROR parsing #{File.expand_path path}!" puts error end end