Class: SublimeDSL::SublimeText::SettingSet::DSLReader

Inherits:
Tools::BlankSlate show all
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

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_setsObject



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