サクラエディタ/delimAlign.js
の編集
Top
/
サクラエディタ
/
delimAlign.js
[
トップ
] [
編集
|
凍結
|
差分
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
Active
Rubyチートシート
成果物リスト
勉強会ログ
↑
アイデア
Webサービス案
Androidアプリ案
電子工作案
GreaseMonkey案
contribute
編集
↑
Recent
2023-11-12
自動車保険
2023-08-04
HDDリスト
2023-08-03
docker
2023-05-17
Rubyチートシート
2023-03-30
RAID5/トラブル20230324
2023-03-25
PC/misuzu
2023-03-24
PC
2023-03-23
PC/DESKTOP-7SL5J8R
2022-12-16
Linux
2022-11-09
Linux/ディスクイメージ取得
2021-05-23
CTF
2021-03-17
PC/misumi
2020-08-31
COMP
2020-03-28
PC/misumi/ubuntu
Windows 10
2018-06-04
Microsoft decode 2018 2日目
Microsoft decode 2018 1日目
2018-04-07
カメラ
2018-01-06
電力自由化
2017-12-21
CROSS×BEATS
B
I
U
D
H
[[]]
<br>
--
---( /* 縦位置揃え 複数列対応&デリミタ自動選択 デリミタは事前に設定したものの中から自動判別します PukiWikiのテーブルや、複数行にわたる配列の初期化子などに、幅広く使えます written by Nickle 2007/4/21- 動作例 |a|bbb|c|h |a |bbb |c |h |aaa| bb|ccc| --> |aaa| bb|ccc| |aaa|b|cc| |aaa|b |cc | a ,bb,cccc a ,bb ,cccc aa,b,c --> aa ,b ,c a,bbb,cc a ,bbb,cc const char* array[] = { const char* array[] = { "a", "b", "c", "a" , "b" , "c" , "aaa", "b", "cc", --> "aaa", "b" , "cc", "aa", "bbbb", "c", "aa" , "bbbb", "c" , }; }; // 各要素の先頭・末尾の空白を削除すると、こういう場合に綺麗にいかない int i = 0; int i = 0; int abc = 1; --> int abc = 1; int longlonglong = 2; int longlonglong = 2; 仕様 ・矩形選択は非対応です ・デリミタは、delimitersの中から最初に現れたものを選択します ・タブは考慮しません。必要なら空白<->タブ変換と組み合わせて使うと吉です */ // 設定 -------------------------------------------------------------- // デリミタ候補。優先度の高い順に並べてください var delimiters = [ "|", ",", "=" ]; // 各要素の先頭・末尾の空白を削除するかどうか // (有効にするなら、インデントなど意図して入れてある場合に注意) var removeLeadingSpace = false; var removeTrailingSpace = false; // ここまで ---------------------------------------------------------- var delimiter = ""; main(); function main() { if(Editor.IsTextSelected() == 0) return; var lines = getSelectedLines(); // デリミタ決定 outer: for(i in delimiters) { for(j in lines) { if(lines[j].indexOf(delimiters[i]) != -1) { delimiter = delimiters[i]; break outer; } } } if(delimiter == "") return; // Editor.InsText(delimiter); // 各列の最大幅取得 var maxWidth = new Array; for(i in lines) { var cols = getCols(lines[i]); // デリミタがひとつもない行 if(cols.length == 1) continue; for(j in cols) { if(maxWidth[j] == null) maxWidth[j] = bytes(cols[j]); else maxWidth[j] = Math.max(maxWidth[j], bytes(cols[j])); } } // Editor.InsText(maxWidth.join(",")); // 最大幅に合わせて整形 var out = new Array; for(i in lines) { var cols = getCols(lines[i]); // デリミタがひとつもない行 if(cols.length == 1) { out.push(lines[i]); continue; } // 各列に空白を入れる var newCols = new Array; for(j in cols) { var s = cols[j]; assert(bytes(s) <= maxWidth[j]); newCols[j] = s; for(var i=0;i
("", a, b, c, "") ("", a, b, c, "").join("|") => |a|b|c| ということで、先頭や末尾のデリミタも気にしなくてOK。幸せだ */ } Editor.InsText(out.join(newLine())); } function assert(cond) { if(!cond) throw new Error("assertion failed!", cond); } function newLine() { switch(Editor.GetLineCode()) { case 0: return "\r\n"; case 1: return "\r"; case 2: return "\n"; } } function getSelectedLines() { var lines = Editor.GetSelectedString(0).split(newLine()); return lines; } // thx to Macro-BBS[341] function isWide(charCode) { return 0x80 <= charCode && (charCode <= 0xff60 || 0xffa0 <= charCode); } // Shift-JIS換算のバイト数(=画面上の表示桁数)を返す function bytes(str) { var bytes = 0; for (var i=0;i
タイムスタンプを更新
テキスト整形のルールを表示する
Last-modified: 2014-12-24(水) 16:49:51