|
4 | 4 |
|
5 | 5 | describe 'Heredoc syntax' do |
6 | 6 | describe 'binary' do |
7 | | - it 'with multiline content' do |
8 | | - expect(<<~EOF).to include_elixir_syntax('elixirDocString', 'foo') |
9 | | - @doc """ |
| 7 | + it 'doc with multiline content' do |
| 8 | + ex = <<~EOF |
| 9 | + @callbackdoc """ |
10 | 10 | foo |
11 | 11 | """ |
12 | 12 | EOF |
| 13 | + expect(ex).to include_elixir_syntax('elixirVariable', 'doc') |
| 14 | + expect(ex).to include_elixir_syntax('elixirDocString', 'foo') |
13 | 15 | end |
14 | 16 |
|
15 | | - it 'escapes quotes unless only preceded by whitespace' do |
16 | | - expect(<<~EOF).to include_elixir_syntax('elixirDocString', %q(^\s*\zs""")) |
17 | | - @doc """ |
18 | | - foo """ |
| 17 | + it 'doc with sigil_S triple double-quoted multiline content' do |
| 18 | + ex = <<~EOF |
| 19 | + @doc ~S""" |
| 20 | + foo |
19 | 21 | """ |
20 | 22 | EOF |
| 23 | + expect(ex).to include_elixir_syntax('elixirVariable', 'doc') |
| 24 | + expect(ex).to include_elixir_syntax('elixirSigilDelimiter', 'S"""') |
| 25 | + expect(ex).to include_elixir_syntax('elixirDocString', 'foo') |
| 26 | + end |
| 27 | + |
| 28 | + it 'doc with sigil_S triple single-quoted multiline content' do |
| 29 | + ex = <<~EOF |
| 30 | + @doc ~S''' |
| 31 | + foo |
| 32 | + ''' |
| 33 | + EOF |
| 34 | + expect(ex).to include_elixir_syntax('elixirVariable', 'doc') |
| 35 | + expect(ex).to include_elixir_syntax('elixirSigilDelimiter', "S'''") |
| 36 | + expect(ex).to include_elixir_syntax('elixirDocString', 'foo') |
| 37 | + end |
| 38 | + |
| 39 | + it 'doc with triple single-quoted multiline content is not a doc string' do |
| 40 | + ex = <<~EOF |
| 41 | + @doc ''' |
| 42 | + foo |
| 43 | + ''' |
| 44 | + EOF |
| 45 | + expect(ex).not_to include_elixir_syntax('elixirDocString', 'foo') |
21 | 46 | end |
22 | 47 |
|
23 | | - it 'with interpolation' do |
24 | | - expect(<<~EOF).to include_elixir_syntax('elixirInterpolation', 'bar') |
| 48 | + it 'doc with interpolation' do |
| 49 | + ex = <<~EOF |
25 | 50 | @doc """ |
26 | 51 | foo \#{bar} |
27 | 52 | """ |
28 | 53 | EOF |
| 54 | + expect(ex).to include_elixir_syntax('elixirDocString', 'foo') |
| 55 | + expect(ex).to include_elixir_syntax('elixirStringDelimiter', '"""') |
| 56 | + expect(ex).to include_elixir_syntax('elixirInterpolation', 'bar') |
29 | 57 | end |
30 | 58 |
|
31 | 59 | it 'interpolation in heredoc must be string' do |
|
0 commit comments