目次
最近WorkFlowyを使い始めて、いろいろ便利になっています。
ちょっとしたメモとかTODOとか、
実行したら「COMPLETE」ということで、
横線がつくので、確認もしやすいです。
ブログを書くにあたって、いろいろと構成を考えたりする必要があります。
WorkFlowyは、シンプルなアウトラインプロセッサなので、
トピックの移動なども気軽にできます。
ひととおりブログ原稿を書いたあと、Exportで出力するわけですが、
ブログ用とするなら、HTMLタグが付いている必要があります。
実際に使用しているWorkFlowyの見た目と
同じようなフォーマットです。
Evernoteにコピペしたところ、同じようにできました。
単純に、テキストのスペース(ブランク)を使って階層化しています。
アウトラインプロセッサ用のXML形式のフォーマットです。
というわけで、変換用のツールをネットで探してみました。
●WorkflowyのOPML出力テキストをブログ原稿テキストに変換するツールを追加 (Miyota-0.6.0)
Javaで作成されているようです。
●WF2HTMLのirodrawさん専用バージョンWFtoHTML irodrawEdithion
AppleScriptだそうです。
OPMLはXMLのアウトラインプロセッサ版です。
XMLなので、XSLTという、HTMLならCSSがあるように、
体裁を整える仕組みがあります。
●参考サイト
XSLTスタイルシートの基礎の基礎
ネットで調べましたが、なんだか難しそうでした。
もしXSLTが使えるなら、プログラム言語に関係なく、
XMLデータの加工ができます。
個人的には、HタグとPタグが付いてくれればいいレベルなので、
自分で作ることにしました。
以前、アマゾン検索システムを自作したときに、
アマゾンから取得したXMLデータを加工して表示したことがあるので、
プログラムを作ることにしました。
ネットで検索すると、RSSリーダーでも、OPMLが使えるそうです。
それを利用すると、一気にまとめてRSSリーダーに登録できるそうです。
そのOPMLですが、outlineタグの中に、type,text,title,xmlUrlなどがあります。
それに対して、WorkFlowyの場合は、textだけのようです。
あとは、outlineタグが階層化されています。
PCではフォルダと同じような感じですが、
最初の階層のデータを取得する方法と、
その下の階層のデータを取得する方法は、同じです。
同じということは、同じ関数が使えます。
そして、その関数内で、自分自身の関数を呼び出すという、
再帰的なことができます。
作ってみるとシンプルな関数となりますが、
無限ループにならないように注意する必要があります。
以下が関数です。
<!---=================================================================
xmlConv
==================================================================--->
<cffunction name="xmlConv" access="public" returnType="string" output="yes">
<cfargument name="xml" type="xml" required="yes">
<cfargument name="path" type="string" required="yes">
<cfargument name="no" type="numeric" required="yes">
<cfset var sData = "">
<cfset var aryXmlDoc = XmlSearch(arguments.xml, arguments.path)>
<cfloop index="idx" array="#aryXmlDoc#">
<cfif ArrayLen(idx.XmlChildren) eq 0>
<cfif form.p eq 1>
<cfset sData = sData & "#idx.XmlAttributes.text##request.CRLF##request.CRLF#">
<cfelse>
<cfset sData = sData & "<p>#idx.XmlAttributes.text#</p>#request.CRLF#">
</cfif>
<cfelse>
<cfset sData = sData & "#request.CRLF#<h#arguments.no#>#idx.XmlAttributes.text#</h#arguments.no#>#request.CRLF#">
<cfset sData = sData & xmlConv(idx, "outline",arguments.no + 1)>
</cfif>
</cfloop>
<cfreturn sData>
</cffunction>
XMLデータを加工するためには、
実際にどんなデータがあるか確認しながらやっています。
デバッグしながらの開発ですね。
ちなみにColdFusionでは、
cfdumpタグという変数の中身が見やすく表示されるので、
とても便利です。
今回のデモデータをcfdumpタグで画面に表示すると、
以下のように表示されます。
こちらがWebアプリとなっています。
個人的には、ブログは、「はてな」と「WordPress」を使っています。
pタグありとなしで使い分けてみてください。
あまり凝ったことはしていないので、
「Hタグ、Pタグがついてくれるので、ちょっとは便利だな~」
ぐらいで、使ってみてくださいね。
「WorkFlowyのExportのOPML形式をHTMLなどに変換する」
※
WorkFlowyで、週にまとめてTODOなど作るのに便利かも。
「指定した回数分の日付や回数がついた文字列を生成する方法」
追記)2015/10/22
目次が表示されるプラグインを使っていましたが、
「表示されないのは、なぜ?」と思っていたところ、
Hタグが大文字だったからでした。
プログラムを小文字のhに修正しました。