nadesiko3 3.3.14 → 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 +7 -7
- package/doc/plugins.md +50 -12
- package/package.json +1 -1
- package/release/_hash.txt +8 -8
- package/release/_script-tags.txt +14 -14
- package/release/stats.json +1 -1
- package/release/version.js +1 -1
- package/release/wnako3.js +1 -1
- package/src/cnako3mod.mjs +156 -61
- package/src/nako_version.mjs +2 -2
- package/src/wnako3.mjs +22 -15
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
|
-
##
|
|
11
|
+
## JSプラグインを利用する手順
|
|
12
12
|
|
|
13
|
-
|
|
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
|
-
|
|
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
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):
|
|
58
|
-
sha256(hex):
|
|
59
|
-
sha256(base64):
|
|
60
|
-
sha512(base64):
|
|
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):
|
|
63
|
-
sha256(hex):
|
|
64
|
-
sha256(base64):
|
|
65
|
-
sha512(base64):
|
|
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
|
package/release/_script-tags.txt
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
2
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
3
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
4
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
5
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
6
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
7
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
8
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
9
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
10
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
11
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
12
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
13
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
14
|
-
<script defer src="https://nadesi.com/v3/cdn.php?v=3.3.
|
|
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>
|