Hatena::Groupnadesiko

そっとなでしこ RSSフィード


メインのブログに書くまでもない、なでしこ学習帳【記事一覧】 【このブログは何?】


特設!→【目次】なでしこ用Twitter 連携ライブラリ「なこったー」で遊ぶ


2010-07-16

「2ちゃんねるスレまとめツール」、とりあえず完成

| 「2ちゃんねるスレまとめツール」、とりあえず完成 - そっとなでしこ を含むブックマーク はてなブックマーク - 「2ちゃんねるスレまとめツール」、とりあえず完成 - そっとなでしこ

 以下の流れの果て、なんとか形になりました。(相変わらず、既に問題点も出ていたりしますがw)

 また、「【主要機能1】選択した文字列に対する変換機能」に、最初の予定には無かった以下の機能を追加しました。

  • 選択した文字列を、太字表示する@wiki記法で囲む
  • 選択した文字列を、斜体表示する@wiki記法で囲む

 使いながら、必要だと思った機能を比較的簡単に追加できるのも、なでしこの良さだなぁと実感。

【追記】さっそく修正しました

■ソースコード

#-----------------------------------------------------------------------
# GUI定義
#-----------------------------------------------------------------------
母艦のX=0
母艦のY=0
母艦のH=500
母艦のW=900

スレ引用ツールとはTエディタ
スレ引用ツールについて
 レイアウトは「全体」
 #ポップアップメニューは右クリックメニュー
 #左バーはオフ
 #ルーラーはオフ
 表示記号は「スペース{~}タブ{~}全角スペース{~}EOF{~}改行」
 折り返しは110
 オートインデントはオフ

# メニューの定義
#-----------------------------------------------------------------------
「#親,部品名,テキスト,ショートカット,チェック,イベント
なし,ファイルメニュー,ファイル(&F)
-,出力メニュー,出力(&Q),Ctrl+Q,,出力処理
なし,編集メニュー,編集(&E)
-,AA記法挿入メニュー,AA記法挿入,F1,,AA記法挿入処理
-,画像記法挿入メニュー,画像記法挿入,F2,,画像記法挿入処理
-,サムネ画像記法挿入メニュー,サムネ画像記法挿入,F3,,サムネ画像記法挿入処理
-,-
-,太字化メニュー,太字化,F4,,太字化処理
-,斜体化メニュー,斜体化,F5,,斜体化処理
-,文字装飾メニュー,文字装飾(&E),Ctrl+E,,文字装飾処理
」を、メニュー一括作成。

# 自作フォームの定義
#-----------------------------------------------------------------------
文字装飾フォームとはフォーム
そのタイトルは「文字装飾」

文字サイズリストとはリスト。
その親部品は文字装飾フォーム。
そのアイテムは「4{~}5{~}6{~}7」。
文字サイズリストの値は0。

文字色リストとはリスト。
その親部品は文字装飾フォーム。
そのアイテムは「black{~}red{~}blue{~}green」
文字色リストの値は0。

選択ボタンとはボタン。
その親部品は文字装飾フォーム。
選択ボタンをクリックした時は
 スレ引用ツールの選択文字列は、
 「&sizex({文字サイズリストのテキスト}){波カッコ}」&
 「&color({文字色リストのテキスト}){波カッコ}」&
 「{スレ引用ツールの選択文字列}{波カッコ閉じ}{波カッコ閉じ}」。
 文字装飾フォームを閉じる。

キャンセルボタンとはボタン。
その親部品は文字装飾フォーム。
キャンセルボタンをクリックした時は
 文字装飾フォームを閉じる。

#-----------------------------------------------------------------------
# イベント処理
#-----------------------------------------------------------------------
スレ引用ツールのクリックした時は
 文字列選択状態別処理
スレ引用ツールのキー押した時は
 文字列選択状態別処理
#-----------------------------------------------------------------------
# 起動処理
#-----------------------------------------------------------------------
文字列選択状態別処理する。
母艦のタイトルは「2ch引用ツール」。


