Class: SublimeDSL::SublimeText::SettingSet::DSLReader
- Inherits:
-
Tools::BlankSlate
- Object
- Tools::BlankSlate
- SublimeDSL::SublimeText::SettingSet::DSLReader
- Defined in:
- lib/sublime_dsl/sublime_text/setting_set.rb
Constant Summary
Constants inherited from Tools::BlankSlate
Tools::BlankSlate::KEPT_METHODS
Instance Method Summary collapse
- #_setting_sets ⇒ Object
-
#initialize(file = nil) ⇒ DSLReader
constructor
A new instance of DSLReader.
- #method_missing(sym, *args, &block) ⇒ Object
- #settings(name, &block) ⇒ Object
Constructor Details
#initialize(file = nil) ⇒ DSLReader
Returns a new instance of DSLReader.
93 94 95 96 97 |
# File 'lib/sublime_dsl/sublime_text/setting_set.rb', line 93 def initialize(file = nil) @setting_sets = [] @current_set = nil instance_eval File.read(file, encoding: 'utf-8'), file if file end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
103 104 105 106 107 108 |
# File 'lib/sublime_dsl/sublime_text/setting_set.rb', line 103 def method_missing(sym, *args, &block) @current_set or raise Error, "'#{sym}' is invalid outside of a 'settings' block" args.empty? and raise Error, "no value for setting '#{sym}'" args.length > 1 and raise Error, "more than one value for setting '#{sym}'" @current_set.settings << Setting.new(sym.to_s, args.first) end |
Instance Method Details
#_setting_sets ⇒ Object
99 100 101 |
# File 'lib/sublime_dsl/sublime_text/setting_set.rb', line 99 def _setting_sets @setting_sets end |
#settings(name, &block) ⇒ Object
110 111 112 113 114 115 116 |
# File 'lib/sublime_dsl/sublime_text/setting_set.rb', line 110 def settings(name, &block) @current_set and raise Error, "'settings' blocks cannot be nested" @current_set = SettingSet.new(name) instance_eval(&block) @setting_sets << @current_set @current_set = nil end |