Changeset 10147
- Timestamp:
- Nov 22, 2006, 1:54:50 PM (20 years ago)
- Location:
- trunk/PS-IPP-Metadata-Config
- Files:
-
- 3 edited
-
Changes (modified) (1 diff)
-
config_grammar.txt (modified) (9 diffs)
-
t/05_time.t (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/PS-IPP-Metadata-Config/Changes
r9849 r10147 3 3 0.10 4 4 - fix handling of NULL strings 5 - merge the 'time' production into the 'scalar' production for a ~20% speed boost 6 - remove support for "epoch format" times 5 7 6 8 0.09 Thu Oct 26 16:16:28 HST 2006 -
trunk/PS-IPP-Metadata-Config/config_grammar.txt
r9849 r10147 1 1 # Copyright (c) 2005 Joshua Hoblitt 2 2 # 3 # $Id: config_grammar.txt,v 1. 8 2006-11-04 01:25:32jhoblitt Exp $3 # $Id: config_grammar.txt,v 1.9 2006-11-22 23:54:50 jhoblitt Exp $ 4 4 5 5 { … … 7 7 8 8 use Carp qw( carp ); 9 use DateTime::Format::ISO8601; 9 10 10 11 our @scope_stack; … … 29 30 | typedef_declare 30 31 | multi_declare 31 | time32 32 | <error:unmatched statement: $text> 33 33 … … 131 131 <skip:'[ \t\r]*'> comment(?) "\n" 132 132 {{ class => 'comment_line' }} 133 134 time:135 <skip:'[ \t\r]*'> name ttype <matchrule:$item{ttype}> comment(?) "\n"136 {137 use DateTime::Format::ISO8601;138 139 $return = {140 class => 'time',141 name => $item{name},142 type => $item{ttype},143 value => $item[4],144 };145 146 $return->{comment} = $item{'comment(?)'}[0]147 if $item{'comment(?)'}[0];148 149 if ( defined $thisparser->{local}{name}{ $item{name} } ) {150 $return->{multi}++151 if $thisparser->{local}{name}{ $item{name} } =~ /MULTI/;152 } else {153 $thisparser->{local}{name}{ $item{name} }++;154 }155 }156 133 157 134 typedef_declare: … … 261 238 | 'STRING' 262 239 | vtype 240 | 'UTC' 241 | 'UT1' 242 | 'TAI' 243 | 'TT' 263 244 264 245 vtype: … … 276 257 | 'C64' 277 258 | 'BOOL' 278 279 ttype:280 'UTC'281 | 'UT1'282 | 'TAI'283 | 'TT'284 259 285 260 S8: int … … 303 278 { [ map { @$_ } @{$item[1]} ] } 304 279 305 tvalue:306 iso8601307 | epoch308 309 280 # backtracking optimization 310 281 _vvalue: … … 369 340 UTC: 370 341 iso8601 371 | utc_epoch372 342 | NULL 373 343 374 344 UT1: 375 345 iso8601 376 | epoch377 346 | NULL 378 347 379 348 TAI: 380 349 iso8601 381 | epoch382 350 | NULL 383 351 384 352 TT: 385 353 iso8601 386 | epoch387 354 | NULL 388 355 … … 392 359 { DateTime::Format::ISO8601->parse_datetime( $item[1] ) } 393 360 394 utc_epoch:395 / (-?\d{1,19}) \s*,\s* (\d{1,9}) (?:\s*,\s* (\d))? /x396 {{397 sec => $1,398 nsec => $2,399 leapsecond => $3,400 }}401 402 epoch:403 / (-?\d{1,19}) \s*,\s* (\d{1,9}) /x404 {{405 sec => $1,406 nsec => $2,407 }}408 361 NULL: 409 362 /NULL/ -
trunk/PS-IPP-Metadata-Config/t/05_time.t
r9758 r10147 3 3 # Copyright (C) 2005 Joshua Hoblitt 4 4 # 5 # $Id: 05_time.t,v 1. 4 2006-10-27 02:15:45jhoblitt Exp $5 # $Id: 05_time.t,v 1.5 2006-11-22 23:54:50 jhoblitt Exp $ 6 6 7 7 use strict; … … 12 12 #$::RD_TRACE = 1; 13 13 14 use Test::More tests => 1 7;14 use Test::More tests => 15; 15 15 use PS::IPP::Metadata::Config; 16 16 … … 32 32 { 33 33 name => 'mytime', 34 class => ' time',35 type => 'UTC', 36 value => undef, 37 }, 38 { 39 name => 'mytime', 40 class => ' time',41 type => 'UT1', 42 value => undef, 43 }, 44 { 45 name => 'mytime', 46 class => ' time',47 type => 'TAI', 48 value => undef, 49 }, 50 { 51 name => 'mytime', 52 class => ' time',34 class => 'scalar', 35 type => 'UTC', 36 value => undef, 37 }, 38 { 39 name => 'mytime', 40 class => 'scalar', 41 type => 'UT1', 42 value => undef, 43 }, 44 { 45 name => 'mytime', 46 class => 'scalar', 47 type => 'TAI', 48 value => undef, 49 }, 50 { 51 name => 'mytime', 52 class => 'scalar', 53 53 type => 'TT', 54 54 value => undef, … … 74 74 { 75 75 name => 'mytime', 76 class => ' time',77 type => 'UTC', 78 value => undef, 79 comment => 'comment', 80 }, 81 { 82 name => 'mytime', 83 class => ' time',84 type => 'UT1', 85 value => undef, 86 comment => 'comment', 87 }, 88 { 89 name => 'mytime', 90 class => ' time',91 type => 'TAI', 92 value => undef, 93 comment => 'comment', 94 }, 95 { 96 name => 'mytime', 97 class => ' time',76 class => 'scalar', 77 type => 'UTC', 78 value => undef, 79 comment => 'comment', 80 }, 81 { 82 name => 'mytime', 83 class => 'scalar', 84 type => 'UT1', 85 value => undef, 86 comment => 'comment', 87 }, 88 { 89 name => 'mytime', 90 class => 'scalar', 91 type => 'TAI', 92 value => undef, 93 comment => 'comment', 94 }, 95 { 96 name => 'mytime', 97 class => 'scalar', 98 98 type => 'TT', 99 99 value => undef, … … 120 120 { 121 121 name => 'recently', 122 class => ' time',123 type => 'UTC', 124 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 125 }, 126 { 127 name => 'recently', 128 class => ' time',129 type => 'UT1', 130 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 131 }, 132 { 133 name => 'recently', 134 class => ' time',135 type => 'TAI', 136 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 137 }, 138 { 139 name => 'recently', 140 class => ' time',122 class => 'scalar', 123 type => 'UTC', 124 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 125 }, 126 { 127 name => 'recently', 128 class => 'scalar', 129 type => 'UT1', 130 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 131 }, 132 { 133 name => 'recently', 134 class => 'scalar', 135 type => 'TAI', 136 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 137 }, 138 { 139 name => 'recently', 140 class => 'scalar', 141 141 type => 'TT', 142 142 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), … … 162 162 { 163 163 name => 'recently', 164 class => ' time',165 type => 'UTC', 166 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 167 }, 168 { 169 name => 'recently', 170 class => ' time',171 type => 'UT1', 172 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 173 }, 174 { 175 name => 'recently', 176 class => ' time',177 type => 'TAI', 178 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 179 }, 180 { 181 name => 'recently', 182 class => ' time',164 class => 'scalar', 165 type => 'UTC', 166 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 167 }, 168 { 169 name => 'recently', 170 class => 'scalar', 171 type => 'UT1', 172 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 173 }, 174 { 175 name => 'recently', 176 class => 'scalar', 177 type => 'TAI', 178 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), 179 }, 180 { 181 name => 'recently', 182 class => 'scalar', 183 183 type => 'TT', 184 184 value => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"), … … 225 225 } 226 226 227 diag("epoch time format maybe deprecated");228 229 {230 my $example =<<END;231 recently MULTI232 recently UTC 123456, 5000, 1233 recently UT1 123456, 5000234 recently TAI 123456, 5000235 recently TT 123456, 5000236 END237 my $config = $config_parser->parse( $example );238 ok( defined( $config ), "basic epoch time parsed");239 }240 241 {242 my $example =<<END;243 recently MULTI244 recently UTC 123456, 5000, 1 # foo245 recently UT1 123456, 5000 # bar246 recently TAI 123456, 5000 # baz247 recently TT 123456, 5000 #248 END249 my $config = $config_parser->parse( $example );250 ok( defined( $config ), "epoch time with comments parsed");251 }227 #diag("epoch time format maybe deprecated"); 228 # 229 #{ 230 #my $example =<<END; 231 #recently MULTI 232 #recently UTC 123456, 5000, 1 233 #recently UT1 123456, 5000 234 #recently TAI 123456, 5000 235 #recently TT 123456, 5000 236 #END 237 # my $config = $config_parser->parse( $example ); 238 # ok( defined( $config ), "basic epoch time parsed"); 239 #} 240 # 241 #{ 242 #my $example =<<END; 243 #recently MULTI 244 #recently UTC 123456, 5000, 1 # foo 245 #recently UT1 123456, 5000 # bar 246 #recently TAI 123456, 5000 # baz 247 #recently TT 123456, 5000 # 248 #END 249 # my $config = $config_parser->parse( $example ); 250 # ok( defined( $config ), "epoch time with comments parsed"); 251 #} 252 252 253 253 {
Note:
See TracChangeset
for help on using the changeset viewer.
