大文字化修飾子 (^3)
^3 修飾子は次の文字を大文字にします。NoShift.js は Shift キーを使わずにコードを書くための言語なので、大文字はこの方法で生成します。
基本的な使い方
大文字にしたい文字の直前に ^3 を置きます。^3 の直後の1文字だけが大文字になります:
const name ^- ^2^3hello^2;
// ^3h → H,残りはそのまま コンパイル後:
const name = "Hello"; 複数の大文字化
複数の文字を大文字化する場合(camelCase や PascalCase の識別子など)、各文字の前に ^3 を繰り返します:
const my^3var ^- ^2^3hello ^3world^2;
console.log^8my^3var^9; コンパイル後:
const myVar = "Hello World";
console.log(myVar); クラス名
JavaScript のクラス名は慣習的に PascalCase です。大文字にする各文字の前に ^3 を使います:
class ^3animal ^[
constructor^8name^9 ^[
this.name ^- name;
^]
^]
class ^3my^3app extends ^3animal ^[
constructor^8^9 ^[
super^8^2^3app^2^9;
^]
^] コンパイル後:
class Animal {
constructor(name) {
this.name = name;
}
}
class MyApp extends Animal {
constructor() {
super("App");
}
} メソッドとプロパティ
camelCase のメソッド名は、大文字の境界ごとに ^3 を使います:
const obj ^- ^[
get^3name^8^9 ^[
return this.name;
^],
set^3value^8v^9 ^[
this.value ^- v;
^],
^]; コンパイル後:
const obj = {
getName() {
return this.name;
},
setValue(v) {
this.value = v;
},
}; 定数 (UPPER_SNAKE_CASE)
全て大文字の定数は、すべての文字を ^3 で大文字化します:
const ^3m^3a^3x^3c^3o^3u^3n^3t ^- 1024;
console.log^8^3m^3a^3x^3c^3o^3u^3n^3t^9; コンパイル後:
const MAXCOUNT = 1024;
console.log(MAXCOUNT); 文字列内での使用
デフォルトでは、^3 は文字列リテラル(^2...^2、^7...^7、^@...^@)内でも動作します。つまり、Shift キーなしで文字列中に大文字テキストを生成できます:
console.log^8^2^3hello, ^3world!^2^9;
console.log^8^7^3yes^7^9;
console.log^8^@^3template ^3string^@^9; コンパイル後:
console.log("Hello, World!");
console.log('Yes');
console.log(`Template String`); 文字列内での無効化
文字列内の ^3 をリテラルなキャレット + 文字として扱いたい場合は、nsjsconfig.json で capitalizeinstrings を false に設定します:
{
"compileroptions": {
"capitalizeinstrings": false
}
} この設定の場合、文字列内の ^3 はそのまま出力されます:
console.log^8^2^3hello^2^9; コンパイル後:
console.log("^3hello"); 文字列内の大文字警告
warnuppercase と capitalizeinstrings が両方 true(デフォルト)の場合、コンパイラは文字列リテラル内の大文字も警告します。^3 が文字列内で使えるため、大文字を直接書くことは推奨されません:
console.log^8^2Hello World^2^9; コンパイル時の警告例:
⚠ src/main.nsjs:1:18 - Uppercase letter 'H' found in string. Use ^3h instead.
⚠ src/main.nsjs:1:24 - Uppercase letter 'W' found in string. Use ^3w instead. ^3 を使って書き直すと:
console.log^8^2^3hello ^3world^2^9; コメント内
^3 はコメント内では動作しません。コメントはそのまま出力されます:
// ^3this is a comment, ^3 does not capitalize
/^: ^3block comment, also literal ^:/ コンパイル後:
// ^3this is a comment, ^3 does not capitalize
/* ^3block comment, also literal */ 関連する設定
nsjsconfig.json の2つの設定オプションが ^3 の動作に影響します:
| Option | Default | Description |
|---|---|---|
warnuppercase | true | true(デフォルト)の場合、^3 を使わずにソースコードに直接大文字を書くとコンパイラが警告します。 |
capitalizeinstrings | true | true(デフォルト)の場合、^3 は文字列リテラル内でも動作します。false に設定すると無効になります。 |