2011-03-21 8 views
2

루비를 사용하여 긴 라텍스 문서를 생성하려고합니다. 내가 DOC 주위에 작은 따옴표를 넣으면루비 유니 코드 및 문자열 보간 문제

doc = <<DOC 
\underline{FOO} 
DOC#=> invalid Unicode escape \underline{FOO} 

이 문자열로 전체를 치료하는 것이다 : 나는 정상적인 히어 닥 형 선언을 사용하는 경우, 루비는 유니 코드 이스케이프로 (이 중 라텍스의 많은이 있습니다) 백 슬래시를 감지 문자 : 괜찮지 만 지금은 문자열 보간 사용할 수 없습니다

doc = <<'DOC' 
\underline{FOO} 
DOC 
puts doC#=> \underline{FOO} 

:

foo = "foo" 
doc = <<'DOC' 
string interpolation says "#{foo}". 
DOC 
puts doC#=> string interpolations says "#{foo}". 

나는 두 세계의 최고를 좋아하는 것, 즉 문자열 보간,없이 모든 역 슬래시를 벗어나지 않아도됩니다. 이것이 가능한가?

답변

2

나는 문자열 보간과 같은 두 가지 장점을 모두 원하고 모든 백 슬래시를 벗어날 필요가 없습니다. 이것이 가능한가?

실제 루비는 사용하지 않습니다. 문제는 문자열과 역 슬래시를 처리 할 때 Ruby가 의도 한 동작을하는 것입니다.

일반적으로 이들은 HTML을 출력하기 위해 레일스와 함께 사용되지만, ERB 또는 Erubis과 관련 템플릿을 사용하는 경우가있을 수 있습니다. 그들은 Ruby의 일반적인 문자열 처리 외부에서 처리되지만 변수를 임베드 할 수 있습니다. 그들은 익숙한 #{foo} 보간을 사용하지만, 지원하지 않는

string interpolation says "<%= foo %>". 

Erubis은 ERB의 컴파일 된 버전 그래서 훨씬 빨리 실행됩니다. ERB는 Ruby와 함께 제공되므로 선택하십시오.

+0

좋은 아이디어. 감사. – michaelmichael

+0

나는 박스 밖에서 생각하는 것이 뛰어나다 고 들었다. 나는 그것이 뇌 손상을 입었 기 때문이라고 생각한다. :-) ERB/​​Erubis는 실제로 유연하며 이메일, 워드 프로세싱 문서 또는 XML을 생성하는 데 사용될 수 있습니다. 나는 이것이 그 문제라고 생각합니다. 그것은 단지 한가지 만하는 것이 아니라 실제로 화려하지 않기 때문에 간과하게됩니다. –