#-----------------------------------------------------------------------
# 関数定義
#-----------------------------------------------------------------------
●文字列選択状態別処理
 もし、(スレ引用ツールの選択文字列)が「」ならば、
  画像記法挿入メニューの有効はオン。
  サムネ画像記法挿入メニューの有効はオン。
  AA記法挿入メニューの有効はオフ。
  太字化メニューの有効はオフ。
  斜体化メニューの有効はオフ。
  文字装飾メニューの有効はオフ。
 違えば
  画像記法挿入メニューの有効はオフ。
  サムネ画像記法挿入メニューの有効はオフ。
  AA記法挿入メニューの有効はオン。
  太字化メニューの有効はオン。
  斜体化メニューの有効はオン。
  文字装飾メニューの有効はオン。

●出力処理
 出力文字は、(スレ引用ツールのテキスト)を出力変換処理。
 出力文字をメモ記入。
 出力文字は、それ。
 もし、出力文字が「」でないならば
  出力文字をコピー。

●出力変換処理(対象文字列を)
 # レスのヘッダー行頭に、識別文字「▼」を挿入
 対象文字列は、対象文字列の「^(\d+ 名前:)」を「▼$1」へ正規表現置換。
 # 行頭の「>」や「>」の前に全角空白を挿入
 対象文字列は、対象文字列の「^([>>])」を「 $1」へ正規表現置換。
 # 行頭の半角空白の前に全角空白を挿入
 対象文字列は、対象文字列の「^( )」を「 $1」へ正規表現置換。
 対象文字列で戻る。

●AA記法挿入処理
 処理済み文字列は、「#aa{波カッコ}{波カッコ}{波カッコ}{波カッコ}{~}」&
 「{スレ引用ツールの選択文字列}{~}」&
 「{波カッコ閉じ}{波カッコ閉じ}{波カッコ閉じ}{波カッコ閉じ}」。
 スレ引用ツールの選択文字列は、処理済み文字列。

●画像記法挿入処理
 スレ引用ツールの選択文字列は、「#ref(【ファイル名】,【ページ名】,width=【幅】)」。

●サムネ画像記法挿入処理
 スレ引用ツールの選択文字列は、「&blankimg(【ファイル名/URL】)←クリックで拡大表示」

●太字化処理
 処理済み文字列は、「&b(){波カッコ}」&
 「{スレ引用ツールの選択文字列}{波カッコ閉じ}」。
 スレ引用ツールの選択文字列は、処理済み文字列。

●斜体化処理
 処理済み文字列は、「&i(){波カッコ}」&
 「{スレ引用ツールの選択文字列}{波カッコ閉じ}」。
 スレ引用ツールの選択文字列は、処理済み文字列。

●文字装飾処理
 文字サイズリストの値は0。
 文字色リストの値は0。
 文字装飾フォームをモーダル表示。


■コメント

■問題点~アスキーアート行頭の半角空白の扱い~

 以下の処理に問題点があることが判明。

  • 【主要機能3】テキスト全体への一括変換機能
    • 行頭の「>」や「>」の前に全角空白を挿入(引用文の@wiki記法として誤認されることを防ぐ)
    • 行頭の半角空白の前に全角空白を挿入(整形済みテキストの@wiki記法として誤認されることを防ぐ)

 現在、エディタ上のテキスト全体を対象に正規表現置換をしていますが、アスキーアートを引用する場合、そのアスキーアートの行頭に「>」や「>」、半角空白があると全角空白が挿入されてしまい、アスキーアートが崩れてしまうワケです。

 考えられる改善策は、アスキーアート表示用の@wiki記法で囲まれている行はこの一括置換処理の対象外にする、というチェックを入れること。これを実装するには、対象のテキストをループさせ1行1行読み込む形に変更かな。で、ループ内にアスキーアート表示用の@wiki記法の開始タグと終了タグをチェックする「門番」を置くと…

 サクっと書けそうだけれど、今モチベーションメーターの針が低いので、実際に困った目に会ってやる気が溜まるの待ちw

■はてなダイアリー向けの機能拡張

 これもモチベーションゲージが溜まるの待ち。最近、自分のはてなダイアリーで2ちゃんねるからの引用ってやらないしなぁ。

 機能拡張する場合は、「つぶやき引用ツール」のように、「@wiki記法」グループと、「はてな記法」グループに分けて整理して実装する予定。