@@ -64,21 +64,21 @@ case class LiquidTemplate(path: String, content: SourceFile) extends Template wi
6464 val unexpected = LiquidTemplate .token(mm.getUnexpectedType)
6565 val expected = LiquidTemplate .token(mm.expecting)
6666
67+ // mm.index is incorrect, let's compute the index manually
68+ // mm.line starts at 1, not 0
69+ val index = content.lineToOffset(mm.line- 1 ) + mm.charPositionInLine
6770 ctx.error(
6871 if (unexpected == " EOF" )
69- s " unexpected end of file, expected: ' $expected' "
72+ s " unexpected end of file, expected $expected"
7073 else
71- s " unexpected token ' $unexpected' , expected: ' $expected' " ,
72- content atSpan Span (mm. index)
74+ s " unexpected $unexpected, expected $expected" ,
75+ content atSpan Span (index)
7376 )
7477
7578 None
7679 }
77- case ex => {
78- if (true || ctx.settings.Ydebug .value)
80+ case _ => {
7981 throw ex
80-
81- None
8282 }
8383 }
8484 }
@@ -98,17 +98,37 @@ case class LiquidTemplate(path: String, content: SourceFile) extends Template wi
9898
9999object LiquidTemplate {
100100 import liqp .parser .LiquidParser
101+ import scala .collection .mutable .HashMap
101102
102- private val _tokens : Map [ String , String ] = Map (
103+ final val TokenSymbols = HashMap (
103104 " TagStart" -> " {%" ,
104- " TagEnd" -> " %}"
105- )
105+ " TagEnd" -> " %}" ,
106+ " OutStart" -> " {{" ,
107+ " OutEnd" -> " }}" ,
108+ " Pipe" -> " |" ,
109+ " DotDot" -> " .." ,
110+ " Dot" -> " ." ,
111+ " Eq" -> " ==" ,
112+ " EqSign" -> " =" ,
113+ " Gt" -> " >" ,
114+ " GtEq" -> " >=" ,
115+ " Lt" -> " <" ,
116+ " LtEq" -> " <=" ,
117+ " Minus" -> " -" ,
118+ " Col" -> " :" ,
119+ " Comma" -> " ," ,
120+ " OPar" -> " (" ,
121+ " CPar" -> " )" ,
122+ " OBr" -> " [" ,
123+ " CBr" -> " ]" ,
124+ " QMark" -> " ?"
125+ ).mapValuesInPlace((k,v) => s " ' $v' ( $k) " )
106126
107127 def token (i : Int ): String =
108128 if (i == - 1 ) " EOF"
109- else if (i >= LiquidParser .tokenNames.length)
110- " non-existing token "
111- else _tokens
112- .get( LiquidParser .tokenNames(i) )
113- .getOrElse( s " token $i " )
129+ else if (i >= LiquidParser .tokenNames.length) " non-existing token "
130+ else {
131+ val name = LiquidParser .tokenNames(i)
132+ TokenSymbols .getOrElse(name, name )
133+ }
114134}
0 commit comments