Macro/投稿/159 のバックアップ(No.3)




上下左右に罫線枠付き貼り付け

  • ページ: Macro/投稿
  • 作者: ガンジャム?
  • カテゴリー: js
  • 投稿日: 2006-12-25 (月) 23:19:27

メッセージ

行バイト長取得にpeakさんのbyteLengh()を利用してすっきりしました。

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
//keisenPaste.jp
//クリップボードデータの上下左右に罫線枠をつけて挿入
 
main();
function main() {
    var arrLine = getClipbrd();
    if (arrLine) {
        var maxWidth = compareLength(arrLine);
        var arSetTxt = setLength(arrLine, maxWidth);
        insTxt(arSetTxt, maxWidth);
    }
}
 
function getClipbrd() {
    var ie = new ActiveXObject("InternetExplorer.Application");
        ie.Navigate("about:blank");
    var clip = ie.Document.parentWindow.clipboardData.getData("Text");
        ie = null;
 
    if (clip) {
        var crlf = /\r\n/mg, cr = /\n/mg, lf = /\r/mg;
        var str = "";
        if (clip.indexOf("\r\n") > 0) {
            str = clip;
        } else if (clip.indexOf("\n") > 0) {
            str = clip.replace(lf, "\r\n");
        } else if (clip.indexOf("\r") > 0) {
            str = clip.replace(cr, "\r\n");
        } else {
            str = clip;
        }
        return(str.split("\r\n"));
    } else {
        return(false);
    }
}
 
function compareLength(arr) {
    var m = 1;
    for (i in arr) {
        var ln = byteLength(arr[i]);
        if (m < ln) {
            m = ln;
        }
    }
    if (m % 2) {
        m++;
    }
    return(m);
}
 
function setLength(arr, m) {
    for (var i=0 in arr) {
        var ln = byteLength(arr[i]);
        if (ln < m) {
            var s = "";
            var d = m - ln
            for (j=0; j < d; j++) {
                s += " ";
            }
            arr[i] += s;
        }
    }
    return(arr);
}
 
function byteLength(s) {
    var len = s.length;
    var blen = len;
    for (i=0; i<len; i++) {
        if (isWide(s.charCodeAt(i))) {
            blen++;
        }
    }
    return(blen);
}
function isWide(charCode) {
    return(0x80 <= charCode && (charCode <= 0xff60 || 0xffa0 <= charCode));
}
 
function insTxt(arr, m) {
    var m = m / 2;
    var k = "", s ="";
    for (i=0; i < m; i++) {
        k += "─";
    }
    var headLine = "┌"+ k + "┐" + "\r\n";
    var traiLine = "└"+ k + "┘" + "\r\n";
    
    for (j in arr) {
        s = s +"│"+ arr[j] +"│" + "\r\n";
    }
    Editor.InsText(headLine + s + traiLine);
}
 


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS