なお、ZenCodingv0.6 では、m行n列のテーブルを一発で展開することができませんが、現在 developer preview として公開されている v0.7 では "table>(tr>td*n)*m" と書くことができます。 v0.7 の正式版がリリースされたら、 MarsEdit プラグインにも組み込みたいと思っています。
3/13 に Zen Coding v0.7 がリリースされました。
ということで、早速サービスメニューに組み込んでみました。
ダウンロード今回のバージョンアップで以下の点が変更されています。
- グループの繰り返し
- テキストノードの指定
- 選択テキストに対する置換の強化
- 省略形のユーザ設定
グループの繰り返し
グループの繰り返しとは、複数の要素を '(' と ')' で括ったグループを指定回数だけ繰り返すものです。
dl>(dt+dd)*4
が以下のように展開されます。
<dl> <dt></dt> <dd></dd> <dt></dt> <dd></dd> <dt></dt> <dd></dd> <dt></dt> <dd></dd> </dl>
テキストノードの指定
Zen Coding への入力にテキストノードを指定することができるようになりました。
a[href=/]{Click here}
が以下のように展開されます。
<a href="/">Click here</a>
選択テキストに対する置換の強化
選択テキストの位置指定
選択したテキストの展開後の位置を $# で指定できるようになりました。
一行目 二行目 三行目というテキストに対して、
は以下のように展開されます。ul>li*>span{$#}+{ }+a[title=$#]{$#}
<ul> <li> <span>一行目</span> <a href="" title="一行目">一行目</a> </li> <li> <span>二行目</span> <a href="" title="二行目">二行目</a> </li> <li> <span>三行目</span> <a href="" title="三行目">三行目</a> </li> </ul>
箇条書きのマーカーを削除する trim フィルター
例えば、以下の記述を HTML マークアップする際に、
1. list item one 2. list item two 3. list item three
trim フィルター(|t)を指定すると1. などのマーカーを削除してくれます。
と指定すると以下のように展開されます。ol>li*|t
<ol> <li>list item one</li> <li>list item two</li> <li>list item three</li> </ol>
trim フィルターで認識するマーカーは "数字"/"#"/"-"/"*"/"・" です。
前後にスペースがあっても認識されます。
正規表現では
^([\s|\u00a0])?[\d|#|-|*|\u2022]+\.?\s*です。u2022(BULLET) はうまく動きませんでした。
省略形のユーザ設定
ホームディレクトリ(~/)に
my_zen_settings.pyというファイル名でユーザ定義の省略形を定義できるようになりました。
my_zen_settings.py の例は以下の通りです。
ここはちょっと難しいですね。variables や snippets について説明しないと(;^ω^)my_zen_settings = { 'variables': { 'myname': 'toshiya240' }, 'html': { 'extends': 'common', 'filters': 'html', 'snippets': { }, 'abbreviations': { 'a': '', 'a:name': '' } } }
あとがき
今回のバージョンアップではグループの繰り返しと trim フィルタがブログ執筆の際には役立ちそうだと思います。
Zen Coding には省略形の展開以外にも機能があるのですが、MarsEdit の外部インターフェースが貧弱なので実装が難しいのが現状です。
他のエディタならばもう少し機能を盛り込むことができるかもしれません。 MarsEdit は外部エディタを起動することができるのでそんな方向性もアリかと思っていますが、 現状では Mac でそれほど多くの作業を行うわけではないので、 有償の高機能なエディタを購入する予定もありません。
無償のエディタで何か検討してみようかな...
あとがき2
今日はこの記事を書き始めたときに静岡県東部を震源とした地震が発生しました。
まずはアクションが必要か様子を窺い、緊急の対処が不要であることを確認してからこの記事の執筆を再開しました。
依然として予断を許さない状況ですが、冷静に対処したいと思います。
tweet している余裕は私にはありませんでした(;^ω^)
0 コメント:
コメントを投稿