class EmacsOrgProtocolServer::EmacsClientRunner

Attributes

body[RW]
client[RW]
location[RW]
logger[RW]
title[RW]

Public Class Methods

new(params={}, client=nil, logger=Logger.new(STDERR)) click to toggle source
# File lib/emacs_org_protocol_server/emacs_client_runner.rb, line 12
def initialize(params={}, client=nil, logger=Logger.new(STDERR))
  raise NoParameters if params.empty?
  self.logger      = logger
  self.client      = client
  self.location    = params['l'].to_s
  self.title       = params['t'].to_s
  self.body        = params['b'].to_s
end

Public Instance Methods

run!() click to toggle source
# File lib/emacs_org_protocol_server/emacs_client_runner.rb, line 21
def run!
  emacs_target = URI('org-protocol://capture')
  query_data = {
    template: 'w',
    url: location,
    title: title,
    body: body
  }
  query_string = URI.encode_www_form(query_data).gsub('+','%20')
  emacs_target.query = query_string

  cmd = "#{client} -n '#{emacs_target}'"
  logger.info "emacsclient command: #{cmd}"
  system(cmd)
  return ($? == 0)
end