上下左右に罫線枠付き貼り付け
- ページ: 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
| |
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);
}
|