Class: SublimeDSL::SublimeText::CommandSet::DSLReader

Inherits:
Tools::BlankSlate show all
Defined in:
lib/sublime_dsl/sublime_text/command_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.



77
78
79
80
81
# File 'lib/sublime_dsl/sublime_text/command_set.rb', line 77

def initialize(file = nil)
  @command_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



101
102
103
104
# File 'lib/sublime_dsl/sublime_text/command_set.rb', line 101

def method_missing(sym, *args, &block)
  @current_set or raise Error, "'#{sym}' is invalid outside of a 'commands' block"
  Command.from_method_missing(sym, args)
end

Instance Method Details

#_command_setsObject



83
84
85
# File 'lib/sublime_dsl/sublime_text/command_set.rb', line 83

def _command_sets
  @command_sets
end

#commands(name, &block) ⇒ Object



87
88
89
90
91
92
93
# File 'lib/sublime_dsl/sublime_text/command_set.rb', line 87

def commands(name, &block)
  @current_set and raise Error, "'commands' blocks cannot be nested"
  @current_set = CommandSet.new(name)
  instance_eval(&block)
  @command_sets << @current_set
  @current_set = nil
end

#item(caption, cmd) ⇒ Object



95
96
97
98
99
# File 'lib/sublime_dsl/sublime_text/command_set.rb', line 95

def item(caption, cmd)
  @current_set or raise Error, "'item' is invalid outside of a 'commands' block"
  cmd.error and raise Error, "item '#{caption}': #{cmd.error}"
  @current_set.items << Item.new(caption, cmd)
end