Index: /trunk/PS-IPP-Metadata-Config/Changes
===================================================================
--- /trunk/PS-IPP-Metadata-Config/Changes	(revision 10146)
+++ /trunk/PS-IPP-Metadata-Config/Changes	(revision 10147)
@@ -3,4 +3,6 @@
 0.10
     - fix handling of NULL strings
+    - merge the 'time' production into the 'scalar' production for a ~20% speed boost 
+    - remove support for "epoch format" times
 
 0.09 Thu Oct 26 16:16:28 HST 2006
Index: /trunk/PS-IPP-Metadata-Config/config_grammar.txt
===================================================================
--- /trunk/PS-IPP-Metadata-Config/config_grammar.txt	(revision 10146)
+++ /trunk/PS-IPP-Metadata-Config/config_grammar.txt	(revision 10147)
@@ -1,5 +1,5 @@
 # Copyright (c) 2005  Joshua Hoblitt
 #
-# $Id: config_grammar.txt,v 1.8 2006-11-04 01:25:32 jhoblitt Exp $
+# $Id: config_grammar.txt,v 1.9 2006-11-22 23:54:50 jhoblitt Exp $
 
 {
@@ -7,4 +7,5 @@
 
     use Carp qw( carp );
+    use DateTime::Format::ISO8601;
 
     our @scope_stack;
@@ -29,5 +30,4 @@
     | typedef_declare
     | multi_declare
-    | time
     | <error:unmatched statement: $text>
 
@@ -131,27 +131,4 @@
     <skip:'[ \t\r]*'> comment(?) "\n"
         {{ class   => 'comment_line' }}
-
-time:
-    <skip:'[ \t\r]*'> name ttype <matchrule:$item{ttype}> comment(?) "\n"
-        {
-            use DateTime::Format::ISO8601;
-
-            $return = {
-                class   => 'time',
-                name    => $item{name},
-                type    => $item{ttype},
-                value   => $item[4],
-            };
-
-            $return->{comment} = $item{'comment(?)'}[0]
-                if $item{'comment(?)'}[0];
-
-            if ( defined $thisparser->{local}{name}{ $item{name} } ) {
-                $return->{multi}++
-                    if $thisparser->{local}{name}{ $item{name} } =~ /MULTI/;
-            } else {
-                $thisparser->{local}{name}{ $item{name} }++;
-            }
-        }
 
 typedef_declare:
@@ -261,4 +238,8 @@
     | 'STRING'
     | vtype
+    | 'UTC'
+    | 'UT1'
+    | 'TAI'
+    | 'TT'
 
 vtype: 
@@ -276,10 +257,4 @@
     | 'C64'
     | 'BOOL'
-
-ttype:
-    'UTC'
-    | 'UT1'
-    | 'TAI'
-    | 'TT'
 
 S8: int
@@ -303,8 +278,4 @@
         { [ map { @$_ } @{$item[1]} ] }
 
-tvalue:
-    iso8601
-    | epoch
-
 # backtracking optimization
 _vvalue:
@@ -369,20 +340,16 @@
 UTC:
     iso8601
-    | utc_epoch
     | NULL
 
 UT1:
     iso8601
-    | epoch
     | NULL
 
 TAI:
     iso8601
-    | epoch
     | NULL
 
 TT:
     iso8601
-    | epoch
     | NULL
 
@@ -392,18 +359,4 @@
         { DateTime::Format::ISO8601->parse_datetime( $item[1] ) }
 
-utc_epoch:
-    / (-?\d{1,19}) \s*,\s* (\d{1,9}) (?:\s*,\s* (\d))? /x
-        {{
-            sec         => $1,
-            nsec        => $2,
-            leapsecond  => $3,
-        }}
-
-epoch:
-    / (-?\d{1,19}) \s*,\s* (\d{1,9}) /x
-        {{
-            sec     => $1,
-            nsec    => $2,
-        }}
 NULL:
     /NULL/
Index: /trunk/PS-IPP-Metadata-Config/t/05_time.t
===================================================================
--- /trunk/PS-IPP-Metadata-Config/t/05_time.t	(revision 10146)
+++ /trunk/PS-IPP-Metadata-Config/t/05_time.t	(revision 10147)
@@ -3,5 +3,5 @@
 # Copyright (C) 2005  Joshua Hoblitt
 #
-# $Id: 05_time.t,v 1.4 2006-10-27 02:15:45 jhoblitt Exp $
+# $Id: 05_time.t,v 1.5 2006-11-22 23:54:50 jhoblitt Exp $
 
 use strict;
@@ -12,5 +12,5 @@
 #$::RD_TRACE = 1;
 
-use Test::More tests => 17;
+use Test::More tests => 15;
 use PS::IPP::Metadata::Config;
 
@@ -32,23 +32,23 @@
         {
             name    => 'mytime',
-            class   => 'time',
-            type    => 'UTC',
-            value   => undef,
-        },
-        {
-            name    => 'mytime',
-            class   => 'time',
-            type    => 'UT1',
-            value   => undef,
-        },
-        {
-            name    => 'mytime',
-            class   => 'time',
-            type    => 'TAI',
-            value   => undef,
-        },
-        {
-            name    => 'mytime',
-            class   => 'time',
+            class   => 'scalar',
+            type    => 'UTC',
+            value   => undef,
+        },
+        {
+            name    => 'mytime',
+            class   => 'scalar',
+            type    => 'UT1',
+            value   => undef,
+        },
+        {
+            name    => 'mytime',
+            class   => 'scalar',
+            type    => 'TAI',
+            value   => undef,
+        },
+        {
+            name    => 'mytime',
+            class   => 'scalar',
             type    => 'TT',
             value   => undef,
@@ -74,26 +74,26 @@
         {
             name    => 'mytime',
-            class   => 'time',
-            type    => 'UTC',
-            value   => undef,
-            comment => 'comment',
-        },
-        {
-            name    => 'mytime',
-            class   => 'time',
-            type    => 'UT1',
-            value   => undef,
-            comment => 'comment',
-        },
-        {
-            name    => 'mytime',
-            class   => 'time',
-            type    => 'TAI',
-            value   => undef,
-            comment => 'comment',
-        },
-        {
-            name    => 'mytime',
-            class   => 'time',
+            class   => 'scalar',
+            type    => 'UTC',
+            value   => undef,
+            comment => 'comment',
+        },
+        {
+            name    => 'mytime',
+            class   => 'scalar',
+            type    => 'UT1',
+            value   => undef,
+            comment => 'comment',
+        },
+        {
+            name    => 'mytime',
+            class   => 'scalar',
+            type    => 'TAI',
+            value   => undef,
+            comment => 'comment',
+        },
+        {
+            name    => 'mytime',
+            class   => 'scalar',
             type    => 'TT',
             value   => undef,
@@ -120,23 +120,23 @@
         {
             name    => 'recently',
-            class   => 'time',
-            type    => 'UTC',
-            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
-        },
-        {
-            name    => 'recently',
-            class   => 'time',
-            type    => 'UT1',
-            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
-        },
-        {
-            name    => 'recently',
-            class   => 'time',
-            type    => 'TAI',
-            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
-        },
-        {
-            name    => 'recently',
-            class   => 'time',
+            class   => 'scalar',
+            type    => 'UTC',
+            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
+        },
+        {
+            name    => 'recently',
+            class   => 'scalar',
+            type    => 'UT1',
+            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
+        },
+        {
+            name    => 'recently',
+            class   => 'scalar',
+            type    => 'TAI',
+            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
+        },
+        {
+            name    => 'recently',
+            class   => 'scalar',
             type    => 'TT',
             value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
@@ -162,23 +162,23 @@
         {
             name    => 'recently',
-            class   => 'time',
-            type    => 'UTC',
-            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
-        },
-        {
-            name    => 'recently',
-            class   => 'time',
-            type    => 'UT1',
-            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
-        },
-        {
-            name    => 'recently',
-            class   => 'time',
-            type    => 'TAI',
-            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
-        },
-        {
-            name    => 'recently',
-            class   => 'time',
+            class   => 'scalar',
+            type    => 'UTC',
+            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
+        },
+        {
+            name    => 'recently',
+            class   => 'scalar',
+            type    => 'UT1',
+            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
+        },
+        {
+            name    => 'recently',
+            class   => 'scalar',
+            type    => 'TAI',
+            value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
+        },
+        {
+            name    => 'recently',
+            class   => 'scalar',
             type    => 'TT',
             value   => DateTime::Format::ISO8601->parse_datetime("2005-03-18T16:05:00Z"),
@@ -225,29 +225,29 @@
 }
 
-diag("epoch time format maybe deprecated");
-
-{
-my $example =<<END;
-recently    MULTI
-recently    UTC     123456, 5000, 1
-recently    UT1     123456, 5000
-recently    TAI     123456, 5000
-recently    TT      123456, 5000
-END
-    my $config = $config_parser->parse( $example );
-    ok( defined( $config ), "basic epoch time parsed");
-}
-
-{
-my $example =<<END;
-recently    MULTI
-recently    UTC     123456, 5000, 1         # foo
-recently    UT1     123456, 5000            # bar
-recently    TAI     123456, 5000            # baz
-recently    TT      123456, 5000            #
-END
-    my $config = $config_parser->parse( $example );
-    ok( defined( $config ), "epoch time with comments parsed");
-}
+#diag("epoch time format maybe deprecated");
+#
+#{
+#my $example =<<END;
+#recently    MULTI
+#recently    UTC     123456, 5000, 1
+#recently    UT1     123456, 5000
+#recently    TAI     123456, 5000
+#recently    TT      123456, 5000
+#END
+#    my $config = $config_parser->parse( $example );
+#    ok( defined( $config ), "basic epoch time parsed");
+#}
+#
+#{
+#my $example =<<END;
+#recently    MULTI
+#recently    UTC     123456, 5000, 1         # foo
+#recently    UT1     123456, 5000            # bar
+#recently    TAI     123456, 5000            # baz
+#recently    TT      123456, 5000            #
+#END
+#    my $config = $config_parser->parse( $example );
+#    ok( defined( $config ), "epoch time with comments parsed");
+#}
 
 {
