Blob Blame History Raw
From 6141f6134e8ee32a154c5ee2c8e7249f8e3aca7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= <raphael.pinson@camptocamp.com>
Date: Wed, 16 Apr 2014 08:06:32 +0200
Subject: [PATCH] Allow continued lines inside quoted value (GH issue #104)

(cherry picked from commit 3b88ba6d897ab62dfa14cd9b627a5d497e45e3c1)

Conflicts:
	NEWS
	lenses/tests/test_httpd.aug
---
 lenses/httpd.aug            | 10 ++++++++--
 lenses/tests/test_httpd.aug | 10 ++++++++++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/lenses/httpd.aug b/lenses/httpd.aug
index caea9b6..979ff40 100644
--- a/lenses/httpd.aug
+++ b/lenses/httpd.aug
@@ -61,8 +61,14 @@ let indent              = Util.indent
 (* borrowed from shellvars.aug *)
 let char_arg_dir  = /[^ '"\t\r\n]|\\\\"|\\\\'/
 let char_arg_sec  = /[^ '"\t\r\n>]|\\\\"|\\\\'/
-let dquot = /"([^"\\\r\n]|\\\\.)*"/
-let squot = /'([^'\\\r\n]|\\\\.)*'/
+let cdot = /\\\\./
+let cl = /\\\\\n/
+let dquot =
+     let no_dquot = /[^"\\\r\n]/
+  in /"/ . (no_dquot|cdot|cl)* . /"/
+let squot =
+     let no_squot = /[^'\\\r\n]/
+  in /'/ . (no_squot|cdot|cl)* . /'/
 
 (******************************************************************
  *                            Attributes
diff --git a/lenses/tests/test_httpd.aug b/lenses/tests/test_httpd.aug
index af6cdc1..14347f1 100644
--- a/lenses/tests/test_httpd.aug
+++ b/lenses/tests/test_httpd.aug
@@ -339,3 +339,13 @@ test Httpd.lns get conf2 =
     {  }
   }
 
+(* Test: Httpd.lns
+     Newlines inside quoted value (GH issue #104) *)
+test Httpd.lns get "Single 'Foo\\
+bar'
+Double \"Foo\\
+bar\"\n" =
+  { "directive" = "Single"
+    { "arg" = "'Foo\\\nbar'" } }
+  { "directive" = "Double"
+    { "arg" = "\"Foo\\\nbar\"" } }