class SublimeDSL::SublimeText::MouseMap::DSLReader

Public Class Methods

new(file = nil) click to toggle source
# 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

Public Instance Methods

_mousemaps() click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 128
def _mousemaps
  @mousemaps
end
button_names(maps={}) click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 140
def button_names(maps={})
  # create a copy of the Sublime mouse
  @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={}) click to toggle source
# 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={}) click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 150
def click1(spec, options={})
  click spec, options.merge({ count: 1 })
end
click2(spec, options={}) click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 154
def click2(spec, options={})
  click spec, options.merge({ count: 2 })
end
click3(spec, options={}) click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 158
def click3(spec, options={})
  click spec, options.merge({ count: 3 })
end
method_missing(sym, *args, &block) click to toggle source
# 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
mousemap(name, &block) click to toggle source
# 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