class SublimeDSL::SublimeText::MouseMap::MouseBinding

A mouse binding: a click with its command(s).

Attributes

click[R]
command[R]
count[R]
press_command[R]
source_file[RW]

Public Class Methods

from_json(json_hash) click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 63
def self.from_json(json_hash)
  h = json_hash.dup

  button = h.delete('button') or raise Error, 'no button: ' << json_hash.inspect
  modifiers = h.delete('modifiers')
  spec = [*modifiers, button].join('+')
  click = Mouse.sublime.ensure_click(spec)

  count = h.delete('count')
  count = count.to_i if count

  press = h.delete('press_command')
  press_command = press ? Command.new(press, h.delete('press_args')) : nil

  cmd = h.delete('command')
  command = cmd ? Command.new(cmd, h.delete('args')) : nil

  h.empty? or raise Error, 'unexpected JSON keys: ' << h.inspect
  new(click, count, press_command, command)

rescue => ex
  warn "error with binding #{json_hash.inspect}"
  warn ex.message
  raise
end
new(click, count, press_command, command) click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 92
def initialize(click, count, press_command, command)
  @click = click
  @count = count
  @press_command = press_command
  @command = command
end

Public Instance Methods

to_dsl() click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 99
def to_dsl
  spec = click.to_spec
  dsl = "click#{count} #{spec.to_source}"
  dsl << ", down: #{press_command.to_dsl}" if press_command
  dsl << ", up: #{command.to_dsl}" if command

  dsl
end
to_h() click to toggle source
# File lib/sublime_dsl/sublime_text/mousemap.rb, line 108
def to_h
  h = click.to_h
  h['count'] = count if count
  h.merge! press_command.to_h('press_command', 'press_args') if press_command
  h.merge! command.to_h if command
  h
end