Fix multi-line comments in YAML and JSON producers
Dagfinn Ilmari Mannsåker [Tue, 8 Sep 2015 17:04:42 +0000 (18:04 +0100)]
Changes
lib/SQL/Translator/Producer/JSON.pm
lib/SQL/Translator/Producer/YAML.pm
t/23json.t
t/24yaml.t
t/data/sqlite/create.sql

diff --git a/Changes b/Changes
index 0e43239..4d36f95 100644 (file)
--- a/Changes
+++ b/Changes
@@ -14,6 +14,7 @@ Changes for SQL::Translator
  * Fix parsing of strings with leading whitespace for MySQL, Oracle, PostgreSQL,
    SQLServer and SQLite
  * Fix parsing of MySQL column comments (RT#83380)
+ * Fix multi-line comments in YAML and JSON producers
 
 0.11021 2015-01-29
 
index 0095316..890a958 100644 (file)
@@ -72,7 +72,7 @@ sub view_table {
         'name'        => $table->name,
         'order'       => $table->order,
         'options'     => $table->options  || [],
-        $table->comments ? ('comments'    => $table->comments ) : (),
+        $table->comments ? ('comments'    => [ $table->comments ] ) : (),
         'constraints' => [
             map { view_constraint($_) } $table->get_constraints
         ],
@@ -119,7 +119,7 @@ sub view_field {
         'is_primary_key'    => scalar $field->is_primary_key,
         'is_unique'         => scalar $field->is_unique,
         $field->is_auto_increment ? ('is_auto_increment' => 1) : (),
-        $field->comments ? ('comments' => $field->comments) : (),
+        $field->comments ? ('comments' => [ $field->comments ]) : (),
         keys %{$field->extra} ? ('extra' => { $field->extra } ) : (),
     };
 }
index 177cbdf..49d7029 100644 (file)
@@ -71,7 +71,7 @@ sub view_table {
         'name'        => $table->name,
         'order'       => $table->order,
         'options'     => $table->options  || [],
-        $table->comments ? ('comments'    => $table->comments ) : (),
+        $table->comments ? ('comments'    => [ $table->comments ] ) : (),
         'constraints' => [
             map { view_constraint($_) } $table->get_constraints
         ],
@@ -118,7 +118,7 @@ sub view_field {
         'is_primary_key'    => scalar $field->is_primary_key,
         'is_unique'         => scalar $field->is_unique,
         $field->is_auto_increment ? ('is_auto_increment' => 1) : (),
-        $field->comments ? ('comments' => $field->comments) : (),
+        $field->comments ? ('comments' => [ $field->comments ]) : (),
         keys %{$field->extra} ? ('extra' => { $field->extra } ) : (),
     };
 }
index 0b063e2..cfc721c 100644 (file)
@@ -104,6 +104,10 @@ my $json = to_json(from_json(<<JSON), { canonical => 1, pretty => 1 });
                   ]
                },
                "person_id" : {
+                  "comments" : [
+                    "field comment 1",
+                    "field comment 2"
+                  ],
                   "data_type" : "INTEGER",
                   "default_value" : null,
                   "is_auto_increment" : 1,
index 08757d9..e177907 100644 (file)
@@ -87,6 +87,9 @@ schema:
           size:
             - 20
         person_id:
+          comments:
+            - field comment 1
+            - field comment 2
           data_type: INTEGER
           default_value: ~
           is_auto_increment: 1
index f7a397f..56f1153 100644 (file)
@@ -1,4 +1,6 @@
 create table person (
+  -- field comment 1
+  -- field comment 2
   person_id INTEGER PRIMARY KEY AUTOINCREMENT,
   'name' varchar(20) not null,
   'age' integer,