From 4ea252beae64bb3cc050c9b8ba95284c8992ed84 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Wed, 11 May 2016 09:33:48 -0400 Subject: [PATCH] lib/sqlite3: intro `Text::to_sql_date_string` MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- lib/sqlite3/sqlite3.nit | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/sqlite3/sqlite3.nit b/lib/sqlite3/sqlite3.nit index 62fe8e5..31c585f 100644 --- a/lib/sqlite3/sqlite3.nit +++ b/lib/sqlite3/sqlite3.nit @@ -305,8 +305,9 @@ redef universal Int super Sqlite3Data end redef universal Float super Sqlite3Data end -redef class String - super Sqlite3Data +redef class String super Sqlite3Data end + +redef class Text # Return `self` between `'`s, escaping `\` and `'` # @@ -315,6 +316,24 @@ redef class String do return "'{self.replace('\\', "\\\\").replace('\'', "''")}'" end + + # Format the date represented by `self` into an escaped string for SQLite + # + # `self` must be composed of 1 to 3 integers separated by '-'. + # An incompatible format will result in an invalid date string. + # + # assert "2016-5-1".to_sql_date_string == "'2016-05-01'" + # assert "2016".to_sql_date_string == "'2016-01-01'" + fun to_sql_date_string: String + do + var parts = self.split("-") + for i in [parts.length .. 3[ do parts[i] = "1" + + var year = parts[0].justify(4, 1.0, '0') + var month = parts[1].justify(2, 1.0, '0') + var day = parts[2].justify(2, 1.0, '0') + return "{year}-{month}-{day}".to_sql_string + end end # A Sqlite3 blob -- 1.7.9.5