nadesiko3 3.3.15 → 3.3.18

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.15",
3
+ "version": "3.3.18",
4
4
  "description": "Japanese Programming Language",
5
5
  "main": "src/index.mjs",
6
6
  "bin": {
@@ -36,7 +36,8 @@
36
36
  "textlint": "textlint *.md && textlint doc/*.md && textlint batch/*.md && textlint tools/*.md",
37
37
  "textlint:fix": "textlint --fix *.md && textlint --fix doc/*.md && textlint --fix batch/*.md && textlint --fix tools/*.md",
38
38
  "extlib:clean": "rm -f -r demo/extlib/*",
39
- "extlib:install": "node src/cnako3.mjs batch/download-extlib.nako3"
39
+ "extlib:install": "node src/cnako3.mjs batch/download-extlib.nako3",
40
+ "check_new_version": "cnako3 tools/check_new_version.nako3"
40
41
  },
41
42
  "repository": {
42
43
  "type": "git",
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): 8a71d8c43d37c1b7a4aa1100574efe45
58
- sha256(hex): d9be9c833d0ed1b4cca6f051342ebb44f42d482deed0023fe482d94d135e074d
59
- sha256(base64): 2b6cgz0O0bTMpvBRNC67RPQtSC3u0AI/5ILZTRNeB00=
60
- sha512(base64): dS7Dm/BV8/Dx0JcM9SSNLcAVWKpmmF3iUSvn6Yf4E3ginsa2Mgdg+l5Yot30vOiY4RGns9yMf9DXVy9DeVOL5A==
57
+ md5(hex): abeee42110c00e94503cafb73e0c1334
58
+ sha256(hex): 191eb76e6cc69ce2bd059d79e257146662552f3ebdb09bceaeb30c80934d4f12
59
+ sha256(base64): GR63bmzGnOK9BZ154lcUZmJVLz69sJvOrrMMgJNNTxI=
60
+ sha512(base64): wCG5R9yZhoq9WvovNE8mjjEdd22+zPK2dpGK4Hqel8Fk7ZjOpKmera8Xzd2Yt4llBaT5itOtccCUsxg9h3RyKg==
61
61
  wnako3.js:
62
- md5(hex): ce97da19047eea5884bb54f09d6271f1
63
- sha256(hex): f294eb2280e0b7384c0b4e996a778cc954a687b3b0b65c8838dc5ac0be987d4e
64
- sha256(base64): 8pTrIoDgtzhMC06ZaneMyVSmh7OwtlyIONxawL6YfU4=
65
- sha512(base64): MtepzA7S534POampeSiPAaOP0jgsYR3IPTnHaEl/YusHD1e2pJL9DVKseNhbKX6pLYFEXzvlk75JIy0J+u0YWQ==
62
+ md5(hex): a3d55013eecbab173e22434f78a37728
63
+ sha256(hex): 0473b16ec5b240ed4ba178e6e0f75729dddea1c1d6b0e0cbed2e38532bfa1243
64
+ sha256(base64): BHOxbsWyQO1LoXjm4PdXKd3eocHWsODL7S44Uyv6EkM=
65
+ sha512(base64): Auc0BFrECVHS1IVBENDzZymuUZHTvBCvC9GbriC4Q+SLoCB//oH4+tzm1nsBGvnzDfYLqLu18AwTeXMIY9PudQ==
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.15&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.15&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.15&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.15&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.15&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.15&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.15&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.15&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.15&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.15&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.15&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.15&f=release/version.js" integrity="sha512-dS7Dm/BV8/Dx0JcM9SSNLcAVWKpmmF3iUSvn6Yf4E3ginsa2Mgdg+l5Yot30vOiY4RGns9yMf9DXVy9DeVOL5A==" crossorigin="anonymous"></script>
13
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.15&f=release/wnako3.js" integrity="sha512-MtepzA7S534POampeSiPAaOP0jgsYR3IPTnHaEl/YusHD1e2pJL9DVKseNhbKX6pLYFEXzvlk75JIy0J+u0YWQ==" crossorigin="anonymous"></script>
14
- <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.15&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.18&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.18&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.18&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.18&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.18&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.18&f=release/plugin_datetime.js" integrity="sha512-1ADTZFkcfU6vpEEJZEYmIbqS6G2XViooDFD4198P61n7VKZ0PhEVj9l8ULFGrW7woSbDqfSPZmkZ7yvcRqPKYA==" crossorigin="anonymous"></script>
7
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.18&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.18&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.18&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.18&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.18&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.18&f=release/version.js" integrity="sha512-wCG5R9yZhoq9WvovNE8mjjEdd22+zPK2dpGK4Hqel8Fk7ZjOpKmera8Xzd2Yt4llBaT5itOtccCUsxg9h3RyKg==" crossorigin="anonymous"></script>
13
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.18&f=release/wnako3.js" integrity="sha512-Auc0BFrECVHS1IVBENDzZymuUZHTvBCvC9GbriC4Q+SLoCB//oH4+tzm1nsBGvnzDfYLqLu18AwTeXMIY9PudQ==" crossorigin="anonymous"></script>
14
+ <script defer src="https://nadesi.com/v3/cdn.php?v=3.3.18&f=release/wnako3webworker.js" integrity="sha512-Ma5t2qDCY1xpwCPQQa41o/k1hzOPEDht+SQFvzQJiv7XFVgSgQMcvaB26o4M3FPie4wRF4d/KMyZF9wnRITqFQ==" crossorigin="anonymous"></script>