「
TrueとFalse を切り替える
」を編集中
2020年5月13日 (水) 01:10時点における
Sukemaru
(
トーク
|
投稿記録
)
による版
(ソースコードと ZIP 書庫を更新)
(
差分
)
← 古い版
|
最新版
(
差分
) |
新しい版 →
(
差分
)
ナビゲーションに移動
検索に移動
警告: このページの古い版を編集しています。
公開すると、この版以降になされた変更がすべて失われます。
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== Yes/No マクロ(<b style="color:#0000c0;">True</b> と <b style="color:#c00;">False</b> を切り替える) == <big>'''ダウンロード'''</big> >> 「[[メディア:TrueとFalseを切り替える.zip|TrueとFalseを切り替える.zip]]」 2020/05/12 (アイコン入り)<br> 改造版 ('''ToDoリストモード'''[https://www.haijin-boys.com/software/mery/mery-2-7-0#comment=2240]を搭載) >> 「[[メディア:YES/NO マクロ(ToDo).zip|YES/NO マクロ(ToDo).zip]]」 2020/05/12 (アイコン入り) <big><b style="color:#0000c0;">YES</b>/<b style="color:#c00;">NO</b> マクロ</big> * 選択範囲の文字列が "True" なら "False" に、"False" なら "True" に変換します。 : ソースコード内に相互変換する単語のグループを登録して使用します。 : 選択範囲がないときにはキャレット位置の単語を自動選択するように設定できます。 * ダブルクリックでは一括選択できない「'''同一記号の繰り返し文字列'''」を自動選択する機能を、おまけ機能として試験実装してあります(2020/05/12)。 ########## ※※※※※※※※ : ※ 単語の自動選択用の設定項目が有効 <code>wordSelectionEnable = true</code> で、選択範囲のない状態でこのマクロを実行したときのみ。<br> : ※ 登録リストの単語に合致することはないとおもうので、範囲選択操作の補助機能として使用してください。 * True ⇔ False や Yes ⇔ No、はい ⇔ いいえ の '''2つの単語の相互変換''' なら [ "True", "False" ], [ "Yes", "No" ], [ "はい", "いいえ" ], * ほげ → ふが → ぴよ → ほげ のような '''3つ以上の単語を順々に変換''' する場合も、列挙するだけです。 [ "ほげ", "ふが", "ぴよ" ], [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ], * 単語グループの登録は'''「頭文字が大文字」'''の [ "Hoge", "Fuga", "Piyo" ], [ "Hoge", "Fuga", "Piyo" ], : だけであっても、'''「小文字」だけの差分''' hoge → fuga → piyo や hoge → fuga → piyo、 '''「大文字」だけの差分''' HOGE → FUGA → PIYO や HOGE → FUGA → PIYO も変換できます。 <br> : ※「小文字」だけのグループを登録した場合は「大文字」差分の変換もでき、「大文字」だけのグループを登録した場合は「小文字」差分の変換もできますが、どちらも「頭文字が大文字」の差分の変換はできません。 <u><span style="color:#0000c0;">基本的に「頭文字が大文字」での登録をおすすめします。</span></u><br> : ※ 先頭以外にも大文字がある HoGe, FUga, PiyO などは変換しません (これらを変換させる場合は、別途で完全一致する単語グループが必要)。 * '''小文字や大文字の差分では変換させたくない''' グループを登録する場合は、グループの先頭に <b style="color:#c00;">0,</b> を(引用符で囲わずに)置きます。 <br> 以下の例では mozilla や FIREFOX, ThunderBird は変換されません。 [ <b style="color:#c00;">0,</b> "Mozilla", "Firefox", "Thunderbird" ], : FireFox や ThunderBird のように先頭以外にも大文字がある単語については、別途で完全一致する単語グループの登録が必要となります。 * '''「大文字」だけを除外したい''' 場合は、<b style="color:#c00;">0,</b> 付きの「頭文字」のグループと「小文字」のグループを登録します。 <br> 以下の例では ALPHA や BRAVO は変換されません。 [ <b style="color:#c00;">0,</b> "Alpha", "Bravo", "Charlie", "Delta", "Echo" ], [ <b style="color:#c00;">0,</b> "alpha", "bravo", "charlie", "delta", "echo" ], : 先頭の <b style="color:#c00;">0,</b> は '''「完全一致のみ」のフラグ''' になります( → 1 や false, true などを置くとエラー)。<br> ※ <code>'''"'''0'''",'''</code> だと '''半角数字の "文字列"''' になるのでグループ内の単語のひとつとして登録されます。 * 左 → 右 方向には変換しても '''右 → 左 (末尾から先頭)方向に変換させたくない場合''' は、グループの最後に空の要素 <b style="color:#c00;">, ""</b> を置きます。 <br> 以下の例では Mery から Notepad や Terapad には変換されません。 [ 0, "Notepad", "Mery"<b style="color:#c00;">, ""</b> ], [ "Terapad", "EmEditor", "gPad", "秀丸", "Mery"<b style="color:#c00;">, ""</b> ], : ※ グループの途中に空の要素「 '''""''' 」があると、「 '''""''' 」以降の単語には変換されなくなります。 * 2020/05/12 仕様変更: :※うえの例の <code>[ ... , "Mery", "" ],</code> のグループよりもうしろに [ "Mery", "メリー", "羊" ], : のようなグループがある場合は、 Mery → メリー → 羊 → Mery と変換されます。 <span style="color:#c00;">マクロを実行しても正しくトグル変換しないときやエラーになったときは、'''"'''ダブルクォート'''"'''、カンマ「 ''',''' 」、'''[''' 角カッコ ''']''' の過不足を確認してください( [ 角カッコ ] を閉じたうしろにはカンマ「 , 」が必要)。<br>また、おなじ単語を別のグループにも'''重複して登録'''していないかを確認してください(先に登録されたグループが優先的に参照されます)。</span> == ソースコード == <source lang="javascript"> #title = "Yes/No マクロ" #tooltip = "True と False を切り替える" // #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",265 // #icon = "TF.ico" /** * -------------------------------------------------------- * 「Yes/No マクロ」(True と False を切り替える) * sumemaru, 2018/11/20 - 2020/05/12 * -------------------------------------------------------- * 選択範囲の文字列が "True" なら "False" に、"False" なら "True" にする * * ■同一記号の繰り返し文字列の自動選択 (2020/05/12 追加) * ・ e.g. #### や ※※※※ など、ダブルクリックでは範囲選択できないものを自動選択する * * ※ 単語グループの登録リストの仕様や変換処理の基本動作は 2018/11/27 版と共通 * ※ Yes/No マクロでは、"任意の文字列" を "" に変換(文字列を削除)することはできない * ※ 単語グループ登録リストを上から順番に検索するので * 優先度の高いグループを上に置くこと */ // ---------- ▼ 設定項目 ▼ ---------- // ■選択範囲がないときにキャレット位置の単語を自動選択するか? var wordSelectionEnable = true; // false なら、選択範囲のないときは変換しない // ■変換後に選択範囲を残すか? var leftSelectionEnable = true; // true なら、連続実行でトグル変換できる // ---------- ▲ 設定項目 ▲ ---------- var a = new Array( // ←消しちゃダメ // ---------- ▼ 単語グループを登録 ▼ ---------- // 単語を "ダブルクォート" か 'シングルクォート' で囲い、カンマ「 , 」で区切って並べる。 // ・グループを [ 角カッコ ] で囲い、うしろにもカンマ「 , 」を付けること。 // ※マクロを実行して正しくトグルしないときやエラーになったときは、 // "ダブルクォート"/カンマ「 , 」/[ 角カッコ ] の過不足を確認。 /* Positive or Negative */ [ "True", "False" ], [ "Yes", "No" ], [ "On", "Off" ], [ "Enable", "Disable" ], [ "Positive", "Negative" ], [ "Possible", "Impossible" ], /* (中略) */ [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ], [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ], [ "①", "②", "③", "④", "⑤", "⑥", "⑦", "⑧", "⑨", "⑩", "⑪", "⑫", "⑬", "⑭", "⑮", "⑯", "⑰", "⑱", "⑲", "⑳" ], [ "➀", "➁", "➂", "➃", "➄", "➅", "➆", "➇", "➈", "➉" ], // ---------- ▲ 単語グループを登録 ▲ ---------- // var a = new Array ... を閉じる [] ); // ← 消しちゃダメ // ---------- ▼ メインコード ▼ ---------- var d = editor.ActiveDocument; var s = editor.ActiveDocument.selection; if ( d.ReadOnly ) { Status = " ドキュメントは書き換え禁止です。"; } else { Redraw = false; var st = yesNo = ""; // 単語の自動選択 + 同一記号の繰り返し文字列の自動選択 if ( s.IsEmpty && wordSelectionEnable ) { s.SelectWord(); st = s.Text; if ( st.length == 1 ) { var ay = s.GetActivePointY( mePosLogical ); var tx = s.GetTopPointX( mePosLogical ); var bx = s.GetBottomPointX( mePosLogical ); var line = d.GetLine( ay, 0 ), len = line.length; for ( ; tx > 0; tx -- ) { if ( line.charAt( tx - 2 ) != st ) break; } for ( ; bx <= len; bx ++ ) { if ( line.charAt( bx - 1 ) != st ) break; } s.SetActivePoint( mePosLogical, tx, ay, false ); s.SetActivePoint( mePosLogical, bx, ay, true ); } } st = s.Text; if ( st ) { yesNo = ConvertYesNo( st, a ); if ( yesNo && yesNo != st ) { s.Text = yesNo; if ( leftSelectionEnable ) { // 単語先頭まで範囲選択 s.SetAnchorPos( s.GetActivePos() - yesNo.length ); } else if ( wordSelectionEnable ) { // 単語先頭にカーソルを移動 s.SetActivePos( s.GetActivePos() - yesNo.length ); } } } Redraw = true; } /** * 関数 ConvertYesNo( str, listArray ) * Yes/No 変換 * listArray の単語グループリストに str がマッチしたとき、変換した単語で返す * 2020/05/12: 変数を適宜追加、変数名を変更、コードを圧縮 */ function ConvertYesNo( str, list ) { var word = "", group, gLen; ListLoop: for ( var i = 0, aLen = list.length, group; i < aLen; i ++ ) { group = list[i]; gLen = group.length; if ( gLen < 2 ) { continue ListLoop; } // 空のグループはスキップ GroupLoop: for ( var j = 0; j < gLen; j ++ ) { if ( ! group[j] ) { continue GroupLoop; } // 空の要素 "" と 0 フラグはスキップ // ヒット(完全一致)したら Hoge, hoge, HOGE if ( group[j] === str ) { word = ( j < gLen - 1 ) ? group[ j + 1 ] // ひとつ右の単語を返す : ( group[0] !== 0 ) ? group[0] // いちばん左の単語を返す :/*(group[0] === 0)*/ group[1]; // ふたつめの単語を返す if ( word ) { break ListLoop; } } // 小文字にしてくらべてヒットしたら( 0 フラグなし) else if ( group[0] !== 0 && group[j].toLowerCase() == str.toLowerCase() ) { word = ( j < gLen - 1 ) ? group[ j + 1 ] // ひとつ右 : group[0]; // いちばん左 // もとの単語が小文字のみなら小文字で、大文字のみなら大文字で返す word = ( str == str.toLowerCase() ) ? word.toLowerCase() : ( str == str.toUpperCase() ) ? word.toUpperCase() /* else */ : ""; // 変換なし if ( word ) { break ListLoop; } } } } return word; } </source> = メモ = <!-- 旧バージョン [[ファイル:TrueとFalseを切り替える.zip]] (2018/11/23 sukemaru) --> * 2018/11/25 sukemaru : ソースコードを変更しました。 * 2018/11/27 sukemaru : ソースコードを変更しました。 * 2019/05/06 sukemaru : 「ToDoリストモード」搭載の改造版のリンクを追加しました(単語登録リストの仕様は 2018/11/27 の通常版とおなじ)。 * 2020/05/12 sukemaru : ソースコードを更新しました(単語登録リストの仕様は 2018/11/27 の通常版とおなじまま)。<br> ZIP 書庫内のソースコードでは、単語グループのリストは sukemaru の自家用状態のまま 300 件(グループ)ぐらい詰めこんであります。
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク