Giter8: λ³΄κ°„λœ λ¬Έμžμ—΄μ„ ν¬ν•¨ν•˜λŠ” ν…œν”Œλ¦Ώ 파일이 μžˆμ„ λ•Œ ꡬ문 뢄석 문제

에 λ§Œλ“  2013λ…„ 03μ›” 15일  Β·  23μ½”λ©˜νŠΈ  Β·  좜처: foundweekends/giter8

g8 etorreborre/etorreborre/specs2-scala-2.10.g8 μ‹œλ„ν•˜μ‹­μ‹œμ˜€.

λ‹€μŒκ³Ό 같은 였λ₯˜κ°€ λ°œμƒν•΄μ•Ό ν•©λ‹ˆλ‹€.

action parse error; template context is [anonymous]
line 1:1: unexpected token: e1
    at org.antlr.stringtemplate.language.ActionParser.primaryExpr(ActionParser.java:813)
    at org.antlr.stringtemplate.language.ActionParser.expr(ActionParser.java:539)
    at org.antlr.stringtemplate.language.ActionParser.templatesExpr(ActionParser.java:222)
    at org.antlr.stringtemplate.language.ActionParser.action(ActionParser.java:126)
    at org.antlr.stringtemplate.StringTemplate.parseAction(StringTemplate.java:876)
    at org.antlr.stringtemplate.language.TemplateParser.action(TemplateParser.java:162)
    at org.antlr.stringtemplate.language.TemplateParser.template(TemplateParser.java:127)
    at org.antlr.stringtemplate.StringTemplate.breakTemplateIntoChunks(StringTemplate.java:850)
    at org.antlr.stringtemplate.StringTemplate.setTemplate(StringTemplate.java:441)
    at org.antlr.stringtemplate.StringTemplate.<init>(StringTemplate.java:308)
    at org.antlr.stringtemplate.StringTemplate.<init>(StringTemplate.java:293)
    at org.clapper.scalasti.adapter.ScalastiStringTemplate.<init>(ScalastiStringTemplate.java:57)
    at org.clapper.scalasti.StringTemplate.<init>(StringTemplate.scala:101)
...
Documentation

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

$"$"$ 쑰합을 μ‚¬μš©ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μŠ€μΉΌλΌμ—μ„œ:
s"$var" -> s"$"$"$var"

λͺ¨λ“  23 λŒ“κΈ€

"$"κ°€ ν¬ν•¨λœ μ •κ·œμ‹μ„ ν¬ν•¨ν•˜λŠ” νŒŒμΌμ— λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” $κ°€ μ΄μŠ€μΌ€μ΄ν”„ 될 수 μžˆλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€. \$ 및 $$을(λ₯Ό) μ‹œλ„ν–ˆμ§€λ§Œ μ„±κ³΅ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œκ°€ 해결될 λ•ŒκΉŒμ§€ λ‚΄ ν˜•νŽΈμ—†λŠ” ν•΄κ²° 방법은 μ½”λ“œμ— λ‹€μŒμ„ ν¬ν•¨ν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

  // This is to work around a parsing issue in giter8 - replace inlined dollar signs
  val DOLLAR = (0x24).toChar

