Mohammed Rashid
Mohammed Rashid

Reputation: 29

In YAML, I keep getting the following error message regarding multi line strings:

This is my code

operator_prompt: > 
What operation would you like to perform? 
1) add 
2) subtract 
3) multiple
4) divide

This is my error message

/usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych.rb:377:in `parse': (calculator_messages.yml): could not find expected ':' while scanning a simple key at line 14 column 1 (Psych::SyntaxError)
        from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych.rb:377:in `parse_stream'
        from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych.rb:325:in `parse'
        from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych.rb:252:in `load'
        from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych.rb:471:in `block in load_file'
        from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych.rb:471:in `open'
        from /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych.rb:471:in `load_file'
        from calculator.rb:2:in `<main>'

I don't know what the issue is. Looks like I used multi-line strings in YAML exactly as I should.

Upvotes: 1

Views: 557

Answers (1)

Anthon
Anthon

Reputation: 76598

You should indent your folded multi-line scalar at least one position. And if you want to preserve the new lines in the scalar, use |:

operator_prompt: | 
  What operation would you like to perform? 
  1) add 
  2) subtract 
  3) multiple
  4) divide

Upvotes: 3

Related Questions