anish
anish

Reputation: 7422

Groovy Using Single Quote

if i have to define a variable listed below i can make use of ''' to make my things work

def MainTable = '''
         0S : MAKE-CALL
         0# : MAKE-CALL
         00 : MAKE-CALL
         (=Emergency) : EMERGENCY-CALL(sip: "911 =domain =dialPhone)
         (=N11) : MAKE-CALL(sip: #1v =domain =dialString)
         (=SpeedDial) : MAKE-CALL(sip: #1v =domain =dialString)
         (=PhoneNumber) : MAKE-CALL(sip: #1v =domain =dialPhone)
         (=ImmediateVSCs) : RETURN
         (=DelayedVSCs) : RETURN
         (x{1-20})S : MAKE-CALL(sip: #1 =domain =dialPhone)
         (x{1-20})# : MAKE-CALL(sip: #1 =domain =dialPhone)''';

the same variable if i define like this using single quote it throws me error

def MainTable = '
         0S : MAKE-CALL
         0# : MAKE-CALL
         00 : MAKE-CALL
         (=Emergency) : EMERGENCY-CALL(sip: "911 =domain =dialPhone)
         (=N11) : MAKE-CALL(sip: #1v =domain =dialString)
         (=SpeedDial) : MAKE-CALL(sip: #1v =domain =dialString)
         (=PhoneNumber) : MAKE-CALL(sip: #1v =domain =dialPhone)
         (=ImmediateVSCs) : RETURN
         (=DelayedVSCs) : RETURN
         (x{1-20})S : MAKE-CALL(sip: #1 =domain =dialPhone)
         (x{1-20})# : MAKE-CALL(sip: #1 =domain =dialPhone)';

1 compilation error:
unexpected char: ''' at line: 1, column: 17

how can i use the MainTable variable using single quote, i don't want to put every thing in a single line

Upvotes: 0

Views: 1715

Answers (2)

sbglasius
sbglasius

Reputation: 3124

You can do like in Java:

def MainTable = '\
     0S : MAKE-CALL\
     0# : MAKE-CALL\
     00 : MAKE-CALL\
     (=Emergency) : EMERGENCY-CALL(sip: "911 =domain =dialPhone)\
     (=N11) : MAKE-CALL(sip: #1v =domain =dialString)\
     (=SpeedDial) : MAKE-CALL(sip: #1v =domain =dialString)\
     (=PhoneNumber) : MAKE-CALL(sip: #1v =domain =dialPhone)\
     (=ImmediateVSCs) : RETURN\
     (=DelayedVSCs) : RETURN\
     (x{1-20})S : MAKE-CALL(sip: #1 =domain =dialPhone)\
     (x{1-20})# : MAKE-CALL(sip: #1 =domain =dialPhone)';

But I fail to see the point in not using tripple single-quotes. If you want to strip the prepended spaces, you can just add .stripIndention() to your string expression:

 def myMultilineString = '''
            Some text
            Some more text'''.stripIndent()

Upvotes: 4

tim_yates
tim_yates

Reputation: 171184

In addition to the correct answer by sbglasius, I quite like the stripMargin() method, as you don't need to escape a blank line at the start of your String definition:

def mainTable = '''0S : MAKE-CALL
                  |0# : MAKE-CALL
                  |00 : MAKE-CALL
                  |(=Emergency) : EMERGENCY-CALL(sip: "911 =domain =dialPhone)
                  |(=N11) : MAKE-CALL(sip: #1v =domain =dialString)
                  |(=SpeedDial) : MAKE-CALL(sip: #1v =domain =dialString)
                  |(=PhoneNumber) : MAKE-CALL(sip: #1v =domain =dialPhone)
                  |(=ImmediateVSCs) : RETURN
                  |(=DelayedVSCs) : RETURN
                  |(x{1-20})S : MAKE-CALL(sip: #1 =domain =dialPhone)
                  |(x{1-20})# : MAKE-CALL(sip: #1 =domain =dialPhone)'''.stripMargin()

Upvotes: 5

Related Questions