@@ -210,6 +210,87 @@ describe "ECR::Lexer" do
210210 token.type.should eq(t :eof )
211211 end
212212
213+ it " lexes with <%-% %> (#14734)" do
214+ lexer = ECR ::Lexer .new(" hello <%-% foo %> bar" )
215+
216+ token = lexer.next_token
217+ token.type.should eq(t :string )
218+ token.value.should eq(" hello " )
219+ token.column_number.should eq(1 )
220+ token.line_number.should eq(1 )
221+
222+ token = lexer.next_token
223+ token.type.should eq(t :string )
224+ token.value.should eq(" <%- foo %>" )
225+ token.line_number.should eq(1 )
226+ token.column_number.should eq(11 )
227+ token.suppress_leading?.should be_false
228+ token.suppress_trailing?.should be_false
229+
230+ token = lexer.next_token
231+ token.type.should eq(t :string )
232+ token.value.should eq(" bar" )
233+ token.line_number.should eq(1 )
234+ token.column_number.should eq(18 )
235+
236+ token = lexer.next_token
237+ token.type.should eq(t :eof )
238+ end
239+
240+ it " lexes with <%-%= %> (#14734)" do
241+ lexer = ECR ::Lexer .new(" hello <%-%= foo %> bar" )
242+
243+ token = lexer.next_token
244+ token.type.should eq(t :string )
245+ token.value.should eq(" hello " )
246+ token.column_number.should eq(1 )
247+ token.line_number.should eq(1 )
248+
249+ token = lexer.next_token
250+ token.type.should eq(t :string )
251+ token.value.should eq(" <%-= foo %>" )
252+ token.line_number.should eq(1 )
253+ token.column_number.should eq(11 )
254+ token.suppress_leading?.should be_false
255+ token.suppress_trailing?.should be_false
256+
257+ token = lexer.next_token
258+ token.type.should eq(t :string )
259+ token.value.should eq(" bar" )
260+ token.line_number.should eq(1 )
261+ token.column_number.should eq(19 )
262+
263+ token = lexer.next_token
264+ token.type.should eq(t :eof )
265+ end
266+
267+ it " lexes with <%% -%> (#14734)" do
268+ lexer = ECR ::Lexer .new(" hello <%% foo -%> bar" )
269+
270+ token = lexer.next_token
271+ token.type.should eq(t :string )
272+ token.value.should eq(" hello " )
273+ token.column_number.should eq(1 )
274+ token.line_number.should eq(1 )
275+
276+ token = lexer.next_token
277+ token.type.should eq(t :string )
278+ token.value.should eq(" <% foo -%>" )
279+ token.line_number.should eq(1 )
280+ token.column_number.should eq(10 )
281+ token.suppress_leading?.should be_false
282+ token.suppress_trailing?.should be_false
283+
284+ token = lexer.next_token
285+ token.type.should eq(t :string )
286+ token.value.should eq(" bar" )
287+ token.line_number.should eq(1 )
288+ token.column_number.should eq(18 )
289+
290+ token = lexer.next_token
291+ token.type.should eq(t :eof )
292+ end
293+
213294 it " lexes with <% %> and correct location info" do
214295 lexer = ECR ::Lexer .new(" hi\n there <% foo\n bar %> baz" )
215296
0 commit comments