Doc tweaks
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Parser / XML / SQLFairy.pm
index baa2cbb..d4a06ad 100644 (file)
@@ -1,7 +1,7 @@
 package SQL::Translator::Parser::XML::SQLFairy;
 
 # -------------------------------------------------------------------
-# $Id: SQLFairy.pm,v 1.7 2004-07-08 19:34:29 grommit Exp $
+# $Id: SQLFairy.pm,v 1.9 2004-08-19 14:08:59 grommit Exp $
 # -------------------------------------------------------------------
 # Copyright (C) 2003 Mark Addison <mark.addison@itn.co.uk>,
 #
@@ -103,7 +103,7 @@ To convert your old format files simply pass them through the translator;
 use strict;
 
 use vars qw[ $DEBUG $VERSION @EXPORT_OK ];
-$VERSION = sprintf "%d.%02d", q$Revision: 1.7 $ =~ /(\d+)\.(\d+)/;
+$VERSION = sprintf "%d.%02d", q$Revision: 1.9 $ =~ /(\d+)\.(\d+)/;
 $DEBUG   = 0 unless defined $DEBUG;
 
 use Data::Dumper;
@@ -127,7 +127,9 @@ sub parse {
     #
     # Work our way through the tables
     #
-    my @nodes = $xp->findnodes('/sqlf:schema/sqlf:table');
+    my @nodes = $xp->findnodes(
+        '/sqlf:schema/sqlf:table|/sqlf:schema/sqlf:tables/sqlf:table'
+    );
     for my $tblnode (
         sort {
             "".$xp->findvalue('sqlf:order|@order',$a)
@@ -153,7 +155,7 @@ sub parse {
             } @nodes
         ) {
             my %fdata = get_tagfields($xp, $_, "sqlf:",
-                qw/name data_type size default_value is_nullable 
+                qw/name data_type size default_value is_nullable extra
                 is_auto_increment is_primary_key is_foreign_key comments/
             );
 
@@ -177,7 +179,6 @@ sub parse {
             # TODO:
             # - We should be able to make the table obj spot this when
             #   we use add_field.
-            # - Deal with $field->extra
             #
         }
 
@@ -208,7 +209,9 @@ sub parse {
     #
     # Views
     #
-    @nodes = $xp->findnodes('/sqlf:schema/sqlf:view');
+    @nodes = $xp->findnodes(
+        '/sqlf:schema/sqlf:view|/sqlf:schema/sqlf:views/sqlf:view'
+    );
     foreach (@nodes) {
         my %data = get_tagfields($xp, $_, "sqlf:",
             qw/name sql fields order/
@@ -219,7 +222,9 @@ sub parse {
     #
     # Triggers
     #
-    @nodes = $xp->findnodes('/sqlf:schema/sqlf:trigger');
+    @nodes = $xp->findnodes(
+        '/sqlf:schema/sqlf:trigger|/sqlf:schema/sqlf:triggers/sqlf:trigger'
+    );
     foreach (@nodes) {
         my %data = get_tagfields($xp, $_, "sqlf:",
         qw/name perform_action_when database_event fields on_table action order/
@@ -230,7 +235,9 @@ sub parse {
     #
     # Procedures
     #
-    @nodes = $xp->findnodes('/sqlf:schema/sqlf:procedure');
+    @nodes = $xp->findnodes(
+       '/sqlf:schema/sqlf:procedure|/sqlf:schema/sqlf:procedures/sqlf:procedure'
+    );
     foreach (@nodes) {
         my %data = get_tagfields($xp, $_, "sqlf:",
         qw/name sql parameters owner comments order/
@@ -257,7 +264,7 @@ sub get_tagfields {
         if ( m/:$/ ) { $ns = $_; next; }  # Set def namespace
         my $thisns = (s/(^.*?:)// ? $1 : $ns);
 
-        my $is_attrib = m/^sql|comments|action$/ ? 0 : 1;
+        my $is_attrib = m/^(sql|comments|action|extra)$/ ? 0 : 1;
 
         my $attrib_path = "\@$thisns$_";
         my $tag_path    = "$thisns$_";
@@ -270,7 +277,17 @@ sub get_tagfields {
             debug "Got $_=".( defined $data{ $_ } ? $data{ $_ } : 'UNDEF' );
         }
         elsif ( $xp->exists($tag_path,$node) ) {
-            $data{$_} = "".$xp->findvalue($tag_path,$node);
+            if ($_ eq "extra") {
+                my %extra;
+                my $extra_nodes = $xp->find($tag_path,$node);
+                foreach ( $extra_nodes->pop->getAttributes ) {
+                    $extra{$_->getName} = $_->getData;
+                }
+                $data{$_} = \%extra;
+            }
+            else {
+                $data{$_} = "".$xp->findvalue($tag_path,$node);
+            }
             warn "Use of '$_' as a child tag is depricated."
                 ." Use an attribute instead."
                 ." To convert your file to the new version see the Docs.\n"
@@ -300,7 +317,7 @@ output by the SQLFairy XML producer).
 
 =item *
 
-Support options and extra attributes.
+Support options attribute.
 
 =item *