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.



86
87
88
89
90
91
92
93
94
95
# File 'lib/boom/platform.rb', line 86

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



72
73
74
75
76
77
78
79
80
# File 'lib/boom/platform.rb', line 72

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

.cygwin?Boolean

Public: tests if currently running on cygwin.

Returns true if running on Cygwin, else false

Returns:

  • (Boolean)


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

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

.darwin?Boolean

Public: tests if currently running on darwin.

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

Returns:

  • (Boolean)


23
24
25
# File 'lib/boom/platform.rb', line 23

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.



103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/boom/platform.rb', line 103

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.



58
59
60
61
62
63
64
65
66
# File 'lib/boom/platform.rb', line 58

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



42
43
44
45
46
47
48
49
50
51
52
# File 'lib/boom/platform.rb', line 42

def open_command
  if darwin?
    'open'
  elsif windows?
    'start'
  elsif cygwin?
    'cygstart'
  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)


32
33
34
# File 'lib/boom/platform.rb', line 32

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