Class: Boom::Platform

Inherits:
Object
  • Object
show all
Defined in:
lib/boom/platform.rb

Class Method Summary collapse

Class Method Details

.copy(item) ⇒ Object

Public: copies a given Item’s value to the clipboard. This method is designed to handle multiple platforms.

Returns the String value of the Item.



77
78
79
80
81
82
83
84
85
86
# File 'lib/boom/platform.rb', line 77

def copy(item)
  begin
    IO.popen(copy_command,"w") {|cc|  cc.write(item.value)}
    item.value
  rescue Errno::ENOENT
    puts item.value
    puts "Please install #{copy_command[0..5]} to copy this item to your clipboard"
    exit
  end
end

.copy_commandObject

Public: returns the command used to copy a given Item’s value to the clipboard for the current platform.

Returns a String with the bin



63
64
65
66
67
68
69
70
71
# File 'lib/boom/platform.rb', line 63

def copy_command
  if darwin?
    'pbcopy'
  elsif windows?
    'clip'
  else
    'xclip -selection clipboard'
  end
end

.darwin?Boolean

Public: tests if currently running on darwin.

Returns true if running on darwin (MacOS X), else false

Returns:

  • (Boolean)


16
17
18
# File 'lib/boom/platform.rb', line 16

def darwin?
  !!(RbConfig::CONFIG['host_os'] =~ /darwin/)
end

.edit(json_file) ⇒ Object

Public: opens the JSON file in an editor for you to edit. Uses the $EDITOR environment variable, or %EDITOR% on Windows for editing. This method is designed to handle multiple platforms. If $EDITOR is nil, try to open using the open_command.

Returns a String with a helpful message.



94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/boom/platform.rb', line 94

def edit(json_file)
  unless ENV['EDITOR'].nil?
    unless windows?
      system("`echo $EDITOR` #{json_file} &")
    else
      system("start %EDITOR% #{json_file}")
    end
  else
    system("#{open_command} #{json_file}")
  end

  "Make your edits, and do be sure to save."
end

.open(item) ⇒ Object

Public: opens a given Item’s value in the browser. This method is designed to handle multiple platforms.

Returns a String of the Item value.



49
50
51
52
53
54
55
56
57
# File 'lib/boom/platform.rb', line 49

def open(item)
  unless windows?
    system("#{open_command} '#{item.url.gsub("\'","'\\\\''")}'")
  else
    system("#{open_command} #{item.url.gsub("\'","'\\\\''")}")
  end

  item.value
end

.open_commandObject

Public: returns the command used to open a file or URL for the current platform.

Currently only supports MacOS X and Linux with ‘xdg-open`.

Returns a String with the bin



35
36
37
38
39
40
41
42
43
# File 'lib/boom/platform.rb', line 35

def open_command
  if darwin?
    'open'
  elsif windows?
    'start'
  else
    'xdg-open'
  end
end

.windows?Boolean

Public: tests if currently running on windows.

Apparently Windows RUBY_PLATFORM can be ‘win32’ or ‘mingw32’

Returns true if running on windows (win32/mingw32), else false

Returns:

  • (Boolean)


25
26
27
# File 'lib/boom/platform.rb', line 25

def windows?
  !!(RbConfig::CONFIG['host_os'] =~ /mswin|mingw/)
end