์ค ๋ฐ๊ฟ(\n) ๋ฌธ์๋ก ๋๋๋ ํ์ผ์ ๋ ๋๋งํ ๋ ๋ ๋๋ง๋ ์ถ๋ ฅ๋ ์ค ๋ฐ๊ฟ ๋ฌธ์๋ก ๋๋ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ํํ ์ค ๋ฐ๊ฟ์ผ๋ก ํ ์คํธ ํ์ผ์ ๋๋ด๋ ๊ฒ์ UNIX ๊ณ์ด ์์คํ ์ ํ์ค ๊ท์น์ ๋๋ค.
๋ ๋๋ง๋ ์ถ๋ ฅ์์ โโ๋ง์ง๋ง ์ค ๋ฐ๊ฟ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
>>> c
u'foo is {{ foo }}\nquux is {{ quux }}\nasdf\n'
>>> t = jinja2.Template(c)
>>> t.render(foo="bar", quux="baz")
u'foo is bar\nquux is baz\nasdf'
>>> s = t.stream()
>>> s.next()
u'foo is \nquux is \nasdf'
>>> s.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ifreeman/.local/lib/python2.7/site-packages/jinja2/environment.py", line 1271, in __next__
return self._next()
StopIteration
>>>
keep_trailing_newline=True
๋ฅผ Environment
: http://jinja.pocoo.org/docs/api/#jinja2.Environment
๋ค, ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ด ์ต์ ์ธ์ง ๋ชฐ๋์ง๋ง ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ ํ๋ฆฟ ์ธ์ด์ ์๋ฌด ๊ด๋ จ์ด ์๋ ์๊ธฐ์น ์์ ๋ฐฉ์์ผ๋ก ์ ๋ ฅ์ ์์ ํ๊ธฐ๋ฅผ ์ํ๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ์ด์ํด ๋ณด์ ๋๋ค. ์ฌ์ค, ๋ด๊ฐ ์ด ๋ฌธ์ ๋ฅผ ์ฌ๋ ์ด์ ๋ ๋ด๊ฐ shinto-cli(https://github.com/istrategylabs/shinto-cli)๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ์์ ์์ ์ผ๋ถ ํ์ผ์ ๋งค๊ฐ๋ณ์ํํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ค ๋ฐ๊ฟ ์์ด ํ์ผ์ ์ถ๋ ฅํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ํ์ผ์ ์ถ๊ฐํ ๋ ํ ์ค์ ์ค์ด ํจ๊ป ๋ญ๊ฐ์ก์ต๋๋ค. ์ฒ์์๋ ์์ค๋ฅผ ํ์ด๋ณผ ๋๊น์ง shinto-cli์ ๋ํ ๋ฌธ์ ๋ฅผ ์ด์ด๋ณด๊ณ python REPL์์ ๊ธฐ๋ณธ jinja2 ํ ํ๋ฆฟ์ ์ง์ ์๋ํ๊ณ ์ด๊ฒ์ด ๊ธฐ๋ณธ jinja2 ๋์์ด๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
shinto-cli์ ๋ฌธ์ ๋ฅผ ์ด์ด ๋ชจ๋ ํ๊ฒฝ ํธ์ถ์ keep_trailing_newline=True ์ต์ ์ ์ถ๊ฐํ๋๋ก ์์ฒญํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค, ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ์ด๊ฒ์ด ์ต์ ์ธ์ง ๋ชฐ๋์ง๋ง ์ด๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ ํ๋ฆฟ ์ธ์ด์ ์๋ฌด ๊ด๋ จ์ด ์๋ ์๊ธฐ์น ์์ ๋ฐฉ์์ผ๋ก ์ ๋ ฅ์ ์์ ํ๊ธฐ๋ฅผ ์ํ๋ค๊ณ ๊ฐ์ ํ๋ ๊ฒ์ ์ด์ํด ๋ณด์ ๋๋ค. ์ฌ์ค, ๋ด๊ฐ ์ด ๋ฌธ์ ๋ฅผ ์ฌ๋ ์ด์ ๋ ๋ด๊ฐ shinto-cli(https://github.com/istrategylabs/shinto-cli)๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋ ์์ ์์ ์ผ๋ถ ํ์ผ์ ๋งค๊ฐ๋ณ์ํํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ค ๋ฐ๊ฟ ์์ด ํ์ผ์ ์ถ๋ ฅํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ํ์ผ์ ์ถ๊ฐํ ๋ ํ ์ค์ ์ค์ด ํจ๊ป ๋ญ๊ฐ์ก์ต๋๋ค. ์ฒ์์๋ ์์ค๋ฅผ ํ์ด๋ณผ ๋๊น์ง shinto-cli์ ๋ํ ๋ฌธ์ ๋ฅผ ์ด์ด๋ณด๊ณ python REPL์์ ๊ธฐ๋ณธ jinja2 ํ ํ๋ฆฟ์ ์ง์ ์๋ํ๊ณ ์ด๊ฒ์ด ๊ธฐ๋ณธ jinja2 ๋์์ด๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค.
shinto-cli์ ๋ฌธ์ ๋ฅผ ์ด์ด ๋ชจ๋ ํ๊ฒฝ ํธ์ถ์ keep_trailing_newline=True ์ต์ ์ ์ถ๊ฐํ๋๋ก ์์ฒญํ ์ ์์ต๋๋ค.