그리고:

  When("""^I retrieve the result""" + DOLLAR) { () =>

그것은 λ˜ν•œ ν¬ν•¨ν•˜λŠ” HTML νŒŒμΌμ— λŒ€ν•΄ μ‹€νŒ¨ν•©λ‹ˆλ‹€ ...

$(function() {

λ‹€μŒκ³Ό 같이 μž‘μ„±ν•˜λ”λΌλ„

\$(function() {

λ‹€ν–‰νžˆ μ΄λ²ˆμ—λŠ” ν•΄κ²° 방법을 μ°ΎλŠ” 것도 κ°€λŠ₯ν–ˆμŠ΅λ‹ˆλ‹€.

jQuery(function() {

"$" ν˜•μ‹μ„ μ„ ν˜Έν•˜μ§€λ§Œ.

λ‹€λ₯Έ ν•΄κ²° 방법이 μžˆμŠ΅λ‹ˆλ‹€. default.properties νŒŒμΌμ—μ„œ dollar=$ μ •μ˜ν•©λ‹ˆλ‹€. 그런 λ‹€μŒ ν…œν”Œλ¦Ώμ—μ„œ When("""^I retrieve the result""" + $dollar$) .

당신은 그것을 ν…ŒμŠ€νŠΈ ν–ˆμŠ΅λ‹ˆκΉŒ? default.properties νŒŒμΌμ„ ꡬ문 λΆ„μ„ν•˜κ³  μ§ˆλ¬Έν•˜λŠ” λ™μ•ˆ unexpected char: '$' 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

그것은 ν™•μ‹€νžˆ μ €μ—κ²Œ νš¨κ³Όκ°€ μžˆμ—ˆμ§€λ§Œ μ΅œκ·Όμ— μ‹œλ„ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

$"$"$ 쑰합을 μ‚¬μš©ν•˜μ—¬ 이 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μŠ€μΉΌλΌμ—μ„œ:
s"$var" -> s"$"$"$var"

AngularJs용 μžλ°”μŠ€ν¬λ¦½νŠΈ ν…œν”Œλ¦Ώμ„ μ‚¬μš©ν•˜λ©΄ μƒλ‹Ήνžˆ 보기 ν‰ν•΄μ§‘λ‹ˆλ‹€. Maven 속성, checkstyle 및 scalastyle xmlκ³Ό ν•¨κ»˜.

νŒŒμ„œλŠ” var에 곡백, 쀄 λ°”κΏˆ 및 var μ΄λ¦„μ—μ„œ μ˜λ―Έκ°€ μ—†λŠ” 문자λ₯Ό 포함할 수 μ—†λŠ” μ™„μ „ν•œ $var$ νŒ¨ν„΄μ„ μ•žμœΌλ‘œ μ°Ύμ•„μ•Ό ν•©λ‹ˆλ‹€.

μˆ˜μ • 사항이 μ—†μœΌλ©΄ {{ }}, <% %>, ?> λŒ€μ‹ μ— λ‹¬λŸ¬κ°€ μ΄μŠ€μΌ€μ΄ν”„μ— λŒ€ν•œ λΆˆν–‰ν•œ 선택인 κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. 자리 ν‘œμ‹œμžλ₯Ό μœ„ν•œ μž₯μ†ŒλŠ” 거의 μ—†μ§€λ§Œ λ‹€λ₯Έ λ§₯λ½μ—μ„œ 잠재적으둜 λ§Žμ€ 돈이 ν•„μš”ν•©λ‹ˆλ‹€.

λ˜ν•œ λ³΄κ°„λœ λ¬Έμžμ—΄λ³΄λ‹€ 더 일반적인 문제이기 λ•Œλ¬Έμ— 제λͺ©μ„ λ³€κ²½ν•  κ²ƒμž…λ‹ˆλ‹€.

이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν…œν”Œλ¦Ώ μ—”μ§„μ˜ λ™μž‘μ„ λ³€κ²½ν•  수 μžˆμ§€λ§Œ
λͺ‡ 가지 κ°€λŠ₯ν•œ μ†”λ£¨μ…˜:

  • $ νƒˆμΆœ : \$ λ˜λŠ” $$ . κ·ΈλŸ¬λ‚˜ 이것은 λ‚΄κ°€ λ‹¬μ„±ν•˜κ³  싢은 ν…œν”Œλ¦Ώμ„ λ…λ¦½μ μœΌλ‘œ κ°œλ°œν•˜λŠ” 것을 ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • λ³€μˆ˜ 이름을 [a-zA-Z_-] μ œν•œν•˜λ©΄ 일뢀 κΈ°μ‘΄ ν…œν”Œλ¦Ώμ΄ 손상될 수 있으며 일뢀 κ²½μš°μ—λŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€(예: ν…œν”Œλ¦Ώμ— println(s"$name_$foo") κ°€ ν¬ν•¨λœ 경우).
  • κΈ°μ‘΄ 속성을 μ°Ύκ³  μ•Œ 수 μ—†λŠ” λ³€μˆ˜λ₯Ό λ¬΄μ‹œν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΅œμ†Œν•œ μ‚¬μš©μžμ—κ²Œ 이에 λŒ€ν•΄ μ•Œλ €μ•Ό ν•©λ‹ˆλ‹€.

개인적으둜 선택적 μ΄μŠ€μΌ€μ΄ν”„κ°€ μžˆλŠ” 두 번째 μ†”λ£¨μ…˜μ„ μ„ ν˜Έν•©λ‹ˆλ‹€.

Pamfletμ—μ„œλŠ” 항상 \$ λ₯Ό μ‚¬μš©ν•˜μ—¬ νƒˆμΆœν–ˆμŠ΅λ‹ˆλ‹€. Pamfletμ—λ§Œ ν•΄λ‹Ήλ˜λŠ” 것인지 μ•„λ‹ˆλ©΄ StringTemplate에 μ•½κ°„μ˜ λ³€κ²½ 사항이 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€.

\$ λŠ” μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.
μ•„λ§ˆλ„ 이것이 λ‚΄κ°€ 이 λ¬Έμ œμ— Documentation을 νƒœκ·Έν•œ 이유일 κ²ƒμž…λ‹ˆλ‹€.

μ΄μŠ€μΌ€μ΄ν”„μ˜ λ¬Έμ œλŠ” 예λ₯Ό λ“€μ–΄ ν…œν”Œλ¦Ώμ„ λ³„λ„λ‘œ κ°œλ°œν•˜κ³  μ‹Άλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

my-template.g8/src/main/g8/src/main/$package$/Main.scala μƒμ„±ν•˜κ³ 
my-template.g8/src/main/g8 내뢀에 IDEA ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜μ—¬ νŽΈμ§‘ν•˜κ³  μ»΄νŒŒμΌν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ λ‚΄κ°€ μ“°κ³  μ‹Άλ‹€λ©΄ :

package $package$

object Main extends App {
  val foo = "foo"
  val bar = "bar"
  println(s"\$foo\$bar") // I need to escape this
}

λ‚΄λΆ€ ν”„λ‘œμ νŠΈκ°€ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. .gitignore .idea 폴더도 λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€.

@foxmk 여기에 보고된 κ²ƒκ³ΌλŠ” μ™„μ „νžˆ λ‹€λ₯Έ 문제라고 μƒκ°ν•©λ‹ˆλ‹€. Eric은 "μž‘μ—… ꡬ문 뢄석 였λ₯˜, ν…œν”Œλ¦Ώ μ»¨ν…μŠ€νŠΈλŠ” [읡λͺ…]"이라고 λ³΄κ³ ν–ˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”, μ €λŠ” μ΅œκ·Όμ— giter8을 μ‚¬μš©ν•˜μ—¬ 무엇보닀도 μ˜¬λ°”λ₯Έ λ§€κ°œλ³€μˆ˜λ‘œ 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹œμž‘ν•˜λŠ” 예제 λͺ…령을 μ œκ³΅ν•˜λŠ” sh 파일이 μžˆλŠ” ν…œν”Œλ¦Ώμ„ λ§Œλ“€λ €κ³  μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ $VAR μ •μ˜λœ λ§Žμ€ ν™˜κ²½ λ³€μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

$"$"$ λŠ” 더 이상 μž‘λ™ν•˜μ§€ μ•ŠμœΌλ©° μœ„μ˜ λ‹€λ₯Έ μ†”λ£¨μ…˜λ„ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이런 ν”„λ‘œμ νŠΈμ—μ„œ 그런 μ•„μ΄μ˜ 문제λ₯Ό λ³΄λŠ” 것은 μ•ˆνƒ€κΉŒμš΄ μΌμž…λ‹ˆλ‹€.

λ‚˜λŠ” # 3이 μ˜¬λ°”λ₯Έ 해결책이라고 μƒκ°ν•©λ‹ˆλ‹€.

κΈ°μ‘΄ 속성을 μ°Ύκ³  μ•Œ 수 μ—†λŠ” λ³€μˆ˜λ₯Ό λ¬΄μ‹œν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΅œμ†Œν•œ μ‚¬μš©μžμ—κ²Œ 이에 λŒ€ν•΄ μ•Œλ €μ•Ό ν•©λ‹ˆλ‹€.

λͺ¨λ“  μ’…λ₯˜μ˜ μ΄μŠ€μΌ€μ΄ν”„λ₯Ό μ‚¬μš©ν•˜μ—¬ 전체 μ†ŒμŠ€ μ½”λ“œλ₯Ό μ˜€μ—Όμ‹œν‚€λŠ” 것은 μ΄μΉ˜μ— λ§žμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이것은 default.properties 파일이 ν•„μˆ˜μ΄λ©° λͺ¨λ“  λŒ€μ²΄ κ°€λŠ₯ν•œ 이름과 ν•΄λ‹Ή 기본값을 ν¬ν•¨ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.

\$ μ΄μŠ€μΌ€μ΄ν”„ν•˜λ©΄ Giter8 0.7.2λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” sbt 0.13.15μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€.

FWIW: sbt 0.13.16 sbt-giter8 0.9.0에 이 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. '$'을(λ₯Ό) μ΄μŠ€μΌ€μ΄ν”„ μ²˜λ¦¬ν•˜λŠ” 방법을 μ•Œ 수 μ—†μŠ΅λ‹ˆλ‹€.

ν™•μΈλœ μ˜¬λ°”λ₯Έ μ†”λ£¨μ…˜μ΄ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€(예: build.properties에 μ§€μ •λœ 토큰이 μ—†μœΌλ©΄ λ‹«λŠ” λ‹¬λŸ¬λ₯Ό 찾으렀고 μ‹œλ„ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€). μ–΄λ €μš΄ λ³€κ²½μž…λ‹ˆκΉŒ? κ·Έλ ‡λ‹€λ©΄ μ–΄λ””μ—μ„œ 그것을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆκΉŒ?

FWIW, \$ 및 $"$"$ atm, SBT 1.1.0 및 Giter8 0.11.0-M2μ—μ„œ μž‘λ™ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

μ •μ˜λ˜μ§€ μ•Šμ€ λ³€μˆ˜μ— λŒ€ν•œ μžλ™ μ΄μŠ€μΌ€μ΄ν”„ λ˜λŠ” λ‹«λŠ” $ κΈ°ν˜Έκ°€ λˆ„λ½λœ κ²½μš°μ™€ 같이 보닀 지λŠ₯적인 λ™μž‘μ„ ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš”, μ €λŠ” μ΅œκ·Όμ— giter8을 μ‚¬μš©ν•˜μ—¬ 무엇보닀도 μ˜¬λ°”λ₯Έ λ§€κ°œλ³€μˆ˜λ‘œ 도컀 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹œμž‘ν•˜λŠ” 예제 λͺ…령을 μ œκ³΅ν•˜λŠ” sh 파일이 μžˆλŠ” ν…œν”Œλ¦Ώμ„ λ§Œλ“€λ €κ³  μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ $VAR μ •μ˜λœ λ§Žμ€ ν™˜κ²½ λ³€μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 말 κ·ΈλŒ€λ‘œ μ—¬κΈ°μ—μ„œ ν•΄κ²°ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

문제 제λͺ©μ΄ Parsing issue when having template files including interpolated strings 이고 μœ„μ˜ μ˜ˆμ™€ 같이 \$ 와 같은 μ΄μŠ€μΌ€μ΄ν”„ λ‹¬λŸ¬λŠ” ν˜„μž¬ 버전 0.13.1 (μŠ€ν¬λ¦°μƒ· μ°Έμ‘°)μ—μ„œ μ™„λ²½ν•˜κ²Œ μž‘λ™ν•˜λ―€λ‘œ 남은 μœ μΌν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. 이 μ„ΈλΆ€ 사항을 λ¬Έμ„œμ— μΆ”κ°€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΅œλŒ€ν•œ 빨리 PR을 μž‘μ„±ν•˜κ² μŠ΅λ‹ˆλ‹€.

image
image

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰

κ΄€λ ¨ 문제

timnovis picture timnovis  Β·  7μ½”λ©˜νŠΈ

nrinaudo picture nrinaudo  Β·  11μ½”λ©˜νŠΈ

tarruda picture tarruda  Β·  4μ½”λ©˜νŠΈ

taylorleese picture taylorleese  Β·  20μ½”λ©˜νŠΈ

sebastianvoss picture sebastianvoss  Β·  3μ½”λ©˜νŠΈ