#!/usr/bin/ruby require 'rubygems' require 'sqlite3' class App def initialize @db = nil @dbfile = 'wmo9.sqlite' end def open @db = SQLite3::Database.new(@dbfile) end def close @db.close end def scan cmd case cmd when /^[A-Z]{4}\d\d$/ then cmd = "WHERE ttaaii = '#{cmd}'" when /^[A-Z]{4}$/ then cmd = "WHERE cccc = '#{cmd}'" when /^([A-Z]{4}\d\d) ([A-Z]{4})$/ then cmd = "WHERE ttaaii = '#{$1}' AND cccc = '#{$2}'" when /^([A-Z_]{4}[\d_]{2})$/ then cmd = "WHERE ttaaii like '#{$1}'" when /^([A-Z_]{4}[\d_]{2}) ([A-Z]{4})$/ then cmd = "WHERE ttaaii like '#{$1}' AND cccc = '#{$2}'" end sql = <<-ENDSQL SELECT region, rth, country, centre, datetime(date), category, ttaaii, cccc, codeform, timegroup, content, remarks FROM volc1 #{cmd} ENDSQL cols = nil n = 0 @db.execute2(sql) do |row| if cols.nil? then cols = row else puts cols.zip(row).map{|k, v| "#{k}=#{v}" }.join("\t") end end end def run argv while /^-/ =~ argv.first case arg = argv.shift when /^-d/ then @dbfile = $' end end open scan(argv.join(' ')) close end end App.new.run(ARGV)