/ / W jaki sposób można interpretować komunikaty o błędach w StringTemplate? - stringtemplate, stringtemplate-4

W jaki sposób można interpretować komunikaty o błędach w StringTemplate? - stringtemplate, stringtemplate-4

Otrzymałem ten komunikat o błędzie podczas korzystania z StringTemplate:

line 94:26: unexpected char: ")"

I po około 15 minutach losowego dodawania iusuwając puste linie w moim szablonie i obserwując, jak zmieniła się liczba w tym komunikacie, w końcu odizolowałem linię, która spowodowała problemy. Była to linia # 152, pozycja # 35.

Czy wartość po "linii" jest zwykle całkowicie błędna, czy też istnieje sposób wyprowadzenia rzeczywistego numeru wiersza z tego wyjścia?

Odpowiedzi:

1 dla odpowiedzi № 1

W StringTemplate (ST) 4, wydaje się, żepierwszy numer to numer wiersza w obrębie określonego szablonu, którego dotyczy, a nie numer wiersza w pliku .stg, jeśli jest to, czego używasz (co większość z nas robi).

Kiedy używam vima, oznacza to, że muszę mentalnie zrównoważyć to z numerem wiersza pierwszego wiersza szablonu (dodać je razem), aby uzyskać aktualny numer wiersza w pliku .stg.

Druga liczba w błędzie ST jest pozycją znaku w tej linii szablonu. Ale poczekaj, jest jeszcze więcej - wiesz, że to kochasz ...

Gdy błąd występuje w pierwszym wierszu aszablon wielowierszowy: ponieważ ST przesuwa początkową linię w szablonach wieloliniowych, ST skutecznie łączy pierwszą / linię deklaracji (kończącą się w "<<") z drugą (rzeczywistą linią początkową szablonu) w szablonach wieloliniowych ;

więc przynajmniej z ST-4.0.8 muszę odjąć długość linii deklaracji szablonu od pozycji znaku, aby uzyskać faktyczną pozycję znaku.

Pierwsze wyłanianie "n" (tylko dla szablonów wieloliniowych) oznacza również, że numer linii może być przesunięty o 1, a być może także pozycja znaku, dla błędu w "pierwszej linii".

Błąd powinien zawierać nazwę pliku i nazwę szablonu, więc jest to wystarczająca informacja dla automatycznego skryptu lub narzędzia, ale nieco uciążliwe dla nas zwykłych ludzi.

Powodzenia.