nadesiko3 3.3.16 → 3.3.17

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
@@ -107,13 +107,13 @@ npm run test:all
107
107
 
108
108
  「なでしこ3」の開発は2017年に始まり、以後コツコツとバージョンアップを続けています。「誰でも簡単プログラマー」の目標を実現するために、これからも頑張ります。
109
109
 
110
- - 2022-04-20 v3.3.2を公開(モジュール構造をCommonJS→ESModuleへ変更/asyncFnの実装)
111
- - 2021-04-09 v3.2.1を公開
112
- - 2020-04-24 v3.1.2を公開
113
- - 2017-12-29 v3.0.19を公開(無名関数の「には」構文の実装など)
114
- - 2017-06-25 内部構造を大幅に修正(PEGパーサーから独自のパーサーに変更)
115
- - 2017-02-13 なでしこ3のプロジェクトが開始
116
- - 2004-08-01 ひまわり2としてゼロからなでしこv1の開発が開始
110
+ - (2022-04-20) v3.3.2を公開(モジュール構造をCommonJS→ESModuleへ変更/asyncFnの実装)
111
+ - (2021-04-09) v3.2.1を公開
112
+ - (2020-04-24) v3.1.2を公開
113
+ - (2017-12-29) v3.0.19を公開(無名関数の「には」構文の実装など)
114
+ - (2017-06-25) 内部構造を大幅に修正(PEGパーサーから独自のパーサーに変更)
115
+ - (2017-02-13) なでしこ3のプロジェクトが開始
116
+ - (2004-08-01) ひまわり2としてゼロからなでしこv1の開発が開始
117
117
 
118
118
  ## なでしこ3の開発に参加する
119
119
 
package/doc/plugins.md CHANGED
@@ -2,15 +2,18 @@
2
2
 
3
3
  なでしこ3には、以下の二種類のプラグインがある。
4
4
 
5
- - (1) なでしこ3自身で開発したなでしこプラグイン
6
- - (2) JavaScriptで開発したJSプラグイン
5
+ - (1) なでしこ3自身で開発した[NAKO3プラグイン](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2FNAKO3%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9&show)
6
+ - (2) JavaScriptで開発した[JSプラグイン](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2FJS%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9&show)
7
7
 
8
8
  なお、(1)のプラグインはなでしこ自身で関数を定義するだけである。
9
9
  以下では、(2)のJavaScriptで開発したプラグインについて解説する。
10
10
 
11
- ## Webプラグインを利用する手順
11
+ ## JSプラグインを利用する手順
12
12
 
