diff --git a/trunk/cgi-bin/DateTime/Format/DateParse.pm b/trunk/cgi-bin/DateTime/Format/DateParse.pm new file mode 100644 index 0000000..321fd18 --- /dev/null +++ b/trunk/cgi-bin/DateTime/Format/DateParse.pm @@ -0,0 +1,79 @@ +package DateTime::Format::DateParse; + +# Copyright (C) 2005-6 Joshua Hoblitt +# +# $Id: DateParse.pm 3517 2006-09-17 23:10:10Z jhoblitt $ + +use strict; + +use vars qw($VERSION); +$VERSION = '0.04'; + +use DateTime; +use DateTime::TimeZone; +use Date::Parse qw( strptime ); +use Time::Zone qw( tz_offset ); + +sub parse_datetime { + my ($class, $date, $zone) = @_; + + # str2time() calls strptime() internally so it's more efficent to use + # strptime() directly. However, the extra validation done by using + # DateTime->new() instad of DateTime->from_epoch() may make it into a net + # loss. In the end, it turns out that strptime()'s offset information is + # needed anyways. + my @t = strptime( $date, $zone ); + + return undef unless @t; + + my ($ss, $mm, $hh, $day, $month, $year, $offset) = @t; + + my %p; + if ( $ss ) { + my $fraction = $ss - int( $ss ); + $p{ nanosecond } = $fraction * 1e9 if $fraction; + $p{ second } = int $ss; + } + $p{ minute } = $mm if $mm; + $p{ hour } = $hh if $hh; + $p{ day } = $day if $day; + $p{ month } = $month + 1 if $month; + $p{ year } = $year ? $year + 1900 : DateTime->now->year; + + # unless there is an explict ZONE, Date::Parse seems to parse date only + # formats, eg. "1995-01-24", as being in the 'local' timezone. + unless ( defined $zone || defined $offset ) { + return DateTime->new( + %p, + time_zone => 'local', + ); + } + + if ( $zone ) { + if ( DateTime::TimeZone->is_valid_name( $zone ) ) { + return DateTime->new( + %p, + time_zone => $zone, + ); + } else { + # attempt to convert Time::Zone tz's into an offset + return DateTime->new( + %p, + time_zone => + # not an Olson timezone, no DST info + DateTime::TimeZone::offset_as_string( tz_offset( $zone ) ), + ); + } + } + + return DateTime->new( + %p, + time_zone => + # not an Olson timezone, no DST info + DateTime::TimeZone::offset_as_string( $offset ), + ); +} + +1; + +__END__ diff --git a/trunk/cgi-bin/westminster.rb b/trunk/cgi-bin/westminster.rb new file mode 100644 index 0000000..5f047bd --- /dev/null +++ b/trunk/cgi-bin/westminster.rb @@ -0,0 +1,64 @@ +#!/opt/local/bin/ruby + +description = nil +address = nil +ref = nil +getaddress = false +url = nil + +puts ' +City of Westminster +Westminster +' + +while line = gets + if line.index('Proposal:') + description = line.gsub('Proposal:','').gsub('','').strip + end + + if line.index('','').strip + ref = ref[ref.index('>')+1..ref.length] + + url = line.gsub('')] + end + + if getaddress + getaddress = false if line.index('Proposal:') + end + + if getaddress + address += line.gsub('','').strip + ' ' + end + + if line.index('Address:') + address = line.gsub('Address:','').strip + ' ' + getaddress = true + end + + if line.index('') and address + puts '' + puts "#{ref}" + puts "
#{address.strip}
" + if address + m = address.strip.match(/[A-Z]?[A-Z]\d?\d \d[A-Z][A-Z]/) + if m + puts "#{m}" + else + puts "" + end + end + puts "#{description}" + + puts "http://www3.westminster.gov.uk/planningapplications/#{url}" + puts "" + + puts '
' + + end + +end + +puts '
' +puts '
'