Uproar gets its own page

Code Projects, uproar — Tags: , , — Ardekantur @ 8:06 pm

Here we go: http://www.ardekantur.com/misc/uproar/ - the perfect spot for a tiny lil piece of code like Uproar. Updates will come frequently, as I’m now using it daily. The output of search results has changed a little bit to make it more digestable.

Uproar Improved

Code Projects, uproar — Tags: , , , — Ardekantur @ 1:07 am

Rather than sleep, I’ve decided to improve (read: radically bloat) uproar.rb.

uproar.rb

# uproar.rb - search a YAML-encoded list of links for matching tags 
# ardekantur.com  
 
%w[ rubygems yaml open-uri hpricot ].each { |x| require x }  
 
def set_option hash, name, default 
  i = ARGV.index(name) 
  hash[name] = i ? ARGV[i + 1] : default 
end  
 
def search_tags file, tag 
  links = File.open( file ) 
  db = [] 
  YAML::load_documents( links ) { |doc| db << doc }  
 
  matches = [] 
  db.each { |l| matches << l if l['tags'].include? tag } 
  matches.each { |l| printf "%30s... - %s\n", l['title'][0..30], l['link'] } 
end  
 
def add_link file, address, tags 
  doc = Hpricot(open(address)) 
  title = doc.at("title").inner_html.strip 
  puts "Adding '#{title}' to #{file}..."  
 
  links = File.new( file, "a" ) 
  links.puts "\n---" 
  links.puts "title: '#{title.gsub(/'/, '\'\'')}'" 
  links.puts "link: #{address}" 
  tags = tags ? tags.strip.gsub(/ /, ', ') : '' 
  links.puts "tags: [#{tags}]" 
  links.close  
 
end  
 
o = {} 
set_option o, '-s', nil 
set_option o, '-f', 'Links.yaml' 
set_option o, '-t', '' 
set_option o, '-a', nil  
 
raise "please specify either a tag to search for or a link to add." if (!o['-s'] and !o['-a']) or (o['-s'] and o['-a'])  
 
search_tags o['-f'], o['-s'] if o['-s'] 
add_link o['-f'], o['-a'], o['-t'] if o['-a']

New functionality! Specify your links file with -f filename.yaml. Searching with tags now uses -s tag instead of -t tag. Adding a link works like this: ruby Uproar.rb -a http://webaddress.com/ -t "space separated list of tags". The title is grabbed automagically for you :)

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2008 Ardekantur | powered by WordPress with Barecity