nadesiko3 3.6.27 → 3.6.28

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/README.md CHANGED
@@ -138,12 +138,13 @@ Google Colabでなでしこのビルドテストできます。
138
138
  ## なでしこの開発履歴
139
139
 
140
140
  「なでしこ3」の開発は2017年に始まり、以後コツコツとバージョンアップを続けています。
141
- 「誰でも簡単プログラマー」の目標を実現するために、これからも頑張ります。
141
+ 「誰でも簡単プログラマー」の目標を実現するために開発を続けます。
142
142
 
143
- - (2024/07/22) v.3.6.11でcoreに分割した開発用リポジトリを再び本家に統合
144
- - (2024/07/04) v3.6.8で、バンドルツールを`webpack`から`esbuild`に変更(#1690)
143
+ - (2024-07-22) v.3.6.11でcoreに分割した開発用リポジトリを再び本家に統合
144
+ - (2024-07-04) v3.6.8で、バンドルツールを`webpack`から`esbuild`に変更(#1690)
145
+ - (2024-05-02) v3.6.2で、プラグイン用APIを一新、なでしこの変数管理をObjectからMapに変更(#1638)
145
146
  - (2022-05-19) v3.3.18でJavaScriptからTypeScriptへ変更。言語コアを別リポジトリcoreに移動
146
- - (2022-04-20) v3.3.2を公開(モジュール構造をCommonJSESModuleへ変更/asyncFnの実装)
147
+ - (2022-04-20) v3.3.2を公開(モジュール構造をCommonJSからESModuleへ変更/非同期関数asyncFnの実装)
147
148
  - (2021-04-09) v3.2.1を公開
148
149
  - (2020-04-24) v3.1.2を公開
149
150
  - (2017-12-29) v3.0.19を公開(無名関数の「には」構文の実装など)
package/batch/command.txt CHANGED
@@ -830,6 +830,71 @@
830
830
 
831
831
 
832
832
  ■plugin_electron_node(拡張プラグイン,enako)
833
+ ●システム定数
834
+ | 定数 | Eアプリ | | app | Eあぷり | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L196
835
+ | 定数 | IPCメイン | | ipcMain | IPCめいん | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L197
836
+ ●Electronアプリ
837
+ | 関数 | アプリID設定 | APPIDに/APPIDを | アプリIDを設定する | あぷりIDせってい | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L203
838
+ | 関数 | QUIT | | Electronのアプリを終了する | QUIT | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L212
839
+ | 関数 | 終了 | | Electronのアプリを終了する | しゅうりょう | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L221
840
+ | 関数 | 強制終了 | CODEで | Electronのアプリを強制終了する | きょうせいしゅうりょう | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L230
841
+ | 関数 | 再起動予約 | POPTSで | アプリが終了した際に自動的に起動する | さいきどうよやく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L239
842
+ | 関数 | Eアプリ準備完了 | | アプリの準備が完了していれば真を返す | Eあぷりじゅんびかんりょう | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L251
843
+ | 関数 | Eアプリ準備完了時 | CALLBACKで | アプリの準備が完了した際に呼び去られる処理を登録する | Eあぷりじゅんびかんりょうしたとき | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L259
844
+ | 関数 | Eアプリフォーカス獲得 | | アプリがフォーカスの獲得を試みる | Eあぷりふぉーかすかくとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L270
845
+ | 関数 | Eアプリバージョン取得 | | package.jsonで設定しているアプリのバージョンを返す | Eあぷりばーじょんしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L279
846
+ | 関数 | Eアプリ名取得 | | package.jsonで設定しているアプリの名前(name,productName)を返す | Eあぷりめいしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L287
847
+ ●ElectronのBrowserWindow
848
+ | 関数 | ブラウザウインドウ作成 | POPTSで/POPTSから | オプションに従いブラウザウインドウを作成して返す | ぶらうざういんどうさくせい | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L296
849
+ | 関数 | ブラウザ読込 | WINにPURLから/WINへPURLを | ウインドウに指定のURLから読み込みを行う | ぶらうざよみこみ | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L325
850
+ | 関数 | 全ウインドウ数取得 | | アプリに存在する全てのWindowの数を返す | ぜんういんどうすうしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L340
851
+ | 関数 | フォーカスウインドウ取得 | | フォーカスを獲得しているWindowを返す | ふぉーかすういんどうしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L348
852
+ | 関数 | ウインドウ再読込 | WINを | 指定したウインドウの再読み込みを行う | ういんどうさいよみこみ | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L356
853
+ | 関数 | ウインドウ表示 | WINを/WINの | 指定したウインドウを表示状態にする | ういんどうひょうじ | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L365
854
+ | 関数 | 開発ツールトグル | WINを/WINの | 指定したウインドウの開発者ツールの表示状態をトグルする | かいはつつーるとぐる | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L374
855
+ | 関数 | メニュー設定 | WINにMENUを | menuをウインドウのメニューに設定する | めにゅーせってい | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L383
856
+ ●Electronのメニュー
857
+ | 関数 | アプリメニュー設定 | MENUを | menuをアプリのメインメニューに設定する | あぷりめにゅーせってい | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L393
858
+ | 関数 | アプリメニュー取得 | | アプリのメインメニューに取得して返す | あぷりめにゅーしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L411
859
+ | 関数 | メニュー一括作成 | TEMPLATEから | メニューをテンプレートから一括作成し作成したメニューを返す | めにゅーいっかつさくせい | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L427
860
+ | 関数 | メニューポップアップ開 | MENUをPOPTSで | メニューをポップアップメニューとして開く | めにゅーぽっぷあっぷひらく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L450
861
+ | 関数 | メニューポップアップ閉 | MENUをWINの | ポップアップメニューとして開かれたこのメニューを閉じる | めにゅーぽっぷあっぷとじる | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L462
862
+ | 関数 | メニューアイテム追加 | MENUにITEMを | メニューにメニュー項目を追加する | めにゅーあいてむついか | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L472
863
+ | 関数 | メニュー項目追加 | MENUにITEMを | メニューにメニュー項目を追加する | めにゅーこうもくついか | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L481
864
+ | 関数 | メニューアイテム挿入 | MENUのPOSにITEMを | メニューの指定位置にメニュー項目を挿入する | めにゅーあいてむそうにゅう | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L490
865
+ | 関数 | メニュー項目挿入 | MENUのPOSにITEMを | メニューの指定位置にメニュー項目を挿入する | めにゅーこうもくそうにゅう | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L499
866
+ | 関数 | メニューアイテム取得 | MENUからIDを/IDの | メニューから指定したIDを持つメニューアイテムを返す | めにゅーあいてむしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L508
867
+ | 関数 | メニューIDクリック時 | CALLBACKでMENUのIDを | メニューから指定したIDを持つ項目をクリックした時の処理を登録する | めにゅーIDくりっくしたとき | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L516
868
+ | 関数 | メニュー項目作成 | POPTSから/POPTSの | メニュー項目を作成して返す | めにゅーこうもくさくせい | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L526
869
+ ●Electronのイベント処理
870
+ | 関数 | 発生時 | CALLBACKでOBJのTYPE | 対象にて指定のイベントが発生した時の処理を登録する | はっせいしたとき | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L550
871
+ | 関数 | 単発発生時 | CALLBACKでOBJのTYPE | 対象にて指定のイベントが発生した時の処理を登録する。イベント発生時に自動削除される | たんぱつはっせいしたとき | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L563
872
+ | 関数 | 呼出時 | CALLBACKでOBJのTYPE | 対象にて指定のInvoke呼び出しを受けた時の処理を登録する(evt, ...args) | よびだされたとき | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L572
873
+ | 関数 | 呼出 | OBJのTYPEARGSで/TYPEを | 対象のInvokeを呼び出す | よびだす | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L581
874
+ ●Electronのshell
875
+ ●Electronのdialog
876
+ | 関数 | ファイル選択 | WINにPOPTSで | ファイルを選択するダイアログを表示して結果を返す(非同期関数) | ふぁいるせんたく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L601
877
+ | 関数 | フォルダ選択 | WINにPOPTSで | フォルダを選択するダイアログを表示して結果を返す(非同期関数) | ふぉるだせんたく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L612
878
+ | 関数 | 保存ファイル選択 | WINにOPTSで | ファイルを保存するためのダイアログを表示して結果を返す(非同期関数) | ほぞんふぁいるせんたく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L623
879
+ ●Electronのscreen
880
+ | 関数 | カーソル絶対位置取得 | | マウスポインタの絶対位置をDIPポイント単位で返す | かーそるぜったいいちしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L632
881
+ | 関数 | 主モニター取得 | | 主画面に指定されているモニターのDisplayを返す | しゅもにたーしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L640
882
+ | 関数 | 全モニター取得 | | 全てのモニターをDisplayの配列で返す | ぜんもにたーしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L648
883
+ | 関数 | 付近モニター取得 | Pの/Pから | 指定した点に最も近いモニターのDisplayを返す | ふきんもにたーしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L656
884
+ | 関数 | 該当モニター取得 | Rの/Rから | 指定した矩形に最も近いモニターのDisplayを返す | がいとうもにたーしゅとく | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L665
885
+ | 関数 | PX2DIP点変換 | Pの/Pから | Pointを物理的な単位からDIP単位に変換して返す | PX2DIPてんへんかん | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L674
886
+ | 関数 | DIP2PX点変換 | Pの/Pから | PointをDIP単位から物理的な単位に変換して返す | DIP2PXてんへんかん | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L683
887
+ | 関数 | PX2DIP矩形変換 | RのWINで/Rから | Rectangleを物理的な単位からDIP単位に変換して返す。DPIは指定したウインドウと相対的に計算する | PX2DIPくけいへんかん | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L692
888
+ | 関数 | DIP2PXP矩形変換 | RのWINで/Rから | RectangleをDIP単位から物理的な単位に変換して返す。DPIは指定したウインドウと相対的に計算する | DIP2PXくけいへんかん | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L701
889
+ ●Electronのユーザ用IPC通信
890
+ | 関数 | データ受信時 | CALLBACKで | レンダラからのデータ送信を受けた時の処理を登録する(evt, key, msg) | でーたじゅしんしたとき | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L711
891
+ | 関数 | データ呼出時 | CALLBACKで/CALLBACKの | レンダラからの呼び出しを受けた時の処理を登録する(evt, key, msg) | でーたよびだされたとき | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L720
892
+ | 関数 | データ送信 | OBJにKEYでDATAを | レンダラにデータを送信する(webContent, key, data) | でーたそうしん | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L729
893
+ | 関数 | データ呼出 | OBJにKEYでDATAを | レンダラにデータを呼び出す(webContent, key, data) | でーたよびだし | https://github.com/kujirahand/nadesiko3electron/blob/master/src/plugin_electron_node.mjs#L738
894
+ ●ElectronのNode側の標準機能セット
895
+
896
+
897
+ ■nadesiko3-toml(拡張プラグイン,wnako,cnako)
833
898
  ●PHP定数
834
899
  ●PHPシステム
835
900
  ●PDO
@@ -837,9 +902,3 @@
837
902
  ●KUDB
838
903
 
839
904
 
840
- ■nadesiko3-toml(拡張プラグイン,wnako,cnako)
841
- ●TOML
842
- | 関数 | TOMLデコード | Sを/Sの/Sから | TOML文字列をオブジェクトにデコードして返す | TOMLでこーど | https://github.com/kujirahand/nadesiko3-toml/blob/master/src/nadesiko3-toml.js#L27
843
- | 関数 | TOMLエンコード | Sを/Sから/Sの | オブジェクトをTOML文字列にエンコードする | TOMLえんこーど | https://github.com/kujirahand/nadesiko3-toml/blob/master/src/nadesiko3-toml.js#L35
844
-
845
-
package/core/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3core",
3
- "version": "3.6.27",
3
+ "version": "3.6.28",
4
4
  "description": "Japanese Programming Language Nadesiko v3 core",
5
5
  "main": "index.mjs",
6
6
  "type": "module",
@@ -1794,11 +1794,7 @@ export class NakoGen {
1794
1794
  let code = '/*[convLetProp]*/';
1795
1795
  // 変数が存在しないとき
1796
1796
  if (res === null) {
1797
- throw NakoSyntaxError.fromNode('変数が見当たりません。', node);
1798
- }
1799
- // ネームスペースを削除
1800
- if (prop.indexOf('__') >= 0) {
1801
- prop = prop.split('__')[1];
1797
+ throw NakoSyntaxError.fromNode(`変数『${name}』が見当たりません。`, node);
1802
1798
  }
1803
1799
  // プロパティへの代入式を作る
1804
1800
  const propVar = `${res.js}['${prop}']`;
@@ -1856,11 +1856,7 @@ export class NakoGen {
1856
1856
  let code = '/*[convLetProp]*/'
1857
1857
  // 変数が存在しないとき
1858
1858
  if (res === null) {
1859
- throw NakoSyntaxError.fromNode('変数が見当たりません。', node)
1860
- }
1861
- // ネームスペースを削除
1862
- if (prop.indexOf('__') >= 0) {
1863
- prop = prop.split('__')[1]
1859
+ throw NakoSyntaxError.fromNode(`変数『${name}』が見当たりません。`, node)
1864
1860
  }
1865
1861
  // プロパティへの代入式を作る
1866
1862
  const propVar = `${res.js}['${prop}']`
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * 助詞の一覧
3
3
  */
4
+ // 基本的な助詞の一覧
4
5
  export const josiList = [
5
6
  'について', 'くらい', 'なのか', 'までを', 'までの', 'による',
6
7
  'とは', 'から', 'まで', 'だけ', 'より', 'ほど', 'など',
@@ -2,6 +2,7 @@
2
2
  * 助詞の一覧
3
3
  */
4
4
 
5
+ // 基本的な助詞の一覧
5
6
  export const josiList: string[] = [
6
7
  'について', 'くらい', 'なのか', 'までを', 'までの', 'による',
7
8
  'とは', 'から', 'まで', 'だけ', 'より', 'ほど', 'など',
@@ -1789,38 +1789,24 @@ export class NakoParser extends NakoParserBase {
1789
1789
  throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}への代入文で計算式に以下の書き間違いがあります。\n${err.message}`, map);
1790
1790
  }
1791
1791
  }
1792
- // プロパティ代入文
1793
- if (this.check2(['word', '$', 'word', 'eq'])) {
1792
+ // プロパティ代入文 (#1793)
1793
+ if (this.check2(['word', '$', 'word', 'eq']) || this.check2(['word', '$', 'string', 'eq'])) {
1794
1794
  const word = this.peek();
1795
- let threw = false;
1796
- try {
1797
- if (this.accept(['word', '$', 'word', 'eq', this.yCalc])) {
1798
- const nameToken = this.getVarName(this.y[0]);
1799
- const propToken = this.getVarName(this.y[2]);
1800
- const valueToken = this.y[4];
1801
- return {
1802
- type: 'let_prop',
1803
- name: nameToken.value,
1804
- index: [propToken],
1805
- blocks: [valueToken],
1806
- josi: '',
1807
- ...map,
1808
- end: this.peekSourceMap()
1809
- };
1810
- }
1811
- else {
1812
- threw = true;
1813
- this.logger.debug(`${this.nodeToStr(word, { depth: 1 }, true)}への代入文で計算式に書き間違いがあります。`, word);
1814
- throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}への代入文で計算式に書き間違いがあります。`, map);
1815
- }
1816
- }
1817
- catch (err) {
1818
- if (threw) {
1819
- throw err;
1820
- }
1821
- this.logger.debug(`${this.nodeToStr(word, { depth: 1 }, true)}への代入文で計算式に以下の書き間違いがあります。\n${err.message}`, word);
1822
- throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}への代入文で計算式に以下の書き間違いがあります。\n${err.message}`, map);
1795
+ if (this.accept(['word', '$', 'word', 'eq', this.yCalc]) || this.accept(['word', '$', 'string', 'eq', this.yCalc])) {
1796
+ const nameToken = this.getVarName(this.y[0]);
1797
+ const propToken = this.y[2];
1798
+ const valueToken = this.y[4];
1799
+ return {
1800
+ type: 'let_prop',
1801
+ name: nameToken.value,
1802
+ index: [propToken],
1803
+ blocks: [valueToken],
1804
+ josi: '',
1805
+ ...map,
1806
+ end: this.peekSourceMap()
1807
+ };
1823
1808
  }
1809
+ throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}への代入文の計算式に書き間違いがあります。`, map);
1824
1810
  }
1825
1811
  // let_array ?
1826
1812
  if (this.check2(['word', '@'])) {
@@ -2615,7 +2601,7 @@ export class NakoParser extends NakoParserBase {
2615
2601
  return ast;
2616
2602
  }
2617
2603
  // word$prop
2618
- if (word.josi === '' && this.check2(['$', 'word'])) {
2604
+ if (word.josi === '' && (this.check2(['$', 'word']) || this.check2(['$', 'string']))) {
2619
2605
  this.get(); // skip '$'
2620
2606
  const prop = this.get();
2621
2607
  return {
@@ -1556,36 +1556,24 @@ export class NakoParser extends NakoParserBase {
1556
1556
  throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}への代入文で計算式に以下の書き間違いがあります。\n${err.message}`, map)
1557
1557
  }
1558
1558
  }
1559
- // プロパティ代入文
1560
- if (this.check2(['word', '$', 'word', 'eq'])) {
1559
+ // プロパティ代入文 (#1793)
1560
+ if (this.check2(['word', '$', 'word', 'eq']) || this.check2(['word', '$', 'string', 'eq'])) {
1561
1561
  const word = this.peek()
1562
- let threw = false
1563
- try {
1564
- if (this.accept(['word', '$', 'word', 'eq', this.yCalc])) {
1565
- const nameToken = this.getVarName(this.y[0])
1566
- const propToken = this.getVarName(this.y[2])
1567
- const valueToken = this.y[4]
1568
- return {
1569
- type: 'let_prop',
1570
- name: (nameToken as AstStrValue).value,
1571
- index: [propToken],
1572
- blocks: [valueToken],
1573
- josi: '',
1574
- ...map,
1575
- end: this.peekSourceMap()
1576
- } as AstLet
1577
- } else {
1578
- threw = true
1579
- this.logger.debug(`${this.nodeToStr(word, { depth: 1 }, true)}への代入文で計算式に書き間違いがあります。`, word)
1580
- throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}への代入文で計算式に書き間違いがあります。`, map)
1581
- }
1582
- } catch (err: any) {
1583
- if (threw) {
1584
- throw err
1585
- }
1586
- this.logger.debug(`${this.nodeToStr(word, { depth: 1 }, true)}への代入文で計算式に以下の書き間違いがあります。\n${err.message}`, word)
1587
- throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}への代入文で計算式に以下の書き間違いがあります。\n${err.message}`, map)
1562
+ if (this.accept(['word', '$', 'word', 'eq', this.yCalc]) || this.accept(['word', '$', 'string', 'eq', this.yCalc])) {
1563
+ const nameToken = this.getVarName(this.y[0])
1564
+ const propToken = this.y[2]
1565
+ const valueToken = this.y[4]
1566
+ return {
1567
+ type: 'let_prop',
1568
+ name: (nameToken as AstStrValue).value,
1569
+ index: [propToken],
1570
+ blocks: [valueToken],
1571
+ josi: '',
1572
+ ...map,
1573
+ end: this.peekSourceMap()
1574
+ } as AstLet
1588
1575
  }
1576
+ throw NakoSyntaxError.fromNode(`${this.nodeToStr(word, { depth: 1 }, false)}への代入文の計算式に書き間違いがあります。`, map)
1589
1577
  }
1590
1578
 
1591
1579
  // let_array ?
@@ -2324,7 +2312,7 @@ export class NakoParser extends NakoParserBase {
2324
2312
  }
2325
2313
 
2326
2314
  // word$prop
2327
- if (word.josi === '' && this.check2(['$', 'word'])) {
2315
+ if (word.josi === '' && (this.check2(['$', 'word']) || this.check2(['$', 'string']))) {
2328
2316
  this.get() // skip '$'
2329
2317
  const prop = this.get() as Token
2330
2318
  return {
@@ -390,4 +390,8 @@ describe('basic', async () => {
390
390
  'A={"幅": 3, "__setProp": F_SET, "__getProp": F_GET};\n' +
391
391
  'A$幅=5; A$幅を表示', '50')
392
392
  })
393
+ it('オブジェクトを手軽に設定する-文字列 (#1793)', async () => {
394
+ await cmp('A={"幅":30};A$"幅"=50;A$"幅"を表示', '50')
395
+ await cmp('A={"高":30};A$"高"=50;A$"高"を表示', '50') // 送り仮名の省略
396
+ })
393
397
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3",
3
- "version": "3.6.27",
3
+ "version": "3.6.28",
4
4
  "description": "Japanese Programming Language",
5
5
  "type": "module",
6
6
  "main": "src/index.mjs",
@@ -140,7 +140,7 @@
140
140
  "style-loader": "^4.0.0",
141
141
  "stylelint": "^16.4.0",
142
142
  "testdouble": "^3.20.2",
143
- "typescript": "^5.5.3",
143
+ "typescript": "^5.6.3",
144
144
  "typescript-eslint": "^8.0.0",
145
145
  "url-loader": "^4.1.1",
146
146
  "util": "^0.12.5"
@@ -150,7 +150,7 @@
150
150
  "fs-extra": "^11.2.0",
151
151
  "html": "^1.0.0",
152
152
  "iconv-lite": "^0.6.3",
153
- "marked": "^14.0.0",
153
+ "marked": "^15.0.0",
154
154
  "node-fetch": "^3.3.2",
155
155
  "opener": "^1.5.2",
156
156
  "shell-quote": "^1.8.1"
package/release/_hash.txt CHANGED
@@ -1,8 +1,8 @@
1
1
  command.json.js:
2
- md5(hex): 6f19a6b553f92e4a5462eac563890c27
3
- sha256(hex): 54e38ccfb74d19e52f03b883f26a1807382173cf84205d8b482d9f298ac201db
4
- sha256(base64): VOOMz7dNGeUvA7iD8moYBzghc8+EIF2LSC2fKYrCAds=
5
- sha512(base64): rJ9Ms3FyvbYE6Nzu349h+OEPn56Ayw2JBT+gVB4CGg+wxRzGcmF+LjRDIcgLKGZv8+OtbXHpXPujLktT9+gxmw==
2
+ md5(hex): 0a70fd2779b7557628dd4f7f14bfab93
3
+ sha256(hex): 97bb0bf44cb6798aa19ff5f9defa135db46d80b37f726f1e57055de892a6af83
4
+ sha256(base64): l7sL9Ey2eYqhn/X53voTXbRtgLN/cm8eVwVd6JKmr4M=
5
+ sha512(base64): XNQUZwg/0pRQ1xnW5HlgFaeFOyw3xk41ocIbgPEEmuGOaSLSA3P3XLONN3S4Ac9dn5bQ0OquF64SnO5LSnhf3A==
6
6
  core_src_nako_josi_list_mjs.js:
7
7
  md5(hex): 2fc99e9b0127c3a50756d4ba4dcc2568
8
8
  sha256(hex): 09821bf4b80ff1c7445cccd154685d00ac2f53a65a3382f4e96e70ac6676330b
@@ -14,10 +14,10 @@ core_src_nako_reserved_words_mjs.js:
14
14
  sha256(base64): 5aJLQsB3GeRK5kfAq4b0Azk0ZCw+3Dv1gU0iOuelIZc=
15
15
  sha512(base64): UzZigh2tIhgBO3+Sp1wnqKMvAGfhqSRdH2+ffmRy4+8CVNEeepddaDV0oKJ+vyvi28zQLmXeMsjRu+Frj3YlTg==
16
16
  edit_main.js:
17
- md5(hex): af6dedd39fd7e37dd94e3f295e1445c9
18
- sha256(hex): 62d23abd71614add13d0217caf3ab268f149eeef212f6f5198f1d1435c106bc0
19
- sha256(base64): YtI6vXFhSt0T0CF8rzqyaPFJ7u8hL29RmPHRQ1wQa8A=
20
- sha512(base64): 6c5sHItNnqjo1f+yNr/cjXoxeiVNNzVWTFAQ+jM5/tlpbM8Y+YorWSx9Zl5hMbCgFKx+SKxI8pNGr6AncaEBYQ==
17
+ md5(hex): 1a8dd3e4874076fe26587df27f8eef87
18
+ sha256(hex): 7e327ac7a54a07560178c06c3e566ae7eb3c45d5719a73aca34972316345dfc5
19
+ sha256(base64): fjJ6x6VKB1YBeMBsPlZq5+s8RdVxmnOso0lyMWNF38U=
20
+ sha512(base64): ue6j2cRKLurntvIG0TN/CV7Lz2TSy4cPCo8xc/lnPotgmt1PM4H1Ur0vpM7lEW7XpsZm46tJUyignroiEDy4PQ==
21
21
  edit_main.js:
22
22
  md5(hex): 57ca3d9fbf56352e72858c7ce0b09483
23
23
  sha256(hex): 9ab24fc718a835070d72d23bafd8e90de25e86f755fba67fee6238347201a422
@@ -29,10 +29,10 @@ version_main.js:
29
29
  sha256(base64): BolWQdiyjXjgsV7rd9zbBaP5hJYi3ZWU6lucT5V8fkQ=
30
30
  sha512(base64): KMEb25tO1BMsNxzECPwLM6bi1IIS5wX+VRN6mdzbqhtqPr7eY1K7Wwg66MpCmhrc45KoEJthR4NWyw9O7ODgLw==
31
31
  editor.js:
32
- md5(hex): af6dedd39fd7e37dd94e3f295e1445c9
33
- sha256(hex): 62d23abd71614add13d0217caf3ab268f149eeef212f6f5198f1d1435c106bc0
34
- sha256(base64): YtI6vXFhSt0T0CF8rzqyaPFJ7u8hL29RmPHRQ1wQa8A=
35
- sha512(base64): 6c5sHItNnqjo1f+yNr/cjXoxeiVNNzVWTFAQ+jM5/tlpbM8Y+YorWSx9Zl5hMbCgFKx+SKxI8pNGr6AncaEBYQ==
32
+ md5(hex): 1a8dd3e4874076fe26587df27f8eef87
33
+ sha256(hex): 7e327ac7a54a07560178c06c3e566ae7eb3c45d5719a73aca34972316345dfc5
34
+ sha256(base64): fjJ6x6VKB1YBeMBsPlZq5+s8RdVxmnOso0lyMWNF38U=
35
+ sha512(base64): ue6j2cRKLurntvIG0TN/CV7Lz2TSy4cPCo8xc/lnPotgmt1PM4H1Ur0vpM7lEW7XpsZm46tJUyignroiEDy4PQ==
36
36
  nako_gen_async.js:
37
37
  md5(hex): 42d5fed01039474ff197d449c27c84ad
38
38
  sha256(hex): d78d516b32b551c4a51ceef529568760783c84f6c5d90029fa9b38922d5b4430
@@ -59,10 +59,10 @@ plugin_keigo.js:
59
59
  sha256(base64): 1IZs3kTk2nHl90N3Fyq1uFr8EpWmDAgfbXwkUl9APg0=
60
60
  sha512(base64): u067+CeBvMb6+oINFY9Wz77GBk4NSxS2+k35GJ3RsFFmphJliwzwmV2ceID0gZ4mbjJ0xJHQX9WIypiyI6yfdA==
61
61
  plugin_markup.js:
62
- md5(hex): 3b32191dd2d9fb0eb83f4fb93ba3417b
63
- sha256(hex): 8837d301cbe57651d4bcaee0aa37e68fabf8a17959db0b9b6871505b452ca7e3
64
- sha256(base64): iDfTAcvldlHUvK7gqjfmj6v4oXlZ2wubaHFQW0Usp+M=
65
- sha512(base64): mEcV3CYWM6+zmuxgojP/9wbQNtkTPuPzFHo1KTG2TPaDbSfdPZCazFcNmdjJ95o7+VFfxs2Id7yB02bqSeBxNg==
62
+ md5(hex): 35b71b3476bf6b3e7ec82b38df150c78
63
+ sha256(hex): cc5f27da583182386d64cb34df3e42d546aafa396cc35ea1fa6a76b43a4c4dad
64
+ sha256(base64): zF8n2lgxgjhtZMs03z5C1Uaq+jlsw16h+mp2tDpMTa0=
65
+ sha512(base64): kBdKRYd7XKFwXkLNDWm7v8qayyXl+f/BVzxe+S0VkZxwZfwOlo5Ds0CSkc9IED9THEMkQOGBv18AXLcigpr5Cw==
66
66
  plugin_three.js:
67
67
  md5(hex): 5fa1fba6c48576ba6046e9302b3bcf89
68
68
  sha256(hex): e2b2c54d9674837d51cc91d032e3aa9f2a1cc8fbc11b6be503649a1cccfe08cb
@@ -144,22 +144,22 @@ wnako3webworker.js:
144
144
  sha256(base64): zkHQ1vYOjoH4nffi+OulPeq/tql28XhdNuKpcaBCOKk=
145
145
  sha512(base64): cY0Mzrpoz/uEyY1n8MeJeWdDmm9vqI7dh28wEqJGtVRfYOJvDHiYDzzlfGndOWmzZmHUK6ZAE7YaUJ7zZxiZLw==
146
146
  version.js:
147
- md5(hex): d708b19fdec6ffa1962f4f1dedfb439d
148
- sha256(hex): 80642546f4dba459de18f9e60b210ffe9bee44bce615a2ff50cece5b27dada56
149
- sha256(base64): gGQlRvTbpFneGPnmCyEP/pvuRLzmFaL/UM7OWyfa2lY=
150
- sha512(base64): lFRH/BBFDXjIbZpt1VnQ9/8Ezkcv6C+DP2AE6DUf6eTQOJ+ygugwtfofhQnMsiJAXLrXkeJU2BKGxbzNREfmOA==
147
+ md5(hex): 829792071c675c496dfbd9a1b4789806
148
+ sha256(hex): ee04e83ef7c19f4a94f2bf53417e2e1131ab001dd767d984b1b0a0e7429b3fa9
149
+ sha256(base64): 7gToPvfBn0qU8r9TQX4uETGrAB3XZ9mEsbCg50KbP6k=
150
+ sha512(base64): u9FFKDXF26XCOVfT9Mh80T/aXrFQctrNIeRYxRqv6C0JIQ8lLm/Gd7PkvFmV2/WV224G9iBAJJr3t8+cdzNS5A==
151
151
  version_main.js:
152
- md5(hex): d708b19fdec6ffa1962f4f1dedfb439d
153
- sha256(hex): 80642546f4dba459de18f9e60b210ffe9bee44bce615a2ff50cece5b27dada56
154
- sha256(base64): gGQlRvTbpFneGPnmCyEP/pvuRLzmFaL/UM7OWyfa2lY=
155
- sha512(base64): lFRH/BBFDXjIbZpt1VnQ9/8Ezkcv6C+DP2AE6DUf6eTQOJ+ygugwtfofhQnMsiJAXLrXkeJU2BKGxbzNREfmOA==
152
+ md5(hex): 829792071c675c496dfbd9a1b4789806
153
+ sha256(hex): ee04e83ef7c19f4a94f2bf53417e2e1131ab001dd767d984b1b0a0e7429b3fa9
154
+ sha256(base64): 7gToPvfBn0qU8r9TQX4uETGrAB3XZ9mEsbCg50KbP6k=
155
+ sha512(base64): u9FFKDXF26XCOVfT9Mh80T/aXrFQctrNIeRYxRqv6C0JIQ8lLm/Gd7PkvFmV2/WV224G9iBAJJr3t8+cdzNS5A==
156
156
  wnako3.js:
157
- md5(hex): afd7e0beca390190fd467cda3298dba2
158
- sha256(hex): 6f1497fa19664a28272b60391dafd7c5ad79e8e5fd19ea9d4aae37ec4688b106
159
- sha256(base64): bxSX+hlmSignK2A5Ha/Xxa156OX9GeqdSq437EaIsQY=
160
- sha512(base64): oEMOJ/hy8fwcssdBb6ns2r7sKH7YydaFjno6KIZik1oluaQWR6d8x4ES7N4OeUkPnjYTqgIocTzaSUDlp3lr2Q==
157
+ md5(hex): 50f7a896ca27b00945f556861dd61dd1
158
+ sha256(hex): 28ba1d75eb5e5678a55444d581d0dfa489c8c926f0cd56f8d85dbf8771889fe1
159
+ sha256(base64): KLoddeteVnilVETVgdDfpInIySbwzVb42F2/h3GIn+E=
160
+ sha512(base64): V2TnS8xRh7eqbHoLzi6mP3MYwY48y7AUd2Ka+sv89BuWkr1nk1LF4vCEnQhYcQ32qclQlfRSAyYrmB0a9Nvz7g==
161
161
  wnako3webworker.js:
162
- md5(hex): 99abf084a2620d7414ec52133446e91f
163
- sha256(hex): 9d4d81ab046f64e39bf7ca1fa9ac359241b60ed382e92be7dcf0ed78d20af2ca
164
- sha256(base64): nU2BqwRvZOOb98ofqaw1kkG2DtOC6Svn3PDteNIK8so=
165
- sha512(base64): q5MQ15v2liUAGJBLcVSZWHVJF2ML5yDX3quIih0BaXk2TaqrFXx1l7HUoyBw3pBWkEhT+9sMnXc78wV/GJ4dEA==
162
+ md5(hex): ba03e9c7ff7c56d0535bb5627466937e
163
+ sha256(hex): fda46285e6457006b547147032863266a53fa74fed4c1495cda9bdbfbc898f30
164
+ sha256(base64): /aRiheZFcAa1RxRwMoYyZqU/p0/tTBSVzam9v7yJjzA=
165
+ sha512(base64): Hrhj1ySMaif/dpSxgw81MFETy5CiTsPQDgVUodAKWAdulumewUTBcP1yvkHzVwAho9fWWEqHrv1M0YY7IWpc2Q==
@@ -1,33 +1,33 @@
1
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/command.json.js" integrity="sha512-rJ9Ms3FyvbYE6Nzu349h+OEPn56Ayw2JBT+gVB4CGg+wxRzGcmF+LjRDIcgLKGZv8+OtbXHpXPujLktT9+gxmw==" crossorigin="anonymous"></script>
2
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/core_src_nako_josi_list_mjs.js" integrity="sha512-0+LAeEfPy2Lrl+DeJMjbBIUda9Y5ttpLGy3/FW8rjSW8bN3udrALJa5V/bhjxU7mYouumV/QGN2wt3oxMCKy9g==" crossorigin="anonymous"></script>
3
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/core_src_nako_reserved_words_mjs.js" integrity="sha512-UzZigh2tIhgBO3+Sp1wnqKMvAGfhqSRdH2+ffmRy4+8CVNEeepddaDV0oKJ+vyvi28zQLmXeMsjRu+Frj3YlTg==" crossorigin="anonymous"></script>
4
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/edit_main.js" integrity="sha512-6c5sHItNnqjo1f+yNr/cjXoxeiVNNzVWTFAQ+jM5/tlpbM8Y+YorWSx9Zl5hMbCgFKx+SKxI8pNGr6AncaEBYQ==" crossorigin="anonymous"></script>
5
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/edit_main.js" integrity="sha512-VluJJhYbxG+I5sofn1bKqOuIqMXdCyUUM9dnSBEVAkUXUy/ENHfG6hQFTZULcHy9iNfqPHXTfWuCgyMzQ9Hxrg==" crossorigin="anonymous"></script>
6
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/version_main.js" integrity="sha512-KMEb25tO1BMsNxzECPwLM6bi1IIS5wX+VRN6mdzbqhtqPr7eY1K7Wwg66MpCmhrc45KoEJthR4NWyw9O7ODgLw==" crossorigin="anonymous"></script>
7
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/editor.js" integrity="sha512-6c5sHItNnqjo1f+yNr/cjXoxeiVNNzVWTFAQ+jM5/tlpbM8Y+YorWSx9Zl5hMbCgFKx+SKxI8pNGr6AncaEBYQ==" crossorigin="anonymous"></script>
8
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/nako_gen_async.js" integrity="sha512-/73lycspxJ921s+NmqaOKF58X9rCsgEZrZT4O4sW1aCe5CSXtQevIasAoGgIoL3a5RmlaghbaIVASwAgmoE3+g==" crossorigin="anonymous"></script>
9
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_caniuse.js" integrity="sha512-V6nOBHnhxPChu+S/LfB7elCeBk985ukLmBmkCyPk4ai5VfoJZuOIttg72PbZSxWfP5eQTrlLNajsorfwNw/vcA==" crossorigin="anonymous"></script>
10
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_datetime.js" integrity="sha512-ofb5jVaHjjTRoCAmHnbewc2fS8vr1oEkX/B3WoOCjYpDnZ3nnl3EDz6fdAS8CFFzGvuekCk2RFN5BuM9kX6FAg==" crossorigin="anonymous"></script>
11
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_kansuji.js" integrity="sha512-N+S8Th1yCiQy3q5jh0TFvlTOtrWNE82a4UJZ9O3ml3BGBYA141bpWlJR5c34dObTe1prbLJZ7v5WvV0vnDnr9A==" crossorigin="anonymous"></script>
12
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_keigo.js" integrity="sha512-u067+CeBvMb6+oINFY9Wz77GBk4NSxS2+k35GJ3RsFFmphJliwzwmV2ceID0gZ4mbjJ0xJHQX9WIypiyI6yfdA==" crossorigin="anonymous"></script>
13
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_markup.js" integrity="sha512-mEcV3CYWM6+zmuxgojP/9wbQNtkTPuPzFHo1KTG2TPaDbSfdPZCazFcNmdjJ95o7+VFfxs2Id7yB02bqSeBxNg==" crossorigin="anonymous"></script>
14
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_three.js" integrity="sha512-4loRkhlxZ9A9v5t3sk5VECW7T33axIVbBQgwkNdgcjk03yRqAvxut5OS4n3BBS4jnWWHOE3i0vj9qxOOp4uV3Q==" crossorigin="anonymous"></script>
15
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_toml.js" integrity="sha512-Z4JmOCY66VuyoD8m4dCzKttEbCTEUfqyuqlmcOhs69m/88skKcPYWXi+4W+Td5LdI3xqezn4BkN32F9ZkPzUpQ==" crossorigin="anonymous"></script>
16
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_turtle.js" integrity="sha512-LEewcTTM8JrZxmsVnP1ONF916UDoC1tQaYlqYNhuUnB4t1jfchtZic24rFNtNIaO6AcFsjxukV9Uj3WMefoU3Q==" crossorigin="anonymous"></script>
17
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_webworker.js" integrity="sha512-6UHX2dgMPRY4BuIxLXaERKaA8Wg5eK2pWy+OysU0/+gt2E15M7K5Vr8+4CQt6hylWnmzmJQJfgObIr+yjW5kPw==" crossorigin="anonymous"></script>
18
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_weykturtle3d.js" integrity="sha512-ONFdombPCdgdnXs7VMUAHpe8IBvTuLzSgzmERf1jEhHo4l06wDpkpRRCk3/9a1hiXRHQ+le2LZBT7XH4VA27sQ==" crossorigin="anonymous"></script>
19
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_caniuse.js" integrity="sha512-V6nOBHnhxPChu+S/LfB7elCeBk985ukLmBmkCyPk4ai5VfoJZuOIttg72PbZSxWfP5eQTrlLNajsorfwNw/vcA==" crossorigin="anonymous"></script>
20
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_datetime.js" integrity="sha512-ofb5jVaHjjTRoCAmHnbewc2fS8vr1oEkX/B3WoOCjYpDnZ3nnl3EDz6fdAS8CFFzGvuekCk2RFN5BuM9kX6FAg==" crossorigin="anonymous"></script>
21
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_kansuji.js" integrity="sha512-N+S8Th1yCiQy3q5jh0TFvlTOtrWNE82a4UJZ9O3ml3BGBYA141bpWlJR5c34dObTe1prbLJZ7v5WvV0vnDnr9A==" crossorigin="anonymous"></script>
22
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_keigo.js" integrity="sha512-u067+CeBvMb6+oINFY9Wz77GBk4NSxS2+k35GJ3RsFFmphJliwzwmV2ceID0gZ4mbjJ0xJHQX9WIypiyI6yfdA==" crossorigin="anonymous"></script>
23
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_markup.js" integrity="sha512-mEcV3CYWM6+zmuxgojP/9wbQNtkTPuPzFHo1KTG2TPaDbSfdPZCazFcNmdjJ95o7+VFfxs2Id7yB02bqSeBxNg==" crossorigin="anonymous"></script>
24
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_three.js" integrity="sha512-4loRkhlxZ9A9v5t3sk5VECW7T33axIVbBQgwkNdgcjk03yRqAvxut5OS4n3BBS4jnWWHOE3i0vj9qxOOp4uV3Q==" crossorigin="anonymous"></script>
25
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_turtle.js" integrity="sha512-ce8etr+HoC+UjUyXSgxJzy3+pOYhsBdt9jDzhks2H/eEPQ1gIz7M8hoeyP0223zLLZHBBzlHiL/a6mmJdoKQ+w==" crossorigin="anonymous"></script>
26
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_webworker.js" integrity="sha512-6UHX2dgMPRY4BuIxLXaERKaA8Wg5eK2pWy+OysU0/+gt2E15M7K5Vr8+4CQt6hylWnmzmJQJfgObIr+yjW5kPw==" crossorigin="anonymous"></script>
27
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/plugin_weykturtle3d.js" integrity="sha512-ONFdombPCdgdnXs7VMUAHpe8IBvTuLzSgzmERf1jEhHo4l06wDpkpRRCk3/9a1hiXRHQ+le2LZBT7XH4VA27sQ==" crossorigin="anonymous"></script>
28
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/wnako3.js" integrity="sha512-ZBC5fnWXr1/lcjLwXqmTj1OXfBewmzxlPqnz6ZnDhtVUY9invxAimbYuxMrgb3ZiFnopNLH7xPbgWlFJNB/jmQ==" crossorigin="anonymous"></script>
29
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/wnako3webworker.js" integrity="sha512-cY0Mzrpoz/uEyY1n8MeJeWdDmm9vqI7dh28wEqJGtVRfYOJvDHiYDzzlfGndOWmzZmHUK6ZAE7YaUJ7zZxiZLw==" crossorigin="anonymous"></script>
30
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/version.js" integrity="sha512-lFRH/BBFDXjIbZpt1VnQ9/8Ezkcv6C+DP2AE6DUf6eTQOJ+ygugwtfofhQnMsiJAXLrXkeJU2BKGxbzNREfmOA==" crossorigin="anonymous"></script>
31
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/version_main.js" integrity="sha512-lFRH/BBFDXjIbZpt1VnQ9/8Ezkcv6C+DP2AE6DUf6eTQOJ+ygugwtfofhQnMsiJAXLrXkeJU2BKGxbzNREfmOA==" crossorigin="anonymous"></script>
32
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/wnako3.js" integrity="sha512-oEMOJ/hy8fwcssdBb6ns2r7sKH7YydaFjno6KIZik1oluaQWR6d8x4ES7N4OeUkPnjYTqgIocTzaSUDlp3lr2Q==" crossorigin="anonymous"></script>
33
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.27&f=release/wnako3webworker.js" integrity="sha512-q5MQ15v2liUAGJBLcVSZWHVJF2ML5yDX3quIih0BaXk2TaqrFXx1l7HUoyBw3pBWkEhT+9sMnXc78wV/GJ4dEA==" crossorigin="anonymous"></script>
1
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/command.json.js" integrity="sha512-XNQUZwg/0pRQ1xnW5HlgFaeFOyw3xk41ocIbgPEEmuGOaSLSA3P3XLONN3S4Ac9dn5bQ0OquF64SnO5LSnhf3A==" crossorigin="anonymous"></script>
2
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/core_src_nako_josi_list_mjs.js" integrity="sha512-0+LAeEfPy2Lrl+DeJMjbBIUda9Y5ttpLGy3/FW8rjSW8bN3udrALJa5V/bhjxU7mYouumV/QGN2wt3oxMCKy9g==" crossorigin="anonymous"></script>
3
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/core_src_nako_reserved_words_mjs.js" integrity="sha512-UzZigh2tIhgBO3+Sp1wnqKMvAGfhqSRdH2+ffmRy4+8CVNEeepddaDV0oKJ+vyvi28zQLmXeMsjRu+Frj3YlTg==" crossorigin="anonymous"></script>
4
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/edit_main.js" integrity="sha512-ue6j2cRKLurntvIG0TN/CV7Lz2TSy4cPCo8xc/lnPotgmt1PM4H1Ur0vpM7lEW7XpsZm46tJUyignroiEDy4PQ==" crossorigin="anonymous"></script>
5
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/edit_main.js" integrity="sha512-VluJJhYbxG+I5sofn1bKqOuIqMXdCyUUM9dnSBEVAkUXUy/ENHfG6hQFTZULcHy9iNfqPHXTfWuCgyMzQ9Hxrg==" crossorigin="anonymous"></script>
6
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/version_main.js" integrity="sha512-KMEb25tO1BMsNxzECPwLM6bi1IIS5wX+VRN6mdzbqhtqPr7eY1K7Wwg66MpCmhrc45KoEJthR4NWyw9O7ODgLw==" crossorigin="anonymous"></script>
7
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/editor.js" integrity="sha512-ue6j2cRKLurntvIG0TN/CV7Lz2TSy4cPCo8xc/lnPotgmt1PM4H1Ur0vpM7lEW7XpsZm46tJUyignroiEDy4PQ==" crossorigin="anonymous"></script>
8
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/nako_gen_async.js" integrity="sha512-/73lycspxJ921s+NmqaOKF58X9rCsgEZrZT4O4sW1aCe5CSXtQevIasAoGgIoL3a5RmlaghbaIVASwAgmoE3+g==" crossorigin="anonymous"></script>
9
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_caniuse.js" integrity="sha512-V6nOBHnhxPChu+S/LfB7elCeBk985ukLmBmkCyPk4ai5VfoJZuOIttg72PbZSxWfP5eQTrlLNajsorfwNw/vcA==" crossorigin="anonymous"></script>
10
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_datetime.js" integrity="sha512-ofb5jVaHjjTRoCAmHnbewc2fS8vr1oEkX/B3WoOCjYpDnZ3nnl3EDz6fdAS8CFFzGvuekCk2RFN5BuM9kX6FAg==" crossorigin="anonymous"></script>
11
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_kansuji.js" integrity="sha512-N+S8Th1yCiQy3q5jh0TFvlTOtrWNE82a4UJZ9O3ml3BGBYA141bpWlJR5c34dObTe1prbLJZ7v5WvV0vnDnr9A==" crossorigin="anonymous"></script>
12
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_keigo.js" integrity="sha512-u067+CeBvMb6+oINFY9Wz77GBk4NSxS2+k35GJ3RsFFmphJliwzwmV2ceID0gZ4mbjJ0xJHQX9WIypiyI6yfdA==" crossorigin="anonymous"></script>
13
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_markup.js" integrity="sha512-kBdKRYd7XKFwXkLNDWm7v8qayyXl+f/BVzxe+S0VkZxwZfwOlo5Ds0CSkc9IED9THEMkQOGBv18AXLcigpr5Cw==" crossorigin="anonymous"></script>
14
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_three.js" integrity="sha512-4loRkhlxZ9A9v5t3sk5VECW7T33axIVbBQgwkNdgcjk03yRqAvxut5OS4n3BBS4jnWWHOE3i0vj9qxOOp4uV3Q==" crossorigin="anonymous"></script>
15
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_toml.js" integrity="sha512-Z4JmOCY66VuyoD8m4dCzKttEbCTEUfqyuqlmcOhs69m/88skKcPYWXi+4W+Td5LdI3xqezn4BkN32F9ZkPzUpQ==" crossorigin="anonymous"></script>
16
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_turtle.js" integrity="sha512-LEewcTTM8JrZxmsVnP1ONF916UDoC1tQaYlqYNhuUnB4t1jfchtZic24rFNtNIaO6AcFsjxukV9Uj3WMefoU3Q==" crossorigin="anonymous"></script>
17
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_webworker.js" integrity="sha512-6UHX2dgMPRY4BuIxLXaERKaA8Wg5eK2pWy+OysU0/+gt2E15M7K5Vr8+4CQt6hylWnmzmJQJfgObIr+yjW5kPw==" crossorigin="anonymous"></script>
18
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_weykturtle3d.js" integrity="sha512-ONFdombPCdgdnXs7VMUAHpe8IBvTuLzSgzmERf1jEhHo4l06wDpkpRRCk3/9a1hiXRHQ+le2LZBT7XH4VA27sQ==" crossorigin="anonymous"></script>
19
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_caniuse.js" integrity="sha512-V6nOBHnhxPChu+S/LfB7elCeBk985ukLmBmkCyPk4ai5VfoJZuOIttg72PbZSxWfP5eQTrlLNajsorfwNw/vcA==" crossorigin="anonymous"></script>
20
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_datetime.js" integrity="sha512-ofb5jVaHjjTRoCAmHnbewc2fS8vr1oEkX/B3WoOCjYpDnZ3nnl3EDz6fdAS8CFFzGvuekCk2RFN5BuM9kX6FAg==" crossorigin="anonymous"></script>
21
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_kansuji.js" integrity="sha512-N+S8Th1yCiQy3q5jh0TFvlTOtrWNE82a4UJZ9O3ml3BGBYA141bpWlJR5c34dObTe1prbLJZ7v5WvV0vnDnr9A==" crossorigin="anonymous"></script>
22
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_keigo.js" integrity="sha512-u067+CeBvMb6+oINFY9Wz77GBk4NSxS2+k35GJ3RsFFmphJliwzwmV2ceID0gZ4mbjJ0xJHQX9WIypiyI6yfdA==" crossorigin="anonymous"></script>
23
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_markup.js" integrity="sha512-mEcV3CYWM6+zmuxgojP/9wbQNtkTPuPzFHo1KTG2TPaDbSfdPZCazFcNmdjJ95o7+VFfxs2Id7yB02bqSeBxNg==" crossorigin="anonymous"></script>
24
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_three.js" integrity="sha512-4loRkhlxZ9A9v5t3sk5VECW7T33axIVbBQgwkNdgcjk03yRqAvxut5OS4n3BBS4jnWWHOE3i0vj9qxOOp4uV3Q==" crossorigin="anonymous"></script>
25
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_turtle.js" integrity="sha512-ce8etr+HoC+UjUyXSgxJzy3+pOYhsBdt9jDzhks2H/eEPQ1gIz7M8hoeyP0223zLLZHBBzlHiL/a6mmJdoKQ+w==" crossorigin="anonymous"></script>
26
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_webworker.js" integrity="sha512-6UHX2dgMPRY4BuIxLXaERKaA8Wg5eK2pWy+OysU0/+gt2E15M7K5Vr8+4CQt6hylWnmzmJQJfgObIr+yjW5kPw==" crossorigin="anonymous"></script>
27
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/plugin_weykturtle3d.js" integrity="sha512-ONFdombPCdgdnXs7VMUAHpe8IBvTuLzSgzmERf1jEhHo4l06wDpkpRRCk3/9a1hiXRHQ+le2LZBT7XH4VA27sQ==" crossorigin="anonymous"></script>
28
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/wnako3.js" integrity="sha512-ZBC5fnWXr1/lcjLwXqmTj1OXfBewmzxlPqnz6ZnDhtVUY9invxAimbYuxMrgb3ZiFnopNLH7xPbgWlFJNB/jmQ==" crossorigin="anonymous"></script>
29
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/wnako3webworker.js" integrity="sha512-cY0Mzrpoz/uEyY1n8MeJeWdDmm9vqI7dh28wEqJGtVRfYOJvDHiYDzzlfGndOWmzZmHUK6ZAE7YaUJ7zZxiZLw==" crossorigin="anonymous"></script>
30
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/version.js" integrity="sha512-u9FFKDXF26XCOVfT9Mh80T/aXrFQctrNIeRYxRqv6C0JIQ8lLm/Gd7PkvFmV2/WV224G9iBAJJr3t8+cdzNS5A==" crossorigin="anonymous"></script>
31
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/version_main.js" integrity="sha512-u9FFKDXF26XCOVfT9Mh80T/aXrFQctrNIeRYxRqv6C0JIQ8lLm/Gd7PkvFmV2/WV224G9iBAJJr3t8+cdzNS5A==" crossorigin="anonymous"></script>
32
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/wnako3.js" integrity="sha512-V2TnS8xRh7eqbHoLzi6mP3MYwY48y7AUd2Ka+sv89BuWkr1nk1LF4vCEnQhYcQ32qclQlfRSAyYrmB0a9Nvz7g==" crossorigin="anonymous"></script>
33
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.6.28&f=release/wnako3webworker.js" integrity="sha512-Hrhj1ySMaif/dpSxgw81MFETy5CiTsPQDgVUodAKWAdulumewUTBcP1yvkHzVwAho9fWWEqHrv1M0YY7IWpc2Q==" crossorigin="anonymous"></script>