| #!/usr/bin/env ruby |
| |
| $LOAD_PATH.unshift '/srv/whimsy/lib' |
| |
| # DRAFT |
| # DRAFT |
| # DRAFT |
| # DRAFT |
| # DRAFT |
| # DRAFT |
| |
| # Test ICLA PDF parsing |
| |
| # Invoke as: |
| # /secretary/icla-parse/yyyymm/hash/icla.pdf |
| |
| print "Content-type: text/plain; charset=UTF-8\r\n\r\n" |
| |
| pathinfo = ENV['PATH_INFO'] |
| iclaname = File.basename(pathinfo) |
| puts "Processing #{pathinfo} to parse #{iclaname}" |
| puts "" |
| |
| begin |
| require_relative 'workbench/models/mailbox' |
| require_relative 'iclaparser' |
| |
| message = Mailbox.find(pathinfo) |
| |
| path = message.find(iclaname).as_file.path |
| |
| parsed = ICLAParser.parse(path) |
| parsed.sort_by{|k,v| k.to_s }.each do |k,v| |
| puts "%-20s %s" % [k,v] unless k == :_meta |
| end |
| puts "" |
| parsed[:_meta].sort_by{|k,v| k.to_s }.each do |k,v| |
| if k == 'info' |
| (v ||{}).sort_by{|k,v| k.to_s }.each do |k,v| |
| puts "%-20s %-15s %s" % ['info',k,v] |
| end |
| elsif k != 'metadata' # can be long |
| puts "%-20s %s" % [k,v] |
| end |
| end |
| metadata = parsed[:_meta]['metadata'] |
| if metadata |
| puts "" |
| puts "metadata:" |
| puts metadata |
| end |
| |
| rescue Exception => e |
| p e |
| end |