Improve SQLite parsing when column defs span lines
[dbsrgits/DBIx-Class-Schema-Loader.git] / lib / DBIx / Class / Schema / Loader / DBI / SQLite.pm
index 3bc4522..0a2e09c 100644 (file)
@@ -2,12 +2,15 @@ package DBIx::Class::Schema::Loader::DBI::SQLite;
 
 use strict;
 use warnings;
-use base qw/DBIx::Class::Schema::Loader::DBI/;
+use base qw/
+    DBIx::Class::Schema::Loader::DBI::Component::QuotedDefault
+    DBIx::Class::Schema::Loader::DBI
+/;
 use Carp::Clan qw/^DBIx::Class/;
 use Text::Balanced qw( extract_bracketed );
 use Class::C3;
 
-our $VERSION = '0.04999_09';
+our $VERSION = '0.05002';
 
 =head1 NAME
 
@@ -63,7 +66,7 @@ sub _sqlite_parse_table {
     $sth->finish;
 
     # Cut "CREATE TABLE ( )" blabla...
-    $sql =~ /^[\w\s']+\((.*)\)$/si;
+    $sql =~ /^[\w\s"]+\((.*)\)$/si;
     my $cols = $1;
 
     # strip single-line comments
@@ -116,7 +119,7 @@ sub _sqlite_parse_table {
             $auto_inc{lc $1} = 1;
         }
 
-        next if $col !~ /^(.*\S)\s+REFERENCES\s+(\w+) (?: \s* \( (.*) \) )? /ix;
+        next if $col !~ /^(.*\S)\s+REFERENCES\s+(\w+) (?: \s* \( (.*) \) )? /six;
 
         my ($cols, $f_table, $f_cols) = ($1, $2, $3);
 
@@ -125,7 +128,7 @@ sub _sqlite_parse_table {
             $cols =~ s/\s*\)$//;
         }
         else {               # Inline
-            $cols =~ s/\s+.*$//;
+            $cols =~ s/\s+.*$//s;
         }
 
         my @cols = map { s/\s*//g; lc $_ } split(/\s*,\s*/,$cols);
@@ -200,6 +203,15 @@ sub _tables_list {
 L<DBIx::Class::Schema::Loader>, L<DBIx::Class::Schema::Loader::Base>,
 L<DBIx::Class::Schema::Loader::DBI>
 
+=head1 AUTHOR
+
+See L<DBIx::Class::Schema::Loader/AUTHOR> and L<DBIx::Class::Schema::Loader/CONTRIBUTORS>.
+
+=head1 LICENSE
+
+This library is free software; you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
 =cut
 
 1;