#!/usr/local/bin/ruby # # listing.rb # Converts Manual of Style listings to the tag listing format. # By User:Jpatokal in 2006 # # Usage: ./listing.rb <inputfile> # # Expects the following format: # ==Heading== # * '''Name''', Address (''Directions''), tel. Phone, [Url]. Description.  infile = File.new(ARGV[0], "r") linearray = infile.readlines tag = "other" linearray.each{|i|   if i =~ /^==[^=]/     tag = i.downcase.chomp.delete "="   end   i.gsub!('tel.', 'tel')    # match "*", but don't match "**", "* <"   if i =~ /^\* ?[^ <*]/     name = "Unknown"     url, address, dir, phone = nil     if i.index('. ')       head = i[0, i.index('. ')]       foot = i[i.index('. ') + 1, i.length].strip     else       head = i       foot = ""     end     #puts "HEAD #{head}\nFOOT #{foot}"     head.split(/[,*]/).each do |s|       s.strip!       #puts "S #{s}"       case s       # '''Name'''       when /^'/         name = s.delete "\'"        # [Url]       when /^\[/         url = s.delete "[] "        # tel Phone, phone Phone       when /^[Tt]el/, /^[Pp]hone/         s.gsub!(/[Tt]el/, "")         s.gsub!(/[Ph]one/, "")         phone = s.strip        when ""         # do nothing        # Address (''Directions'')       else         s.gsub!(/\(''(.*)''\)/) {|match|           dir = $1           ""         }          address = s.strip       end     end      listing = "* <#{tag} name=\"#{name}\""     listing += " address=\"#{address}\"" if address     listing += " directions=\"#{dir}\"" if dir     listing += " phone=\"#{phone}\"" if phone     listing += " url=\"#{url}\"" if url     listing += ">#{foot}</#{tag}>"     puts listing   else     puts i   end } infile.close