class BunchURLGenerator
Public Instance Methods
generate()
click to toggle source
# File lib/bunch/url_generator.rb, line 249 def generate menu_items = [ MenuItem.new('open', 'Open a Bunch', 'open'), MenuItem.new('close', 'Close a Bunch', 'close'), MenuItem.new('toggle', 'Toggle a Bunch', 'toggle'), MenuItem.new('snippet', 'Load a Snippet', 'snippet'), MenuItem.new('raw', 'Load raw text', 'raw') ] menu = Menu.new(menu_items) finder = BunchFinder.new selection = menu.choose Process.exit 0 unless selection url = "x-bunch://#{selection.value}" parameters = [] case selection.id when /(open|close|toggle)/ parameters << ['bunch', CGI.escape(finder.choose_bunch.value)] when /snippet/ filename = finder.choose_snippet.value parameters << ['file', filename] filename = finder.expand_path(filename) snippet = Snippet.new(filename) fragment = snippet.choose_fragment if fragment parameters << ['fragment', CGI.escape(fragment.title)] contents = fragment.value else contents = snippet.contents end variables = finder.fill_variables(contents) parameters.concat(variables) if variables.length when /raw/ parameters << ['text', menu.url_encode_text] else Process.exit 0 end menu.items = [ MenuItem.new('app', 'Application', 'find_bid'), MenuItem.new('url', 'URL', 'get_line(') ] selection = menu.choose('Add success action? (Enter to skip)') if selection case selection.id when /app/ app = get_line('Application name') value = bundle_id(app) when /url/ value = get_line('URL') end parameters << ['x-success', value] if value delay = get_line('Delay for success action') parameters << ['x-delay', delay.to_s] if delay =~ /^\d+$/ end query_string = parameters.map { |param| "#{param[0]}=#{param[1]}" }.join('&') puts url + '?' + query_string end