Glitch

MySQL, MongoDB, Python, Go

Zen-Codingのスニペットで$(doller)とか|(pipe)とかの特殊記号を入力するには

TEA for CodaでZen-Codingのスニペットを自分仕様にしていた時に難儀したのでメモ.
ちなみにこれらの設定ファイルは以下のパスです.

/Users/[username]/Library/Application Support/Coda 2/Plug-ins/TEA for Coda.codaplugin/Support/Library/zencoding/zen_settings.py

jQueryとか使う時に$(doller)とか|(pipe)はよく使うと思います.
ただこれらはZen-Codingの特殊記号とかぶってるんですよねー.
なのでそのままスニペットの文字列に入れると消えちゃいます.

例えばこんなん.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.2.min.js"></script>')<\/script>

単純なクォーテーションとかはpythonよろしくエスケープ記号つかって \' でいけるんですけど,
$や|は別にpython的には通常の文字列なので \$ や \| にしても消えます.

ンガーってなりながらソース見てみたら,utils.pyにこんなところを発見.

def escape_text(text):
	"""
	Escapes special characters used in Zen Coding, like '$', '|', etc.
	Use this method before passing to actions like "Wrap with Abbreviation"
	to make sure that existing spacial characters won't be altered
	@type text: str
	@return: str
	"""
	return re.sub(r'([\$\|\\])', r'\\\1', text)

def unescape_text(text):
	"""
	Unescapes special characters used in Zen Coding, like '$', '|', etc.
	@type text: str
	@return: str
	"""
	return re.sub(r'\\(.)', r'\1', text)

とりあえず結論的に以下の文ならエスケープできました.

'  $  ' # -> 消えた
' \$\ ' # ->$ 
' \\$ ' # -> $
'  |  ' # -> 消えた
' \|\ ' # -> $
' \\| ' # -> $

あれっ,エスケープもアンエスケープもおんなじ結果に.
まぁいいか...

とりあえずutils.pyには夢が詰まってそうなのでちょっとじっくり見てみようかなと思います.

追記(即日)

以下のところが引っかかってた…

'<\/script>'

バックスラッシュがなんぼ重ねても消えるー!
しぬしかないのか