@konomi-app/kintone-utilities 5.12.1 → 5.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/character-hebon.d.ts +4 -0
- package/dist/character-hebon.js +196 -0
- package/dist/character-hebon.js.map +1 -0
- package/dist/character-width-conversion.d.ts +38 -0
- package/dist/character-width-conversion.js +45 -4
- package/dist/character-width-conversion.js.map +1 -1
- package/dist/character-width-conversion.test.js +12 -12
- package/package.json +2 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// 'ん' は、別途ハンドリングするのでデータに含めない
|
|
2
|
+
const hebonMap = {
|
|
3
|
+
あ: 'A',
|
|
4
|
+
い: 'I',
|
|
5
|
+
う: 'U',
|
|
6
|
+
え: 'E',
|
|
7
|
+
お: 'O',
|
|
8
|
+
か: 'KA',
|
|
9
|
+
き: 'KI',
|
|
10
|
+
く: 'KU',
|
|
11
|
+
け: 'KE',
|
|
12
|
+
こ: 'KO',
|
|
13
|
+
さ: 'SA',
|
|
14
|
+
し: 'SHI',
|
|
15
|
+
す: 'SU',
|
|
16
|
+
せ: 'SE',
|
|
17
|
+
そ: 'SO',
|
|
18
|
+
た: 'TA',
|
|
19
|
+
ち: 'CHI',
|
|
20
|
+
つ: 'TSU',
|
|
21
|
+
て: 'TE',
|
|
22
|
+
と: 'TO',
|
|
23
|
+
な: 'NA',
|
|
24
|
+
に: 'NI',
|
|
25
|
+
ぬ: 'NU',
|
|
26
|
+
ね: 'NE',
|
|
27
|
+
の: 'NO',
|
|
28
|
+
は: 'HA',
|
|
29
|
+
ひ: 'HI',
|
|
30
|
+
ふ: 'FU',
|
|
31
|
+
へ: 'HE',
|
|
32
|
+
ほ: 'HO',
|
|
33
|
+
ま: 'MA',
|
|
34
|
+
み: 'MI',
|
|
35
|
+
む: 'MU',
|
|
36
|
+
め: 'ME',
|
|
37
|
+
も: 'MO',
|
|
38
|
+
や: 'YA',
|
|
39
|
+
ゆ: 'YU',
|
|
40
|
+
よ: 'YO',
|
|
41
|
+
ら: 'RA',
|
|
42
|
+
り: 'RI',
|
|
43
|
+
る: 'RU',
|
|
44
|
+
れ: 'RE',
|
|
45
|
+
ろ: 'RO',
|
|
46
|
+
わ: 'WA',
|
|
47
|
+
ゐ: 'I',
|
|
48
|
+
ゑ: 'E',
|
|
49
|
+
を: 'O',
|
|
50
|
+
ぁ: 'A',
|
|
51
|
+
ぃ: 'I',
|
|
52
|
+
ぅ: 'U',
|
|
53
|
+
ぇ: 'E',
|
|
54
|
+
ぉ: 'O',
|
|
55
|
+
が: 'GA',
|
|
56
|
+
ぎ: 'GI',
|
|
57
|
+
ぐ: 'GU',
|
|
58
|
+
げ: 'GE',
|
|
59
|
+
ご: 'GO',
|
|
60
|
+
ざ: 'ZA',
|
|
61
|
+
じ: 'JI',
|
|
62
|
+
ず: 'ZU',
|
|
63
|
+
ぜ: 'ZE',
|
|
64
|
+
ぞ: 'ZO',
|
|
65
|
+
だ: 'DA',
|
|
66
|
+
ぢ: 'JI',
|
|
67
|
+
づ: 'ZU',
|
|
68
|
+
で: 'DE',
|
|
69
|
+
ど: 'DO',
|
|
70
|
+
ば: 'BA',
|
|
71
|
+
び: 'BI',
|
|
72
|
+
ぶ: 'BU',
|
|
73
|
+
べ: 'BE',
|
|
74
|
+
ぼ: 'BO',
|
|
75
|
+
ぱ: 'PA',
|
|
76
|
+
ぴ: 'PI',
|
|
77
|
+
ぷ: 'PU',
|
|
78
|
+
ぺ: 'PE',
|
|
79
|
+
ぽ: 'PO',
|
|
80
|
+
きゃ: 'KYA',
|
|
81
|
+
きゅ: 'KYU',
|
|
82
|
+
きょ: 'KYO',
|
|
83
|
+
しゃ: 'SHA',
|
|
84
|
+
しゅ: 'SHU',
|
|
85
|
+
しょ: 'SHO',
|
|
86
|
+
ちゃ: 'CHA',
|
|
87
|
+
ちゅ: 'CHU',
|
|
88
|
+
ちょ: 'CHO',
|
|
89
|
+
ちぇ: 'CHE',
|
|
90
|
+
にゃ: 'NYA',
|
|
91
|
+
にゅ: 'NYU',
|
|
92
|
+
にょ: 'NYO',
|
|
93
|
+
ひゃ: 'HYA',
|
|
94
|
+
ひゅ: 'HYU',
|
|
95
|
+
ひょ: 'HYO',
|
|
96
|
+
みゃ: 'MYA',
|
|
97
|
+
みゅ: 'MYU',
|
|
98
|
+
みょ: 'MYO',
|
|
99
|
+
りゃ: 'RYA',
|
|
100
|
+
りゅ: 'RYU',
|
|
101
|
+
りょ: 'RYO',
|
|
102
|
+
ぎゃ: 'GYA',
|
|
103
|
+
ぎゅ: 'GYU',
|
|
104
|
+
ぎょ: 'GYO',
|
|
105
|
+
じゃ: 'JA',
|
|
106
|
+
じゅ: 'JU',
|
|
107
|
+
じょ: 'JO',
|
|
108
|
+
びゃ: 'BYA',
|
|
109
|
+
びゅ: 'BYU',
|
|
110
|
+
びょ: 'BYO',
|
|
111
|
+
ぴゃ: 'PYA',
|
|
112
|
+
ぴゅ: 'PYU',
|
|
113
|
+
ぴょ: 'PYO',
|
|
114
|
+
};
|
|
115
|
+
const aaSet = {
|
|
116
|
+
AA: true,
|
|
117
|
+
EE: true,
|
|
118
|
+
II: false, // I は連続しても省略しない
|
|
119
|
+
OO: true,
|
|
120
|
+
OU: true,
|
|
121
|
+
UU: true,
|
|
122
|
+
};
|
|
123
|
+
const getHebon = (s, index) => {
|
|
124
|
+
let h = null;
|
|
125
|
+
let c = null;
|
|
126
|
+
if (index + 1 < s.length) {
|
|
127
|
+
c = s.substring(index, index + 2);
|
|
128
|
+
h = hebonMap[c];
|
|
129
|
+
}
|
|
130
|
+
if (!h && index < s.length) {
|
|
131
|
+
c = s.substring(index, index + 1);
|
|
132
|
+
h = hebonMap[c];
|
|
133
|
+
}
|
|
134
|
+
return { c: c ?? '', h: h ?? null };
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* 全角ひらがなをヘボン式ローマ字で半角英文字に変換します。
|
|
138
|
+
*/
|
|
139
|
+
export function toHebon(s) {
|
|
140
|
+
let hebon = '';
|
|
141
|
+
let lastHebon = '';
|
|
142
|
+
let lastChar = '';
|
|
143
|
+
let i = 0;
|
|
144
|
+
while (i < s.length) {
|
|
145
|
+
const hr = getHebon(s, i);
|
|
146
|
+
if (hr.c === 'っ') {
|
|
147
|
+
// 'っち'
|
|
148
|
+
const nextHr = getHebon(s, i + 1);
|
|
149
|
+
if (nextHr.h !== null) {
|
|
150
|
+
if (nextHr.h.startsWith('CH')) {
|
|
151
|
+
hr.h = 'T';
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
hr.h = nextHr.h.substring(0, 1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if (hr.c === 'ん') {
|
|
159
|
+
// B,M,P の前の 'ん' は 'M' とする。
|
|
160
|
+
const nextHr = getHebon(s, i + 1);
|
|
161
|
+
if (nextHr.h !== null && 'BMP'.indexOf(nextHr.h.charAt(0)) !== -1) {
|
|
162
|
+
hr.h = 'M';
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
hr.h = 'N';
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else if (hr.c === 'ー') {
|
|
169
|
+
// 長音は無視
|
|
170
|
+
hr.h = '';
|
|
171
|
+
}
|
|
172
|
+
if (hr.h !== null) {
|
|
173
|
+
// 変換できる文字の場合
|
|
174
|
+
if (lastHebon !== null) {
|
|
175
|
+
// 連続する母音の除去
|
|
176
|
+
let htest = lastHebon + hr.h;
|
|
177
|
+
if (htest.length > 2) {
|
|
178
|
+
htest = htest.substring(htest.length - 2);
|
|
179
|
+
}
|
|
180
|
+
if (aaSet[htest]) {
|
|
181
|
+
hr.h = '';
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
hebon += hr.h;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// 変換できない文字の場合
|
|
188
|
+
hebon += hr.c;
|
|
189
|
+
}
|
|
190
|
+
lastHebon = hr.h;
|
|
191
|
+
lastChar = hr.c;
|
|
192
|
+
i += hr.c.length;
|
|
193
|
+
}
|
|
194
|
+
return hebon;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=character-hebon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-hebon.js","sourceRoot":"","sources":["../src/character-hebon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* カタカナをひらがなに変換します。
|
|
3
|
+
*
|
|
4
|
+
* @param target - 変換対象の文字列
|
|
5
|
+
* @returns カタカナがひらがなに変換された文字列
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```
|
|
9
|
+
* convertKatakanaToHiragana("カタカナ") // => "かたかな"
|
|
10
|
+
* convertKatakanaToHiragana("カタカナとひらがな") // => "かたかなとひらがな"
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
1
13
|
export declare const convertKatakanaToHiragana: (target: string) => string;
|
|
14
|
+
/**
|
|
15
|
+
* 全角英数字を半角英数字に変換します。
|
|
16
|
+
*
|
|
17
|
+
* @param target - 変換対象の文字列
|
|
18
|
+
* @returns 全角英数字が半角英数字に変換された文字列
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```
|
|
22
|
+
* convertFullwidthAlphanumericToHalfwidth("ABC123") // => "ABC123"
|
|
23
|
+
* convertFullwidthAlphanumericToHalfwidth("全角英数字") // => "全角英数字"
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
2
26
|
export declare const convertFullwidthAlphanumericToHalfwidth: (target: string) => string;
|
|
27
|
+
/**
|
|
28
|
+
* 半角カタカナを全角カタカナに変換します。
|
|
29
|
+
*
|
|
30
|
+
* @param target - 変換対象の文字列
|
|
31
|
+
* @returns 半角カタカナが全角カタカナに変換された文字列
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```
|
|
35
|
+
* convertHalfwidthKatakanaToFullwidth("カタカナ") // => "カタカナ"
|
|
36
|
+
* convertHalfwidthKatakanaToFullwidth("半角カタカナ") // => "半角カタカナ"
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
3
39
|
export declare const convertHalfwidthKatakanaToFullwidth: (target: string) => string;
|
|
4
40
|
export type GetYuruCharaOptions = {
|
|
5
41
|
isZenkakuEisujiSensitive: boolean;
|
|
6
42
|
isCaseSensitive: boolean;
|
|
7
43
|
isHankakuKatakanaSensitive: boolean;
|
|
8
44
|
isKatakanaSensitive: boolean;
|
|
45
|
+
isHebonSensitive: boolean;
|
|
9
46
|
};
|
|
10
47
|
/**
|
|
11
48
|
* 指定された文字列に以下の変換をかけて返却します
|
|
@@ -23,6 +60,7 @@ export type GetYuruCharaOptions = {
|
|
|
23
60
|
* @param options.isCaseSensitive - 大文字小文字を区別するかどうか
|
|
24
61
|
* @param options.isHankakuKatakanaSensitive - 半角カタカナを全角カタカナに変換するかどうか
|
|
25
62
|
* @param options.isKatakanaSensitive - カタカナをひらがなに変換するかどうか
|
|
63
|
+
* @param options.isHebonSensitive - ヘボン式ローマ字に変換するかどうか
|
|
26
64
|
* @returns 変換後の文字列
|
|
27
65
|
*
|
|
28
66
|
* @example
|
|
@@ -1,9 +1,46 @@
|
|
|
1
|
+
import { toHebon } from './character-hebon';
|
|
2
|
+
/**
|
|
3
|
+
* カタカナをひらがなに変換します。
|
|
4
|
+
*
|
|
5
|
+
* @param target - 変換対象の文字列
|
|
6
|
+
* @returns カタカナがひらがなに変換された文字列
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```
|
|
10
|
+
* convertKatakanaToHiragana("カタカナ") // => "かたかな"
|
|
11
|
+
* convertKatakanaToHiragana("カタカナとひらがな") // => "かたかなとひらがな"
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
1
14
|
export const convertKatakanaToHiragana = (target) => {
|
|
2
15
|
return target.replace(/[\u30a1-\u30f6]/g, (match) => String.fromCharCode(match.charCodeAt(0) - 0x60));
|
|
3
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* 全角英数字を半角英数字に変換します。
|
|
19
|
+
*
|
|
20
|
+
* @param target - 変換対象の文字列
|
|
21
|
+
* @returns 全角英数字が半角英数字に変換された文字列
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```
|
|
25
|
+
* convertFullwidthAlphanumericToHalfwidth("ABC123") // => "ABC123"
|
|
26
|
+
* convertFullwidthAlphanumericToHalfwidth("全角英数字") // => "全角英数字"
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
4
29
|
export const convertFullwidthAlphanumericToHalfwidth = (target) => {
|
|
5
30
|
return target.replace(/[A-Za-z0-9]/g, (s) => String.fromCharCode(s.charCodeAt(0) - 0xfee0));
|
|
6
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* 半角カタカナを全角カタカナに変換します。
|
|
34
|
+
*
|
|
35
|
+
* @param target - 変換対象の文字列
|
|
36
|
+
* @returns 半角カタカナが全角カタカナに変換された文字列
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```
|
|
40
|
+
* convertHalfwidthKatakanaToFullwidth("カタカナ") // => "カタカナ"
|
|
41
|
+
* convertHalfwidthKatakanaToFullwidth("半角カタカナ") // => "半角カタカナ"
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
7
44
|
export const convertHalfwidthKatakanaToFullwidth = (target) => {
|
|
8
45
|
const KANA_CONVERTION_MAP = {
|
|
9
46
|
ガ: 'ガ',
|
|
@@ -118,6 +155,7 @@ export const convertHalfwidthKatakanaToFullwidth = (target) => {
|
|
|
118
155
|
* @param options.isCaseSensitive - 大文字小文字を区別するかどうか
|
|
119
156
|
* @param options.isHankakuKatakanaSensitive - 半角カタカナを全角カタカナに変換するかどうか
|
|
120
157
|
* @param options.isKatakanaSensitive - カタカナをひらがなに変換するかどうか
|
|
158
|
+
* @param options.isHebonSensitive - ヘボン式ローマ字に変換するかどうか
|
|
121
159
|
* @returns 変換後の文字列
|
|
122
160
|
*
|
|
123
161
|
* @example
|
|
@@ -132,20 +170,23 @@ export const convertHalfwidthKatakanaToFullwidth = (target) => {
|
|
|
132
170
|
* ```
|
|
133
171
|
*/
|
|
134
172
|
export const getYuruChara = (target, options) => {
|
|
135
|
-
const { isZenkakuEisujiSensitive = false, isCaseSensitive = false, isHankakuKatakanaSensitive = false, isKatakanaSensitive = false, } = options || {};
|
|
173
|
+
const { isZenkakuEisujiSensitive = false, isCaseSensitive = false, isHankakuKatakanaSensitive = false, isKatakanaSensitive = false, isHebonSensitive = false, } = options || {};
|
|
136
174
|
let converted = target;
|
|
137
175
|
if (!isZenkakuEisujiSensitive) {
|
|
138
176
|
converted = convertFullwidthAlphanumericToHalfwidth(converted);
|
|
139
177
|
}
|
|
140
|
-
if (!isCaseSensitive) {
|
|
141
|
-
converted = converted.toLowerCase();
|
|
142
|
-
}
|
|
143
178
|
if (!isHankakuKatakanaSensitive) {
|
|
144
179
|
converted = convertHalfwidthKatakanaToFullwidth(converted);
|
|
145
180
|
}
|
|
146
181
|
if (!isKatakanaSensitive) {
|
|
147
182
|
converted = convertKatakanaToHiragana(converted);
|
|
148
183
|
}
|
|
184
|
+
if (!isHebonSensitive) {
|
|
185
|
+
converted = toHebon(converted);
|
|
186
|
+
}
|
|
187
|
+
if (!isCaseSensitive) {
|
|
188
|
+
converted = converted.toLowerCase();
|
|
189
|
+
}
|
|
149
190
|
return converted;
|
|
150
191
|
};
|
|
151
192
|
//# sourceMappingURL=character-width-conversion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"character-width-conversion.js","sourceRoot":"","sources":["../src/character-width-conversion.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"character-width-conversion.js","sourceRoot":"","sources":["../src/character-width-conversion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,MAAc,EAAE,EAAE;IAC1D,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAE,CAClD,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAChD,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,MAAc,EAAE,EAAE;IACxE,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAC9F,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,MAAc,EAAE,EAAE;IACpE,MAAM,mBAAmB,GAAG;QAC1B,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,CAAC,EAAE,GAAG;QACN,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,CAAC,EAAE,GAAG;QACN,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;KACT,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClF,OAAO,MAAM;SACV,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAqC,CAAC,CAAC;SAClF,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxB,CAAC,CAAC;AAUF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,OAAsC,EAAE,EAAE;IACrF,MAAM,EACJ,wBAAwB,GAAG,KAAK,EAChC,eAAe,GAAG,KAAK,EACvB,0BAA0B,GAAG,KAAK,EAClC,mBAAmB,GAAG,KAAK,EAC3B,gBAAgB,GAAG,KAAK,GACzB,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,IAAI,SAAS,GAAG,MAAM,CAAC;IAEvB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,SAAS,GAAG,uCAAuC,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAChC,SAAS,GAAG,mCAAmC,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,SAAS,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { getYuruChara } from './character-width-conversion';
|
|
2
2
|
describe('Yuru Chara', () => {
|
|
3
3
|
test('ひらがな', () => {
|
|
4
|
-
expect(getYuruChara('あいうえお')).toBe('
|
|
5
|
-
expect(getYuruChara('あいうえお', { isZenkakuEisujiSensitive: true })).toBe('
|
|
6
|
-
expect(getYuruChara('あいうえお', { isCaseSensitive: true })).toBe('
|
|
7
|
-
expect(getYuruChara('あいうえお', { isHankakuKatakanaSensitive: true })).toBe('
|
|
8
|
-
expect(getYuruChara('あいうえお', { isKatakanaSensitive: true })).toBe('
|
|
4
|
+
expect(getYuruChara('あいうえお')).toBe('aiueo');
|
|
5
|
+
expect(getYuruChara('あいうえお', { isZenkakuEisujiSensitive: true })).toBe('aiueo');
|
|
6
|
+
expect(getYuruChara('あいうえお', { isCaseSensitive: true })).toBe('AIUEO');
|
|
7
|
+
expect(getYuruChara('あいうえお', { isHankakuKatakanaSensitive: true })).toBe('aiueo');
|
|
8
|
+
expect(getYuruChara('あいうえお', { isKatakanaSensitive: true })).toBe('aiueo');
|
|
9
9
|
});
|
|
10
10
|
test('全角カタカナ', () => {
|
|
11
|
-
expect(getYuruChara('アイウエオ')).toBe('
|
|
12
|
-
expect(getYuruChara('アイウエオ', { isZenkakuEisujiSensitive: true })).toBe('
|
|
13
|
-
expect(getYuruChara('アイウエオ', { isCaseSensitive: true })).toBe('
|
|
14
|
-
expect(getYuruChara('アイウエオ', { isHankakuKatakanaSensitive: true })).toBe('
|
|
11
|
+
expect(getYuruChara('アイウエオ')).toBe('aiueo');
|
|
12
|
+
expect(getYuruChara('アイウエオ', { isZenkakuEisujiSensitive: true })).toBe('aiueo');
|
|
13
|
+
expect(getYuruChara('アイウエオ', { isCaseSensitive: true })).toBe('AIUEO');
|
|
14
|
+
expect(getYuruChara('アイウエオ', { isHankakuKatakanaSensitive: true })).toBe('aiueo');
|
|
15
15
|
expect(getYuruChara('アイウエオ', { isKatakanaSensitive: true })).toBe('アイウエオ');
|
|
16
16
|
});
|
|
17
17
|
test('半角カタカナ', () => {
|
|
18
|
-
expect(getYuruChara('アイウエオ')).toBe('
|
|
19
|
-
expect(getYuruChara('アイウエオ', { isZenkakuEisujiSensitive: true })).toBe('
|
|
20
|
-
expect(getYuruChara('アイウエオ', { isCaseSensitive: true })).toBe('
|
|
18
|
+
expect(getYuruChara('アイウエオ')).toBe('aiueo');
|
|
19
|
+
expect(getYuruChara('アイウエオ', { isZenkakuEisujiSensitive: true })).toBe('aiueo');
|
|
20
|
+
expect(getYuruChara('アイウエオ', { isCaseSensitive: true })).toBe('AIUEO');
|
|
21
21
|
expect(getYuruChara('アイウエオ', { isHankakuKatakanaSensitive: true })).toBe('アイウエオ');
|
|
22
22
|
expect(getYuruChara('アイウエオ', { isKatakanaSensitive: true })).toBe('アイウエオ');
|
|
23
23
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@konomi-app/kintone-utilities",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.13.0",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": "https://github.com/local-bias/kintone-utilities.git",
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@emotion/css": "^11",
|
|
16
|
+
"jaconv": "^1.0.4",
|
|
16
17
|
"zod": "^3"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|