Class: SublimeDSL::SublimeText::MouseMap::DSLReader
Constant Summary
Tools::BlankSlate::KEPT_METHODS
Instance Method Summary
collapse
Constructor Details
#initialize(file = nil) ⇒ DSLReader
Returns a new instance of DSLReader.
121
122
123
124
125
126
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 121
def initialize(file = nil)
@mousemaps = []
@current_map = nil
@mouse = Mouse.sublime
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
175
176
177
178
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 175
def method_missing(sym, *args, &block)
@current_map or raise Error, "'#{sym}' is invalid outside of a 'mousemap' block"
Command.from_method_missing(sym, args)
end
|
Instance Method Details
#_mousemaps ⇒ Object
128
129
130
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 128
def _mousemaps
@mousemaps
end
|
140
141
142
143
144
145
146
147
148
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 140
def button_names(maps={})
@mouse = Mouse.sublime.clone('Custom Names')
maps.each_pair do |name, st_name|
b = @mouse.modifier(st_name) or
raise Error, "no button nor modifier named '#{st_name}'"
b.name = name
end
end
|
#click(spec, options = {}) ⇒ Object
162
163
164
165
166
167
168
169
170
171
172
173
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 162
def click(spec, options={})
@current_map or raise Error, "'click' is invalid outside of a 'mousemap' block"
click = @mouse.ensure_click(spec)
count = options.delete(:count)
press_cmd = options.delete(:down)
press_cmd && press_cmd.error and raise Error, "click '#{spec}':#{press_cmd.error}"
cmd = options.delete(:up)
cmd && cmd.error and raise Error, "click '#{spec}':#{cmd.error}"
press_cmd || cmd or
raise Error, "click '#{spec}': no 'up' nor 'down' command"
@current_map.bindings << MouseBinding.new(click, count, press_cmd, cmd)
end
|
#click1(spec, options = {}) ⇒ Object
150
151
152
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 150
def click1(spec, options={})
click spec, options.merge({ count: 1 })
end
|
#click2(spec, options = {}) ⇒ Object
154
155
156
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 154
def click2(spec, options={})
click spec, options.merge({ count: 2 })
end
|
#click3(spec, options = {}) ⇒ Object
158
159
160
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 158
def click3(spec, options={})
click spec, options.merge({ count: 3 })
end
|
#mousemap(name, &block) ⇒ Object
132
133
134
135
136
137
138
|
# File 'lib/sublime_dsl/sublime_text/mousemap.rb', line 132
def mousemap(name, &block)
@current_map and raise Error, "'mousemap' blocks cannot be nested"
@current_map = MouseMap.new(name)
instance_eval(&block)
@mousemaps << @current_map
@current_map = nil
end
|