13
- HTMLファイル内でなでしこ本体(wnako3.js)よりも後ろで`<script src="(JSプラグイン).js">`と記述して読み込む。
13
+ 次の2つの方法で利用ができる。
14
+
15
+ - (1)「[取り込む構文](https://nadesi.com/v3/doc/index.php?%E6%96%87%E6%B3%95%2F%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%8F%96%E8%BE%BC&show)」を使ってプラグインを取り込める。
16
+ - (2) HTMLファイル内でなでしこ本体(wnako3.js)よりも後ろで`<script src="(JSプラグイン).js">`と記述して読み込む。
14
17
 
15
18
  なお「wnako3.js」を読み込むと、ブラウザの「navigator」オブジェクトにプロパティ「nako3」(navigator.nako3)にコンパイラのインスタンスが作成される。
16
19
 
@@ -111,7 +114,7 @@ if (typeof (navigator) === 'object') {
111
114
  このオブジェクトを参照することで、システム変数にアクセスできる。
112
115
 
113
116
  ```js
114
- {
117
+ 'xxx': {
115
118
  type: 'func',
116
119
  josi: [],
117
120
  fn: function (sys) {
@@ -123,7 +126,7 @@ if (typeof (navigator) === 'object') {
123
126
  例えば、なでしこで管理されている変数「A」にアクセスしたいときは、以下のようなコードを記述する。なお、ローカル変数を参照するときpure: trueの関数は正しく動作しない。
124
127
 
125
128
  ```js
126
- {
129
+ 'xxx': {
127
130
  type: 'func',
128
131
  josi: [],
129
132
  fn: function (sys) {
@@ -136,7 +139,7 @@ if (typeof (navigator) === 'object') {
136
139
  そのほかに、なでしこ側で定義した関数「HOGE」を実行したいときは、以下のように記述する。
137
140
 
138
141
  ```js
139
- {
142
+ 'xxx': {
140
143
  type: 'func',
141
144
  josi: [],
142
145
  fn: function (sys) {
@@ -159,7 +162,7 @@ if (typeof (navigator) === 'object') {
159
162
  なお、最後の助詞を可変長引数として扱う場合、システム変数は末尾の引数の末尾の要素として挿入される。
160
163
 
161
164
  ```js
162
- {
165
+ 'xxx': {
163
166
  type: 'func',
164
167
  josi: [['は'], ['で']],
165
168
  isVariableJosi: true,
@@ -171,9 +174,46 @@ if (typeof (navigator) === 'object') {
171
174
  }
172
175
  ```
173
176
 
174
- ## 非同期モードに対応した関数を作る場合
177
+ ## 非同期処理に対する関数を作る場合
178
+
179
+ v3.3で`asyncFn`が導入された(参照: #1154)。このプロパティを`true`に設定した場合、関数は非同期処理で実行される。
180
+ つまり、この関数を呼び出す前に、自動的に`await`が指定される。そのため、`asyncFn`を`true`とした場合、Promiseのオブジェクトを返すようにする。
181
+
182
+ ```js
183
+ 'xxx': {
184
+ type: 'func',
185
+ josi: [['で']],
186
+ asyncFn: true, // 非同期処理であることを明示
187
+ fn: function (msec, sys) {
188
+ // asyncFnをtrueにしたら、必ずPromiseを返すようにする
189
+ return new Promise((resolve, _reject) => {
190
+ setTimeout(()=>{
191
+ resolve()
192
+ }, msec)
193
+ })
194
+ }
195
+ }
196
+ ```
197
+
198
+ あるいは、以下のように、`async` をつけて関数を定義する。このように書くと、自動的にPromiseオブジェクトを返す。
175
199
 
176
- v3.2.22で導入された非同期モードに対応した関数を作るには、以下のように記述する。
200
+ ```js
201
+ 'xxx': {
202
+ type: 'func',
203
+ josi: [['で']],
204
+ asyncFn: true, // 非同期処理であることを明示
205
+ fn: async function (msec, sys) {
206
+ // ここで非同期処理
207
+ }
208
+ }
209
+ ```
210
+
211
+ この機能の追加により、`「!非同期モード」`や`「逐次実行」`の利用は非推奨となった。
212
+
213
+ ## (非推奨) 非同期モードに対応した関数を作る場合
214
+
215
+ v3.2.22で導入された非同期モードの利用は非推奨となったが、非同期モードに対応した関数を作るには、以下のように記述する。
216
+ なお、今後、非同期関数を利用するには、上記asyncFnを使うこと。
177
217
 
178
218
  ```js
179
219
  fn: function (n, sys) {
@@ -189,8 +229,6 @@ v3.2.22で導入された非同期モードに対応した関数を作るには
189
229
  }
190
230
  ```
191
231
 
192
- - (参考)[秒待機](https://github.com/kujirahand/nadesiko3/blob/f3d51519aff77df04b0d9b1e29ed16914a3f0e74/src/plugin_system.js#L1808)
193
-
194
232
  ## マニュアルを自動生成する
195
233
 
196
234
  - [doc/docgen.md](docgen.md) にマニュアル自動生成のスクリプトが紹介されている。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nadesiko3",
3
- "version": "3.3.16",
3
+ "version": "3.3.17",
4
4
  "description": "Japanese Programming Language",
5
5
  "main": "src/index.mjs",
6
6
  "bin": {
package/release/_hash.txt CHANGED
@@ -54,15 +54,15 @@ plugin_weykturtle3d.js:
54
54
  sha256(base64): ND/1JqYrFVGTIPYsbBk+tScnF8RVzgYPM0/E2aE8GRw=
55
55
  sha512(base64): T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==
56
56
  version.js:
57
- md5(hex): 9fab61472366574fe882b54467a821f6
58
- sha256(hex): dc89743db77e06399e634eb38fd38af8d871a761b979432ee79bc58fec0fe632
59
- sha256(base64): 3Il0Pbd+BjmeY06zj9OK+Nhxp2G5eUMu55vFj+wP5jI=
60
- sha512(base64): g0ArfOViHDBDkhqyIFl1+1anZs7gX1S52uKeFIXnoF+1+pDYIZ+u7/fdNOBiGEWTcv4wc5DhoWI5/L6uD8nQ6A==
57
+ md5(hex): 100f16261cd0576f82ef0f630a9626c7
58
+ sha256(hex): b5768cff1d6490955b673584fca7f1019f26fcbe7c0d6b00c3a31e3c16d266b2
59
+ sha256(base64): tXaM/x1kkJVbZzWE/KfxAZ8m/L58DWsAw6MePBbSZrI=
60
+ sha512(base64): QrTKFUAWc5Q5rY4VRzUmz/9NUZDjnew4L313DRgp/w/YGpJYCnIqXoxQ0gdc/YeOmR0oZpcGDEDxqkkz8K3lfA==
61
61
  wnako3.js:
62
- md5(hex): 3f6b08adc950a9d1e5dca19d44509da4
63
- sha256(hex): e987bbc47701aec1eb12ef7c45813150489e4da863b289267fdc1b7df6050e4e
64
- sha256(base64): 6Ye7xHcBrsHrEu98RYExUEieTahjsokmf9wbffYFDk4=
65
- sha512(base64): UJukIyVhTzLbLVonDWejVuu+Ri8E5KnOVcL8Ohck6aPZri27UapbhqGyzQ5JLQxScad5CNTv/Q6zs0/8eslEEw==
62
+ md5(hex): f8161c0adbeb1806de414b08559f095a
63
+ sha256(hex): 4225416a87292cb7e997bf82975c2868ff894b623403a814f28ec785df2dd07a
64
+ sha256(base64): QiVBaocpLLfpl7+Cl1woaP+JS2I0A6gU8o7Hhd8t0Ho=
65
+ sha512(base64): X2avnfGO4EFkxWGKNw1VbV5YrhfOQIkzM5sy+7/jCbtm6240NSLofC/iT5+vFDVCXxFEGmvXoaeLY6UvCNnybQ==
66
66
  wnako3webworker.js:
67
67
  md5(hex): 7aa8cfb6b64151f7a0c69f3d81c1bc39
68
68
  sha256(hex): 7bc83938434df12595551f2787806a345152bf3e27586606f5c01f95dbee234c
@@ -1,14 +1,14 @@
1
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/command.json.js" integrity="sha512-BlbmCZmct1OJqv/jWh5VJXh0GxBNDy9TzlqAKWTKebLh8XWvdDf2+hfKjIgZwXkvLTaJB7XU6kh+yUk3k/zKCQ==" crossorigin="anonymous"></script>
2
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/editor.js" integrity="sha512-WODrUxDIPYkR/AALClcVG+TCAN8JG3aMtX5ctfXAhQcLLXD82vX3T+g58mKojVS9aX5tQ2HD+uvTkPqvzJp5cQ==" crossorigin="anonymous"></script>
3
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/nako_gen_async.js" integrity="sha512-+Q+XYnKLAaJaBtXemCuGfwcxNbgcOOwNKOAMPDYOSQ8OUBWVDgCXAwby4NOYd63reQlvB4mUdI+pQbiQEWzA/Q==" crossorigin="anonymous"></script>
4
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
5
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/plugin_csv.js" integrity="sha512-a3UkK17k5YZehy+QmY6qZ9PWrhlFEWDf+T6dmDmn+CwMSyGYUx/OE8Ap0MKsSl+B/m9BiUS/VCHlAb/CuOEzIA==" crossorigin="anonymous"></script>
6
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/plugin_kansuji.js" integrity="sha512-lsQw0+JKUPvC6/rQEB2G6qZjNdgspE2rSoOloRNUvgGk12X6+j8Fh5tJCIwGkSYEp0pr4D/tSBY3CLIsvU/ZUg==" crossorigin="anonymous"></script>
8
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/plugin_markup.js" integrity="sha512-8juIOCZ3dQksTGi1hTpEMifkR52I3OjP/Ox7MYcHLY5tqpZPEhGzqi1efWgz+Jop3R4TGts/5OX7fiY2FZY30A==" crossorigin="anonymous"></script>
9
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/plugin_turtle.js" integrity="sha512-3/BlAe3uVDBgJrgFWzLJa3bvNQVhAQuL343Icict5hI3LndcPjV6mAD8KoWRlxmF8A8S6n8eKnmrh6NFWTjyEw==" crossorigin="anonymous"></script>
10
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/plugin_webworker.js" integrity="sha512-i+Z6Tg1xuS7TmJx/NrvGlEgPRGR9VUvaN6aqi5zVu1YpdabJ2p4rXWXNx3aBj6brCQ7co+D7Y+RhLm3S3gbXPQ==" crossorigin="anonymous"></script>
11
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
12
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/version.js" integrity="sha512-g0ArfOViHDBDkhqyIFl1+1anZs7gX1S52uKeFIXnoF+1+pDYIZ+u7/fdNOBiGEWTcv4wc5DhoWI5/L6uD8nQ6A==" crossorigin="anonymous"></script>
13
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/wnako3.js" integrity="sha512-UJukIyVhTzLbLVonDWejVuu+Ri8E5KnOVcL8Ohck6aPZri27UapbhqGyzQ5JLQxScad5CNTv/Q6zs0/8eslEEw==" crossorigin="anonymous"></script>
14
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.16&f=release/wnako3webworker.js" integrity="sha512-Ma5t2qDCY1xpwCPQQa41o/k1hzOPEDht+SQFvzQJiv7XFVgSgQMcvaB26o4M3FPie4wRF4d/KMyZF9wnRITqFQ==" crossorigin="anonymous"></script>
1
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/command.json.js" integrity="sha512-BlbmCZmct1OJqv/jWh5VJXh0GxBNDy9TzlqAKWTKebLh8XWvdDf2+hfKjIgZwXkvLTaJB7XU6kh+yUk3k/zKCQ==" crossorigin="anonymous"></script>
2
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/editor.js" integrity="sha512-WODrUxDIPYkR/AALClcVG+TCAN8JG3aMtX5ctfXAhQcLLXD82vX3T+g58mKojVS9aX5tQ2HD+uvTkPqvzJp5cQ==" crossorigin="anonymous"></script>
3
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/nako_gen_async.js" integrity="sha512-+Q+XYnKLAaJaBtXemCuGfwcxNbgcOOwNKOAMPDYOSQ8OUBWVDgCXAwby4NOYd63reQlvB4mUdI+pQbiQEWzA/Q==" crossorigin="anonymous"></script>
4
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/plugin_caniuse.js" integrity="sha512-NbX6BKUNq1J8xwtv5CThQC54Lb/KxaPlimRpsF745nxqjYeuGD7S70j4yOgNm4Uwd7AN5FgezS6NDyhlvoJF2w==" crossorigin="anonymous"></script>
5
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/plugin_csv.js" integrity="sha512-a3UkK17k5YZehy+QmY6qZ9PWrhlFEWDf+T6dmDmn+CwMSyGYUx/OE8Ap0MKsSl+B/m9BiUS/VCHlAb/CuOEzIA==" crossorigin="anonymous"></script>
6
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/plugin_kansuji.js" integrity="sha512-lsQw0+JKUPvC6/rQEB2G6qZjNdgspE2rSoOloRNUvgGk12X6+j8Fh5tJCIwGkSYEp0pr4D/tSBY3CLIsvU/ZUg==" crossorigin="anonymous"></script>
8
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/plugin_markup.js" integrity="sha512-8juIOCZ3dQksTGi1hTpEMifkR52I3OjP/Ox7MYcHLY5tqpZPEhGzqi1efWgz+Jop3R4TGts/5OX7fiY2FZY30A==" crossorigin="anonymous"></script>
9
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/plugin_turtle.js" integrity="sha512-3/BlAe3uVDBgJrgFWzLJa3bvNQVhAQuL343Icict5hI3LndcPjV6mAD8KoWRlxmF8A8S6n8eKnmrh6NFWTjyEw==" crossorigin="anonymous"></script>
10
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/plugin_webworker.js" integrity="sha512-i+Z6Tg1xuS7TmJx/NrvGlEgPRGR9VUvaN6aqi5zVu1YpdabJ2p4rXWXNx3aBj6brCQ7co+D7Y+RhLm3S3gbXPQ==" crossorigin="anonymous"></script>
11
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/plugin_weykturtle3d.js" integrity="sha512-T4B8Cvhn9j5YdMGk4rwPInfqmcXtGEjD2g6X6wSqXvYyIXuSy+t1RVf1viZ2zljHlk3wN6pwKvvg/NIJvfMAzw==" crossorigin="anonymous"></script>
12
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/version.js" integrity="sha512-QrTKFUAWc5Q5rY4VRzUmz/9NUZDjnew4L313DRgp/w/YGpJYCnIqXoxQ0gdc/YeOmR0oZpcGDEDxqkkz8K3lfA==" crossorigin="anonymous"></script>
13
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/wnako3.js" integrity="sha512-X2avnfGO4EFkxWGKNw1VbV5YrhfOQIkzM5sy+7/jCbtm6240NSLofC/iT5+vFDVCXxFEGmvXoaeLY6UvCNnybQ==" crossorigin="anonymous"></script>
14
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.17&f=release/wnako3webworker.js" integrity="sha512-Ma5t2qDCY1xpwCPQQa41o/k1hzOPEDht+SQFvzQJiv7XFVgSgQMcvaB26o4M3FPie4wRF4d/KMyZF9wnRITqFQ==" crossorigin="anonymous"></script>