このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
sakura-macro [2022/01/19 11:55] tanaka [chop.js] |
sakura-macro [2022/02/01 10:31] (現在) tanaka [visible_pack.js] |
||
|---|---|---|---|
| 行 197: | 行 197: | ||
| ===== xsort.js ===== | ===== xsort.js ===== | ||
| <sxh javascript; | <sxh javascript; | ||
| - | TODO | + | // ----------------------------------------------- |
| + | // 複数キーのソート | ||
| + | // [入力方法]{開始位置}: | ||
| + | // ----------------------------------------------- | ||
| + | |||
| + | main(); | ||
| + | |||
| + | function main() { | ||
| + | |||
| + | // キー | ||
| + | var input = Editor.InputBox(' | ||
| + | if(!input) return; | ||
| + | |||
| + | var keys = []; | ||
| + | var inputWords = input.split(',' | ||
| + | var orderWords = inputWords[inputWords.length-1].split(' | ||
| + | if(inputWords.length - 1 == orderWords.length) { | ||
| + | for(var i=0; i< | ||
| + | |||
| + | var words = inputWords[i].split(':' | ||
| + | if(words.length == 2){ | ||
| + | var pos = 0; | ||
| + | var len = 0; | ||
| + | var order = ''; | ||
| + | |||
| + | pos = parseInt(words[0]); | ||
| + | len = parseInt(words[1]); | ||
| + | order = orderWords[i]; | ||
| + | |||
| + | var obj = new Key(pos, len, order); | ||
| + | keys.push(obj); | ||
| + | } | ||
| + | } | ||
| + | } else { | ||
| + | Editor.ErrorMsg(' | ||
| + | return; | ||
| + | } | ||
| + | |||
| + | // 行 | ||
| + | var items = []; | ||
| + | for(var i=1; i< | ||
| + | var line = GetLineStr(i); | ||
| + | |||
| + | var itemKeys = []; | ||
| + | for(var j=0; j< | ||
| + | itemKeys[j] = line.substr(keys[j].pos-1, | ||
| + | } | ||
| + | |||
| + | var objItem = new Item(i, itemKeys); | ||
| + | items.push(objItem); | ||
| + | } | ||
| + | |||
| + | // ソート | ||
| + | items.sort(function(a, | ||
| + | |||
| + | for(var i=0; i< | ||
| + | |||
| + | if(a.key[i] !== b.key[i]) { | ||
| + | if (a.key[i] < b.key[i]) { | ||
| + | return (keys[i].order.toUpperCase() == ' | ||
| + | } | ||
| + | if (a.key[i] > b.key[i]) { | ||
| + | return (keys[i].order.toUpperCase() == ' | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | return 0; | ||
| + | }); | ||
| + | |||
| + | var sortTxt = ''; | ||
| + | for(var i=0; i< | ||
| + | sortTxt += GetLineStr(items[i].lineNo); | ||
| + | } | ||
| + | |||
| + | // 上書き | ||
| + | Editor.SelectAll(); | ||
| + | Editor.InsText(sortTxt); | ||
| + | } | ||
| + | |||
| + | function Key(pos, len, order) { | ||
| + | this.pos = pos; | ||
| + | this.len = len; | ||
| + | this.order = order; | ||
| + | } | ||
| + | |||
| + | function Item(lineNo, | ||
| + | this.lineNo = lineNo; | ||
| + | this.key = key; | ||
| + | } | ||
| </ | </ | ||
| 行 880: | 行 969: | ||
| return txt; | return txt; | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | \\ | ||
| - | ===== visualize_pack.js ===== | ||
| - | <sxh javascript; | ||
| - | // ----------------------------------------------- | ||
| - | // パック10進の可視化 | ||
| - | // 選択されていなかったら全範囲する | ||
| - | // ----------------------------------------------- | ||
| - | |||
| - | var jisArr = [ | ||
| - | [' | ||
| - | [' | ||
| - | [' | ||
| - | [' | ||
| - | [' | ||
| - | [' | ||
| - | [' | ||
| - | [' | ||
| - | [' | ||
| - | [' | ||
| - | ]; | ||
| - | |||
| - | main(); | ||
| - | |||
| - | function main() { | ||
| - | |||
| - | var isSelected = Editor.IsTextSelected(); | ||
| - | if(isSelected == 0) { | ||
| - | Editor.MessageBox(' | ||
| - | Editor.SelectAll(); | ||
| - | } | ||
| - | |||
| - | var colFrom = GetSelectColumnFrom(); | ||
| - | var colTo = GetSelectColumnTo(); | ||
| - | var lineFrom = GetSelectLineFrom(); | ||
| - | var lineTo = GetSelectLineTo(); | ||
| - | // 選択範囲の文字列取得 | ||
| - | var selectText = GetSelectedString(0); | ||
| - | |||
| - | // 最後の改行削除 | ||
| - | selectText = selectText.replace(/ | ||
| - | |||
| - | // 改行で分割 | ||
| - | var selectArr = selectText.split(' | ||
| - | |||
| - | Editor.CancelMode(); | ||
| - | |||
| - | for(var i=0; i< | ||
| - | |||
| - | var change = ''; | ||
| - | for(var j=0; j< | ||
| - | |||
| - | var hex = (' | ||
| - | |||
| - | var top = hex.charAt(0); | ||
| - | var low = hex.charAt(1); | ||
| - | |||
| - | if(isNaN(top)==0 && isNaN(low)==0) { | ||
| - | change += jisArr[low][top]; | ||
| - | }else{ | ||
| - | change += String.fromCharCode(parseInt(hex, | ||
| - | } | ||
| - | } | ||
| - | |||
| - | // 範囲選択 | ||
| - | Editor.MoveCursor(lineFrom + i, colFrom, 0); | ||
| - | if(colTo == 1) { | ||
| - | Editor.SelectLine(0); | ||
| - | Editor.Left_Sel(0); | ||
| - | } else { | ||
| - | for(var col=colFrom; | ||
| - | Editor.Right_Sel(0); | ||
| - | } | ||
| - | } | ||
| - | |||
| - | // 上書き | ||
| - | Editor.InsText(change); | ||
| - | } | ||
| } | } | ||
| </ | </ | ||