Есть ли эквивалент <<< EOD в Ruby / Rails? - PullRequest
8 голосов
/ 20 июля 2010

В PHP следующее позволит мне создать строку без экранирования кавычек ..

$string = <<<EOD

',. whatever <"",'

EOD;

echo $string;

Есть ли что-нибудь похожее в Ruby / Rails?

Ответы [ 6 ]

11 голосов
/ 20 июля 2010

Ruby-heredocs практически одинаковы, с небольшими изменениями, и они бывают двух видов:

1) Конец heredoc должен находиться в начале строки:

string = <<EOD

  ',. whatever <"",'

EOD

puts string

2) Концу heredoc может предшествовать пробел:

string = <<-EOD

  ',. whatever <"",'

       EOD

puts string
10 голосов
/ 20 июля 2010

Ruby поддерживает многострочные строки, предоставляя здесь два типа синтаксиса doc.В первом синтаксисе используется и дополнительный дефис, но он позволяет сделать отступ для разделителя «end of here doc» (в нашем примере - «eos»).

<<-eos
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.

eos

Другой синтаксис здесь doc не требует использованиятире, но для этого требуется, чтобы разделитель «конец отсюда» был в столбце 1 (или перед ним нет пробелов).

<<eos

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.
eos
10 голосов
/ 20 июля 2010

Это называется здесь документ . По ссылке, рубиновый путь будет:

puts <<-GROCERY_LIST
Grocery list
------------
1. Salad mix.
2. Strawberries.*
3. Cereal.
4. Milk.*

* Organic
GROCERY_LIST

Результат:

$ ruby grocery-list.rb
Grocery list
------------
1. Salad mix.
2. Strawberries.*
3. Cereal.
4. Milk.*

* Organic
3 голосов
/ 20 июля 2010

Это называется heredoc, и это <<WHATEVER в Ruby.

2 голосов
/ 20 июля 2010

вы можете сделать это так

string = <<EOD

',. whatever <"",'

EOD

puts string
1 голос
/ 20 июля 2010
output = <<-TEXT
   my text
   block
TEXT

^ что они сказали

...