Very simple patch that adds the /case option and let the user select the
text transformation applied to table/column/type names. I mapped all the
enum values to short names:

Case.Leave      leave
Case.PascalCase pascal
Case.NetCase    net
Case.camelCase  camel

and yes, someone drunk too much and really defined an enum value using
the casing of the value itself (camelCase). Bleurgh.

This is not enough because not all code uses the passed value: my plan
is to hunt for the bad parts and fixing them in a later patch.

Patch follows, zipped version attached. Hope everything is fine.

diff --git a/src/DbMetal/Generator/Implementation/Processor.cs 
b/src/DbMetal/Generator/Implementation/Processor.cs
index a143fc2..4365bf5 100644
--- a/src/DbMetal/Generator/Implementation/Processor.cs
+++ b/src/DbMetal/Generator/Implementation/Processor.cs
@@ -1,4 +1,4 @@
-#region MIT license
+#region MIT license
 // 
 // MIT license
 //
@@ -216,7 +216,7 @@ namespace DbMetal.Generator.Implementation
 
                 parameters.Write(">>> Reading schema from {0} database", 
schemaLoader.Vendor.VendorName);
                 dbSchema = schemaLoader.Load(parameters.Database, nameAliases,
-                    new NameFormat(parameters.Pluralize, Case.PascalCase, new 
CultureInfo(parameters.Culture)),
+                    new NameFormat(parameters.Pluralize, GetCase(parameters), 
new CultureInfo(parameters.Culture)),
                     parameters.Sprocs, parameters.Namespace, 
parameters.Namespace);
                 dbSchema.Provider = parameters.Provider;
                 dbSchema.Tables.Sort(new LambdaComparer<Table>((x, y) => 
(x.Type.Name.CompareTo(y.Type.Name))));
@@ -250,5 +250,22 @@ namespace DbMetal.Generator.Implementation
         {
             parameters.WriteHelp();
         }
+
+        private Case GetCase(Parameters parameters)
+        {
+            if (String.IsNullOrEmpty(parameters.Case))
+                return Case.PascalCase;
+            switch (parameters.Case)
+            {
+                case "leave":
+                    return Case.Leave;
+                case "camel":
+                    return Case.camelCase;
+                case "net":
+                    return Case.NetCase;
+                default:
+                    return Case.PascalCase;
+            }
+        }
     }
 }
diff --git a/src/DbMetal/Parameters.cs b/src/DbMetal/Parameters.cs
index c2232fa..af82048 100644
--- a/src/DbMetal/Parameters.cs
+++ b/src/DbMetal/Parameters.cs
@@ -1,4 +1,4 @@
-#region MIT license
+#region MIT license
 // 
 // MIT license
 //
@@ -179,6 +179,13 @@ namespace DbMetal
         public bool Sprocs { get; set; }
 
         /// <summary>
+        /// preserve case of database names
+        /// DbLinq specific
+        /// </summary>
+        [Option("Transform names as indicated (default: pascal; may be: leave, 
pascal, camel, net).", Group = 4)]
+        public string Case { get; set; }
+
+        /// <summary>
         /// ??
         /// DbLinq specific
         /// </summary>


federico

-- 
Federico Di Gregorio                         http://people.initd.org/fog
Debian GNU/Linux Developer                                [email protected]
INIT.D Developer                                           [email protected]
 In some countries (e.g., Germany) even many brands of toilet paper have
  format A6.             [http://www.cl.cam.ac.uk/~mgk25/iso-paper.html]

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DbLinq" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/dblinq?hl=en
-~----------~----~----~----~------~----~------~--~---

Attachment: DbMetal.exe-case.diff.gz
Description: GNU Zip compressed data

Reply via email to