2009-11-03

続・Applescript/HTMLシンタックスカラーリング


以前Applescript/HTMLシンタックスカラーリングで Snow Leopard 非対応で紹介できなかったScript factoryさんの AppleScriptHTML でしたが、10/26のアップデートで Snow Leopard に対応したようですので試してみました。

いち


今回はスクリプトエディタで開いているコードを対象にしたいので、変換したい AppleScript をコンパイルしてカラーリングされた状態にする。



AppleScriptHTML で変換する。

さん


クリップボードに HTML 化された AppleScript が♪


AppleScriptHTML は CSS と HTML が分離しているのが特徴なのですが、Blogger に貼り付ける場合は CSS をタグに埋め込むか、ブログテンプレートの CSS に埋め込んじゃわないといけないのです(たぶん)。
今回は手でタグに埋め込んでみましたが、AppleScript をBlogで公開することがある方ならテンプレートに埋め込んじゃうと良いのではないでしょうか。
私の使用しているテンプレートのせいかもしれませんが、text-indentが効かない、改行幅がとても広くなる等多少調整が必要でしたのでご注意ください。


BloggerのHTML直接編集でも、改行があると表示時に自動的に改行タグを入れられてしまうのが原因でした。
作者様のご指摘で改行を削除してコピペし直すと、無事 text-indent も改行幅も効きました。
(11/28追記)


しかしこのワンボタンで終了の楽さは捨て難いです。

on handle_string(s)
try
set tagString to s

tell application "Finder"
try

set theFiles to selection

repeat with theItem in theFiles

-- Set Label Color On/Off
-- set label index of theItem to 0

-- Set SpotlightComment
set newSptcomString to ""
set sptcomString to comment of theItem
if sptcomString is "" then
set newSptcomString to tagString
else
set newSptcomString to sptcomString & " " & tagString
end if

set comment of theItem to newSptcomString

end repeat

open location "x-launchbar:hide"

on error msg number val
{errMsg:msg, errVal:val}
end try
end tell

end try
end handle_string



byT




☆以下表示確認用 改行削除・CSS別バージョン☆

on handle_string(s)
try
set tagString to s

tell application "Finder"
try

set theFiles to selection

repeat with theItem in theFiles

-- Set Label Color On/Off
-- set label index of theItem to 0

-- Set SpotlightComment
set newSptcomString to ""
set sptcomString to comment of theItem
if sptcomString is "" then
set newSptcomString to tagString
else
set newSptcomString to sptcomString & " " & tagString
end if

set comment of theItem to newSptcomString

end repeat

open location "x-launchbar:hide"

on error msg number val
{errMsg:msg, errVal:val}
end try
end tell

end try
end handle_string

7 件のコメント:

哲郎 さんのコメント...

試していただきありがとうございます。

text-indent が効かないとは、どういうことでしょう?
MameApp さんが blog に貼付けた結果を見る限りでは、ちゃんと indent されているように見えます。

改行幅がとても広くなる件ですが、
タグが挿入されています。AppleScriptHTML が出力した物でしょうかね?AppleScriptHTML はそのようなものは出力しないはずなのですが。

現在、style sheet と本文を分離するしようですが、style sheet を inline に展開できたら便利でしょうか?

MameApp さんのコメント...

お名前からして作者様でしたか!わざわざ辺境ブログまで御足労いただいて恐縮です。

text-indent についてですが、インデントが効かないためスタイルは残したまま全角スペースを入れてごまかしておりました。
改行幅は、line-height:50%; は幅を縮めるため私が無理矢理入れたものです。
紛らわしくてすみません。

エントリーの下部に、AppleScriptHTML で出力したものにスタイルを埋め込んだ以外の手を加えていないコードを貼り付けてあります。
ブログのテンプレートも何種類か変更して試しましたが、表示の変化はありませんでした。

>tyle sheet を inline に展開できたら便利でしょうか?
もし可能でしたら、分離とインラインで選択できると、HTMLの途中に挟み込む場合も楽になりありがたいです。

哲郎 さんのコメント...

AppleScriptHTML が出力した HTML がそのまま貼付けられていないですね。AppleScriptHTML は 一つの div 要素で一行を表しています。div 開始タグの直後と、div 終了タグ直前に br タグが挿入されています。

このため、text-indent は効かないし、妙に行間が空くという結果になります。

ブログサービスの方で改行コードを br タグに置き換える処理をしているのでしょうね。ブログサービスを使ったことが無いのでよくわかりませんが、HTML の貼付け方に何かコツか方法があるのではないでしょうか。このままでは、HTML を貼付けられないと同義かと思います。

もしくは、AppleScriptHTML の出力から改行コードを除去してから貼付けたらうまくいくと思います。

困ったことがあったら、直接言っていただくと問題が速く解決できますよ。

MameApp さんのコメント...

調べましたところ、お察しの通り作成したブログのHTMLに、表示時に更に改行部分へ
が入れられているのが原因でした。
コピペ前に改行を削除すると text-indent も改行幅もばっちりです。
お手数おかけしました、ありがとうございました。

>困ったことがあったら、直接言っていただくと問題が速く解決できますよ。
アプリのバグでもない限り、直接質問させていただくのはなかなか敷居が…!

くりた さんのコメント...

問題が解決できてなによりです。

ところで、CSS をインラインにする件、どれだけ必要性があるのでしょうか?

CSS を使って、出力をシンプルに保とうとしても、やっぱり結構複雑です。CSS をインラインに展開したらすごいことになると思うので腰が引けてしまいます。

ブログサービスでページのCSS に定義を追加するのは難しいのことなのでしょうか?

MameApp さんのコメント...

他のブログはわからないのですが、Bloggerに関してはCSS定義の追加は難しくありませんでした。

インラインで使いたいのは、CSS定義の追加ができない場合や、試しにちょっと使ってみたいけど定義追加までしたくない場合、くらいかなと思います。

前者はブログサービスで定義追加不可なものがあればくりたさんのところへ要望が行ってそうですし、後者は手でインライン化すれば良いことですし、アプリの機能としての必要性はないですよね。

お手間おかけしました。

くりた さんのコメント...

無くても良いというなら、「気が向いたらやるかもしれないリスト」に入れとく程度にします。

でも、手でインライン化をしなければならないようなら、アプリの方で対応すべきと思います。

こちらこそ、いろいろ参考になりました。