www.digitalmars.com         C & C++   DMDScript  

D - Multi line strings

reply Patrick Down <pat codemoon.com> writes:
Walter how would you feel about a multiline
string delimiter.  For example I currently have
this string that I use as part of a unit test
for a parser.  It would be a nice to write 
it like this, where """ indicates a string that 
spans over more that one line.

char[] test1 = """
variable=value
var = "Hello there"
truth=true
number=456
newdict=foo{
  testv=false
  aaa=Hello
}
thelist=[ 12 34 "beagle" ["its log" 12 ] hot { foo=bar } ]

""";

Instead it's written like this which is a little
harder to deal with.

char[] test1 =
"variable=value\n"
"var = \"Hello there\"\n"
"truth=true\n"
"number=456\n"
"newdict=foo{\n"
"  testv=false\n"
"  aaa=Hello\n"
"}\n"
"thelist=[ 12 34 \"beagle\" [\"its log\" 12 ] hot { foo=bar } ]\n"
"\n";
    

The only problem I see is that different platforms have
different end of line character sequences.
Jun 14 2002
parent reply "Martin M. Pedersen" <mmp www.moeller-pedersen.dk> writes:
Hi,

 Walter how would you feel about a multiline string delimiter.

In shell scripts you have "here documents", and they are quite handy :-) They would be handy in D too.
 The only problem I see is that different platforms have
 different end of line character sequences.

That could be solved by explicitly specifying how end-of-line characters should be represented. Something like this: char[] document = here("\n",EOF) variable=value var = "Hello there" truth=true number=456 newdict=foo{ testv=false aaa=Hello } thelist=[ 12 34 "beagle" ["its log" 12 ] hot { foo=bar } ] EOF "here" would then be a keyword recognized by the lexer, the first argument specifies the end-of-line representation, and the second argument is an identifier used to mark the end of the string. One thing a don't like about here documents as they work in shell scripts, is that they either breaks indention, or they introduce unwanted indention in the here document. Regards, Martin M. Pedersen
Jun 14 2002
parent Patrick Down <pat codemoon.com> writes:
"Martin M. Pedersen" <mmp www.moeller-pedersen.dk> wrote in
news:aedahl$ctk$1 digitaldaemon.com: 

 Hi,
 
 Walter how would you feel about a multiline string delimiter.

In shell scripts you have "here documents", and they are quite handy :-) They would be handy in D too.
 The only problem I see is that different platforms have
 different end of line character sequences.

That could be solved by explicitly specifying how end-of-line characters should be represented. Something like this: char[] document = here("\n",EOF) variable=value var = "Hello there" truth=true number=456 newdict=foo{ testv=false aaa=Hello } thelist=[ 12 34 "beagle" ["its log" 12 ] hot { foo=bar } ] EOF

Yes this would be an ideal solution.
Jun 14 2002