nadesiko3 3.2.51 → 3.3.2
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 +1 -1
- package/bin/cnako3 +1 -1
- package/bin/cnako3.bat +1 -1
- package/demo/browsers.html +9 -10
- package/demo/flow.html +1 -0
- package/demo/turtle3.html +18 -17
- package/demo/turtle3d.html +1 -1
- package/demo/turtle3d2.html +1 -1
- package/doc/browsers.md +9 -10
- package/package.json +58 -57
- package/release/_hash.txt +57 -52
- package/release/_script-tags.txt +14 -13
- package/release/command.json +1 -1
- package/release/command.json.js +1 -1
- package/release/command_cnako3.json +1 -1
- package/release/command_list.json +1 -1
- package/release/editor.js +1 -1
- package/release/editor.js.LICENSE.txt +9 -12
- package/release/nako_gen_async.js +1 -1
- package/release/nako_gen_async.js.LICENSE.txt +10 -666
- package/release/plugin_caniuse.js +1 -1
- package/release/plugin_caniuse.js.LICENSE.txt +9 -425
- package/release/plugin_csv.js +1 -1
- package/release/plugin_csv.js.LICENSE.txt +3 -419
- package/release/plugin_datetime.js +1 -1
- package/release/plugin_datetime.js.LICENSE.txt +6 -530
- package/release/plugin_kansuji.js +1 -1
- package/release/plugin_kansuji.js.LICENSE.txt +3 -559
- package/release/plugin_markup.js +1 -1
- package/release/plugin_markup.js.LICENSE.txt +4 -420
- package/release/plugin_turtle.js +1 -1
- package/release/plugin_turtle.js.LICENSE.txt +12 -500
- package/release/plugin_webworker.js +1 -1
- package/release/plugin_webworker.js.LICENSE.txt +3 -563
- package/release/plugin_weykturtle3d.js +1 -0
- package/release/stats.json +1 -1
- package/release/version.js +1 -1
- package/release/version.js.LICENSE.txt +9 -12
- package/release/wnako3.js +1 -1
- package/release/wnako3.js.LICENSE.txt +1 -1
- package/release/wnako3webworker.js +1 -1
- package/release/wnako3webworker.js.LICENSE.txt +1 -1117
- package/src/browsers.mjs +1 -0
- package/src/browsers.txt +15 -15
- package/src/browsers_agents.mjs +1 -0
- package/src/cnako3.mjs +13 -0
- package/src/{cnako3.js → cnako3mod.mjs} +46 -53
- package/src/{commander_ja.js → commander_ja.mjs} +16 -11
- package/src/{enako3.js → enako3.mjs} +0 -0
- package/src/{era.json → era.mjs} +1 -1
- package/src/image_turtle-elephant.mjs +5 -0
- package/src/image_turtle-panda.mjs +5 -0
- package/src/image_turtle64.mjs +5 -0
- package/src/index.mjs +9 -0
- package/src/{nako3.js → nako3.mjs} +56 -52
- package/src/{nako3_assert.js → nako3_assert.mjs} +7 -6
- package/src/{nako3server.js → nako3server.mjs} +12 -5
- package/src/{nako_colors.js → nako_colors.mjs} +1 -1
- package/src/{nako_errors.js → nako_errors.mjs} +8 -18
- package/src/{nako_from_dncl.js → nako_from_dncl.mjs} +8 -6
- package/src/{nako_gen.js → nako_gen.mjs} +107 -89
- package/src/{nako_gen_async.js → nako_gen_async.mjs} +5 -8
- package/src/{nako_global.js → nako_global.mjs} +4 -5
- package/src/{nako_indent.js → nako_indent.mjs} +4 -4
- package/src/{nako_josi_list.js → nako_josi_list.mjs} +16 -14
- package/src/nako_lex_rules.mjs +244 -0
- package/src/{nako_lexer.js → nako_lexer.mjs} +7 -10
- package/src/{nako_logger.js → nako_logger.mjs} +3 -4
- package/src/{nako_parser3.js → nako_parser3.mjs} +5 -5
- package/src/{nako_parser_base.js → nako_parser_base.mjs} +1 -9
- package/src/{nako_parser_const.js → nako_parser_const.mjs} +2 -6
- package/src/{nako_prepare.js → nako_prepare.mjs} +1 -2
- package/src/{nako_reserved_words.js → nako_reserved_words.mjs} +1 -1
- package/src/{nako_source_mapping.js → nako_source_mapping.mjs} +4 -11
- package/src/{nako_test.js → nako_test.mjs} +0 -0
- package/src/nako_version.mjs +7 -0
- package/src/{plugin_browser.js → plugin_browser.mjs} +30 -30
- package/src/{plugin_browser_ajax.js → plugin_browser_ajax.mjs} +7 -7
- package/src/{plugin_browser_audio.js → plugin_browser_audio.mjs} +1 -1
- package/src/{plugin_browser_canvas.js → plugin_browser_canvas.mjs} +1 -1
- package/src/{plugin_browser_chart.js → plugin_browser_chart.mjs} +1 -1
- package/src/{plugin_browser_color.js → plugin_browser_color.mjs} +1 -1
- package/src/{plugin_browser_crypto.js → plugin_browser_crypto.mjs} +1 -1
- package/src/{plugin_browser_dialog.js → plugin_browser_dialog.mjs} +1 -1
- package/src/{plugin_browser_dom_basic.js → plugin_browser_dom_basic.mjs} +1 -1
- package/src/{plugin_browser_dom_event.js → plugin_browser_dom_event.mjs} +1 -1
- package/src/{plugin_browser_dom_parts.js → plugin_browser_dom_parts.mjs} +1 -1
- package/src/{plugin_browser_geolocation.js → plugin_browser_geolocation.mjs} +1 -1
- package/src/{plugin_browser_hotkey.js → plugin_browser_hotkey.mjs} +2 -2
- package/src/{plugin_browser_html.js → plugin_browser_html.mjs} +1 -1
- package/src/{plugin_browser_in_worker.js → plugin_browser_in_worker.mjs} +4 -4
- package/src/{plugin_browser_location.js → plugin_browser_location.mjs} +1 -1
- package/src/{plugin_browser_speech.js → plugin_browser_speech.mjs} +1 -1
- package/src/{plugin_browser_storage.js → plugin_browser_storage.mjs} +1 -1
- package/src/{plugin_browser_system.js → plugin_browser_system.mjs} +1 -1
- package/src/{plugin_browser_websocket.js → plugin_browser_websocket.mjs} +1 -1
- package/src/{plugin_caniuse.js → plugin_caniuse.mjs} +8 -3
- package/src/{plugin_csv.js → plugin_csv.mjs} +4 -5
- package/src/{plugin_datetime.js → plugin_datetime.mjs} +19 -26
- package/src/{plugin_express.js → plugin_express.mjs} +4 -3
- package/src/{plugin_kansuji.js → plugin_kansuji.mjs} +1 -1
- package/src/{plugin_keigo.js → plugin_keigo.mjs} +0 -0
- package/src/{plugin_markup.js → plugin_markup.mjs} +6 -6
- package/src/{plugin_math.js → plugin_math.mjs} +1 -4
- package/src/{plugin_node.js → plugin_node.mjs} +25 -57
- package/src/{plugin_promise.js → plugin_promise.mjs} +1 -3
- package/src/{plugin_system.js → plugin_system.mjs} +32 -15
- package/src/{plugin_test.js → plugin_test.mjs} +1 -3
- package/src/{plugin_turtle.js → plugin_turtle.mjs} +5 -4
- package/src/{plugin_webworker.js → plugin_webworker.mjs} +3 -3
- package/src/{plugin_weykturtle3d.js → plugin_weykturtle3d.mjs} +1 -3
- package/src/{plugin_worker.js → plugin_worker.mjs} +4 -1
- package/src/{wnako3.js → wnako3.mjs} +5 -5
- package/src/{wnako3_editor.js → wnako3_editor.mjs} +24 -18
- package/src/{wnako3webworker.js → wnako3webworker.mjs} +0 -0
- package/test/async/{async_basic_test.js → async_basic_test.mjs} +3 -4
- package/test/browser/karma.config.js +9 -0
- package/test/browser/test/plugin_browser_test.js +2 -2
- package/test/browser/test/plugin_turtle_test.js +2 -2
- package/test/browser/test/plugin_webworker_test.js +3 -3
- package/test/browser/test/require_test.js +2 -2
- package/test/common/{array_test.js → array_test.mjs} +3 -3
- package/test/common/{basic_test.js → basic_test.mjs} +3 -13
- package/test/common/{calc_test.js → calc_test.mjs} +2 -2
- package/test/common/{debug_test.js → debug_test.mjs} +2 -2
- package/test/common/{dncl_test.js → dncl_test.mjs} +3 -3
- package/test/common/{error_test.js → error_test.mjs} +2 -2
- package/test/common/{flow_test.js → flow_test.mjs} +2 -2
- package/test/common/{func_call.js → func_call.mjs} +3 -3
- package/test/common/{func_test.js → func_test.mjs} +2 -2
- package/test/common/{indent_test.js → indent_test.mjs} +3 -2
- package/test/common/{lex_test.js → lex_test.mjs} +2 -2
- package/test/common/{literal_test.js → literal_test.mjs} +3 -2
- package/test/common/{nako_logger_test.js → nako_logger_test.mjs} +3 -3
- package/test/common/{plugin_browser_test.js → plugin_browser_test.mjs} +4 -4
- package/test/common/{plugin_browser_ut_audio_test.js → plugin_browser_ut_audio_test.mjs} +4 -4
- package/test/common/{plugin_browser_ut_color_test.js → plugin_browser_ut_color_test.mjs} +2 -2
- package/test/common/{plugin_browser_ut_dialog_test.js → plugin_browser_ut_dialog_test.mjs} +3 -3
- package/test/common/{plugin_browser_ut_html_test.js → plugin_browser_ut_html_test.mjs} +2 -2
- package/test/common/{plugin_browser_ut_system_test.js → plugin_browser_ut_system_test.mjs} +2 -2
- package/test/common/{plugin_csv_test.js → plugin_csv_test.mjs} +3 -3
- package/test/common/{plugin_datetime_test.js → plugin_datetime_test.mjs} +4 -4
- package/test/common/{plugin_kansuji_test.js → plugin_kansuji_test.mjs} +3 -3
- package/test/common/{plugin_markup_test.js → plugin_markup_test.mjs} +3 -3
- package/test/common/{plugin_promise_test.js → plugin_promise_test.mjs} +2 -2
- package/test/common/{plugin_system_test.js → plugin_system_test.mjs} +2 -2
- package/test/common/{prepare_test.js → prepare_test.mjs} +2 -2
- package/test/common/{re_test.js → re_test.mjs} +2 -2
- package/test/common/{variable_scope_test.js → variable_scope_test.mjs} +2 -2
- package/test/karma.config.js +3 -3
- package/test/node/{async_test.js → async_test.mjs} +4 -2
- package/test/node/{commander_ja_test.js → commander_ja_test.mjs} +17 -12
- package/test/node/{error_message_test.js → error_message_test.mjs} +13 -10
- package/test/node/node_test.mjs +57 -0
- package/test/node/{plugin_browser_ut_ajax_test.js → plugin_browser_ut_ajax_test.mjs} +7 -5
- package/test/node/{plugin_browser_ut_location_test.js → plugin_browser_ut_location_test.mjs} +3 -3
- package/test/node/{plugin_markup_test.js → plugin_markup_test.mjs} +6 -7
- package/test/node/{plugin_math_test.js → plugin_math_test.mjs} +5 -5
- package/test/node/{plugin_node_test.js → plugin_node_test.mjs} +11 -7
- package/test/node/{plugin_test.js → plugin_test.mjs} +11 -5
- package/test/node/{require_nako3_test.js → require_nako3_test.mjs} +19 -12
- package/test/node/{side_effects_test.js → side_effects_test.mjs} +24 -13
- package/test/node/{wnako3_editor_test.js → wnako3_editor_test.mjs} +16 -9
- package/tools/nako3edit/index.nako3 +1 -1
- package/tools/nako3edit/{run.js → run.mjs} +8 -2
- package/src/index.js +0 -5
- package/src/nako_lex_rules.js +0 -260
- package/src/nako_version.js +0 -8
- package/test/node/node_test.js +0 -43
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* なでしこ3字句解析のためのルール
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { josiRE, removeJosiMap } from './nako_josi_list.mjs'
|
|
6
|
+
|
|
7
|
+
const kanakanji = /^[\u3005\u4E00-\u9FCF_a-zA-Z0-9ァ-ヶー\u2460-\u24FF\u2776-\u277F\u3251-\u32BF]+/
|
|
8
|
+
const hira = /^[ぁ-ん]/
|
|
9
|
+
const allHiragana = /^[ぁ-ん]+$/
|
|
10
|
+
const wordHasIjoIka = /^.+(以上|以下|超|未満)$/
|
|
11
|
+
const errorRead = (ch) => {
|
|
12
|
+
return function () { throw new Error('突然の『' + ch + '』があります。') }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const unitRE = /^(円|ドル|元|歩|㎡|坪|度|℃|°|個|つ|本|冊|才|歳|匹|枚|皿|セット|羽|人|件|行|列|機|品|m|mm|cm|km|g|kg|t|px|dot|pt|em|b|mb|kb|gb)/
|
|
16
|
+
export const rules = [
|
|
17
|
+
// 上から順にマッチさせていく
|
|
18
|
+
{ name: 'ここまで', pattern: /^;;;/ }, // #925
|
|
19
|
+
{ name: 'eol', pattern: /^\n/ },
|
|
20
|
+
{ name: 'eol', pattern: /^;/ },
|
|
21
|
+
// eslint-disable-next-line no-control-regex
|
|
22
|
+
{ name: 'space', pattern: /^(\x20|\x09|・)+/ }, // #877,#1015
|
|
23
|
+
{ name: 'comma', pattern: /^,/ },
|
|
24
|
+
{ name: 'line_comment', pattern: /^#[^\n]*/ },
|
|
25
|
+
{ name: 'line_comment', pattern: /^\/\/[^\n]*/ },
|
|
26
|
+
{ name: 'range_comment', pattern: /^\/\*/, cbParser: cbRangeComment },
|
|
27
|
+
{ name: 'def_test', pattern: /^●テスト:/ },
|
|
28
|
+
{ name: 'def_func', pattern: /^●/ },
|
|
29
|
+
// 数値の判定 --- この後nako_lexerにて単位を読む処理が入る(#994)
|
|
30
|
+
{ name: 'number', pattern: /^0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)*/, readJosi: true, cb: parseNumber },
|
|
31
|
+
{ name: 'number', pattern: /^0[oO][0-7]+(_[0-7]+)*/, readJosi: true, cb: parseNumber },
|
|
32
|
+
{ name: 'number', pattern: /^0[bB][0-1]+(_[0-1]+)*/, readJosi: true, cb: parseNumber },
|
|
33
|
+
// 下の三つは小数点が挟まっている場合、小数点から始まっている場合、小数点がない場合の十進法の数値にマッチします
|
|
34
|
+
{ name: 'number', pattern: /^\d+(_\d+)*\.(\d+(_\d+)*)?([eE][+|-]?\d+(_\d+)*)?/, readJosi: true, cb: parseNumber },
|
|
35
|
+
{ name: 'number', pattern: /^\.\d+(_\d+)*([eE][+|-]?\d+(_\d+)*)?/, readJosi: true, cb: parseNumber },
|
|
36
|
+
{ name: 'number', pattern: /^\d+(_\d+)*([eE][+|-]?\d+(_\d+)*)?/, readJosi: true, cb: parseNumber },
|
|
37
|
+
{ name: 'ここから', pattern: /^(ここから),?/ },
|
|
38
|
+
{ name: 'ここまで', pattern: /^(ここまで|💧)/ },
|
|
39
|
+
{ name: 'もし', pattern: /^もしも?/ },
|
|
40
|
+
// 「ならば」は助詞として定義している
|
|
41
|
+
{ name: '違えば', pattern: /^違(えば)?/ },
|
|
42
|
+
// 「回」「間」「繰返」「反復」「抜」「続」「戻」「代入」「条件分岐」などは replaceWord で word から変換
|
|
43
|
+
// @see nako_reserved_words.js
|
|
44
|
+
{ name: 'shift_r0', pattern: /^>>>/ },
|
|
45
|
+
{ name: 'shift_r', pattern: /^>>/ },
|
|
46
|
+
{ name: 'shift_l', pattern: /^<</ },
|
|
47
|
+
{ name: '===', pattern: /^===/ }, // #999
|
|
48
|
+
{ name: '!==', pattern: /^!==/ }, // #999
|
|
49
|
+
{ name: 'gteq', pattern: /^(≧|>=|=>)/ },
|
|
50
|
+
{ name: 'lteq', pattern: /^(≦|<=|=<)/ },
|
|
51
|
+
{ name: 'noteq', pattern: /^(≠|<>|!=)/ },
|
|
52
|
+
{ name: '←', pattern: /^(←|<--)/ }, // 関数呼び出し演算子 #891 #899
|
|
53
|
+
{ name: 'eq', pattern: /^(=|🟰)/ },
|
|
54
|
+
{ name: 'line_comment', pattern: /^(!|💡)(インデント構文|ここまでだるい)[^\n]*/ }, // #1184
|
|
55
|
+
{ name: 'not', pattern: /^(!|💡)/ }, // #1184
|
|
56
|
+
{ name: 'gt', pattern: /^>/ },
|
|
57
|
+
{ name: 'lt', pattern: /^</ },
|
|
58
|
+
{ name: 'and', pattern: /^(かつ|&&)/ },
|
|
59
|
+
{ name: 'or', pattern: /^(または|或いは|あるいは|\|\|)/ },
|
|
60
|
+
{ name: '@', pattern: /^@/ },
|
|
61
|
+
{ name: '+', pattern: /^\+/ },
|
|
62
|
+
{ name: '-', pattern: /^-/ },
|
|
63
|
+
{ name: '*', pattern: /^(×|\*)/ },
|
|
64
|
+
{ name: '÷÷', pattern: /^÷÷/ }, // 整数の割り算
|
|
65
|
+
{ name: '÷', pattern: /^(÷|\/)/ }, // 普通の割り算
|
|
66
|
+
{ name: '%', pattern: /^%/ },
|
|
67
|
+
{ name: '^', pattern: /^\^/ },
|
|
68
|
+
{ name: '&', pattern: /^&/ },
|
|
69
|
+
{ name: '[', pattern: /^\[/ },
|
|
70
|
+
{ name: ']', pattern: /^]/, readJosi: true },
|
|
71
|
+
{ name: '(', pattern: /^\(/ },
|
|
72
|
+
{ name: ')', pattern: /^\)/, readJosi: true },
|
|
73
|
+
{ name: '|', pattern: /^\|/ },
|
|
74
|
+
{ name: 'string', pattern: /^🌿/, cbParser: src => cbString('🌿', '🌿', src) },
|
|
75
|
+
{ name: 'string_ex', pattern: /^🌴/, cbParser: src => cbString('🌴', '🌴', src) },
|
|
76
|
+
{ name: 'string_ex', pattern: /^「/, cbParser: src => cbString('「', '」', src) },
|
|
77
|
+
{ name: 'string', pattern: /^『/, cbParser: src => cbString('『', '』', src) },
|
|
78
|
+
{ name: 'string_ex', pattern: /^“/, cbParser: src => cbString('“', '”', src) },
|
|
79
|
+
{ name: 'string_ex', pattern: /^"/, cbParser: src => cbString('"', '"', src) },
|
|
80
|
+
{ name: 'string', pattern: /^'/, cbParser: src => cbString('\'', '\'', src) },
|
|
81
|
+
{ name: '」', pattern: /^」/, cbParser: errorRead('」') }, // error
|
|
82
|
+
{ name: '』', pattern: /^』/, cbParser: errorRead('』') }, // error
|
|
83
|
+
{ name: 'func', pattern: /^\{関数\},?/ },
|
|
84
|
+
{ name: '{', pattern: /^\{/ },
|
|
85
|
+
{ name: '}', pattern: /^\}/, readJosi: true },
|
|
86
|
+
{ name: ':', pattern: /^:/ },
|
|
87
|
+
{ name: '_eol', pattern: /^_\s*\n/ },
|
|
88
|
+
{ name: 'dec_lineno', pattern: /^‰/ },
|
|
89
|
+
// 絵文字変数 = (絵文字)英数字*
|
|
90
|
+
{ name: 'word', pattern: /^[\uD800-\uDBFF][\uDC00-\uDFFF][_a-zA-Z0-9]*/, readJosi: true },
|
|
91
|
+
{ name: 'word', pattern: /^[\u1F60-\u1F6F][_a-zA-Z0-9]*/, readJosi: true }, // 絵文字
|
|
92
|
+
{ name: 'word', pattern: /^《.+?》/, readJosi: true }, // 《特別名前トークン》(#672)
|
|
93
|
+
// 単語句
|
|
94
|
+
{
|
|
95
|
+
name: 'word',
|
|
96
|
+
pattern: /^[_a-zA-Z\u3005\u4E00-\u9FCFぁ-んァ-ヶ\u2460-\u24FF\u2776-\u277F\u3251-\u32BF]/,
|
|
97
|
+
cbParser: cbWordParser
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
export function trimOkurigana (s) {
|
|
102
|
+
// ひらがなから始まらない場合、送り仮名を削除。(例)置換する
|
|
103
|
+
if (!hira.test(s)) {
|
|
104
|
+
return s.replace(/[ぁ-ん]+/g, '')
|
|
105
|
+
}
|
|
106
|
+
// 全てひらがな? (例) どうぞ
|
|
107
|
+
if (allHiragana.test(s)) { return s }
|
|
108
|
+
// 末尾のひらがなのみ (例)お願いします →お願
|
|
109
|
+
return s.replace(/[ぁ-ん]+$/g, '')
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Utility for Rule
|
|
113
|
+
function cbRangeComment (src) {
|
|
114
|
+
let res = ''
|
|
115
|
+
const josi = ''
|
|
116
|
+
let numEOL = 0
|
|
117
|
+
src = src.substr(2) // skip /*
|
|
118
|
+
const i = src.indexOf('*/')
|
|
119
|
+
if (i < 0) { // not found
|
|
120
|
+
res = src
|
|
121
|
+
src = ''
|
|
122
|
+
} else {
|
|
123
|
+
res = src.substr(0, i)
|
|
124
|
+
src = src.substr(i + 2)
|
|
125
|
+
}
|
|
126
|
+
// 改行を数える
|
|
127
|
+
for (let i = 0; i < res.length; i++) { if (res.charAt(i) === '\n') { numEOL++ } }
|
|
128
|
+
|
|
129
|
+
res = res.replace(/(^\s+|\s+$)/, '') // trim
|
|
130
|
+
return { src: src, res: res, josi: josi, numEOL: numEOL }
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @param {string} src
|
|
135
|
+
*/
|
|
136
|
+
function cbWordParser (src, isTrimOkurigana = true) {
|
|
137
|
+
/*
|
|
138
|
+
kanji = [\u3005\u4E00-\u9FCF]
|
|
139
|
+
hiragana = [ぁ-ん]
|
|
140
|
+
katakana = [ァ-ヶー]
|
|
141
|
+
emoji = [\u1F60-\u1F6F]
|
|
142
|
+
uni_extra = [\uD800-\uDBFF] [\uDC00-\uDFFF]
|
|
143
|
+
alphabet = [_a-zA-Z]
|
|
144
|
+
numchars = [0-9]
|
|
145
|
+
*/
|
|
146
|
+
let res = ''
|
|
147
|
+
let josi = ''
|
|
148
|
+
while (src !== '') {
|
|
149
|
+
if (res.length > 0) {
|
|
150
|
+
// 助詞の判定
|
|
151
|
+
const j = josiRE.exec(src)
|
|
152
|
+
if (j) {
|
|
153
|
+
josi = j[0].replace(/^\s+/, '')
|
|
154
|
+
src = src.substr(j[0].length)
|
|
155
|
+
// 助詞の直後にある「,」を飛ばす #877
|
|
156
|
+
if (src.charAt(0) === ',') { src = src.substr(1) }
|
|
157
|
+
break
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// カタカナ漢字英数字か?
|
|
161
|
+
const m = kanakanji.exec(src)
|
|
162
|
+
if (m) {
|
|
163
|
+
res += m[0]
|
|
164
|
+
src = src.substr(m[0].length)
|
|
165
|
+
continue
|
|
166
|
+
}
|
|
167
|
+
// ひらがな?
|
|
168
|
+
const h = hira.test(src)
|
|
169
|
+
if (h) {
|
|
170
|
+
res += src.charAt(0)
|
|
171
|
+
src = src.substr(1)
|
|
172
|
+
continue
|
|
173
|
+
}
|
|
174
|
+
break // other chars
|
|
175
|
+
}
|
|
176
|
+
// 「間」の特殊ルール (#831)
|
|
177
|
+
// 「等しい間」や「一致する間」なら「間」をsrcに戻す。ただし「システム時間」はそのままにする。
|
|
178
|
+
if (/[ぁ-ん]間$/.test(res)) {
|
|
179
|
+
src = res.charAt(res.length - 1) + src
|
|
180
|
+
res = res.slice(0, -1)
|
|
181
|
+
}
|
|
182
|
+
// 「以上」「以下」「超」「未満」 #918
|
|
183
|
+
const ii = wordHasIjoIka.exec(res)
|
|
184
|
+
if (ii) {
|
|
185
|
+
src = ii[1] + josi + src
|
|
186
|
+
josi = ''
|
|
187
|
+
res = res.substr(0, res.length - ii[1].length)
|
|
188
|
+
}
|
|
189
|
+
// 助詞「こと」「である」「です」などは「**すること」のように使うので削除 #936 #939 #974
|
|
190
|
+
if (removeJosiMap[josi]) { josi = '' }
|
|
191
|
+
|
|
192
|
+
// 漢字カタカナ英語から始まる語句 --- 送り仮名を省略
|
|
193
|
+
if (isTrimOkurigana) {
|
|
194
|
+
res = trimOkurigana(res)
|
|
195
|
+
}
|
|
196
|
+
// 助詞だけの語句の場合
|
|
197
|
+
if (res === '' && josi !== '') {
|
|
198
|
+
res = josi
|
|
199
|
+
josi = ''
|
|
200
|
+
}
|
|
201
|
+
return { src: src, res: res, josi: josi, numEOL: 0 }
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
function cbString (beginTag, closeTag, src) {
|
|
205
|
+
let res = ''
|
|
206
|
+
let josi = ''
|
|
207
|
+
let numEOL = 0
|
|
208
|
+
src = src.substr(beginTag.length) // skip beginTag
|
|
209
|
+
const i = src.indexOf(closeTag)
|
|
210
|
+
if (i < 0) { // not found
|
|
211
|
+
res = src
|
|
212
|
+
src = ''
|
|
213
|
+
} else {
|
|
214
|
+
res = src.substr(0, i)
|
|
215
|
+
src = src.substr(i + closeTag.length)
|
|
216
|
+
// res の中に beginTag があればエラーにする #953
|
|
217
|
+
if (res.indexOf(beginTag) >= 0) {
|
|
218
|
+
if (beginTag === '『') {
|
|
219
|
+
throw new Error('「『」で始めた文字列の中に「『」を含めることはできません。')
|
|
220
|
+
} else {
|
|
221
|
+
throw new Error(`『${beginTag}』で始めた文字列の中に『${beginTag}』を含めることはできません。`)
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// 文字列直後の助詞を取得
|
|
226
|
+
const j = josiRE.exec(src)
|
|
227
|
+
if (j) {
|
|
228
|
+
josi = j[0].replace(/^\s+/, '')
|
|
229
|
+
src = src.substr(j[0].length)
|
|
230
|
+
// 助詞の後のカンマ #877
|
|
231
|
+
if (src.charAt(0) === ',') { src = src.substr(1) }
|
|
232
|
+
}
|
|
233
|
+
// 助詞「こと」「である」「です」などは「**すること」のように使うので削除 #936 #939 #974
|
|
234
|
+
if (removeJosiMap[josi]) { josi = '' }
|
|
235
|
+
|
|
236
|
+
// 改行を数える
|
|
237
|
+
for (let i = 0; i < res.length; i++) { if (res.charAt(i) === '\n') { numEOL++ } }
|
|
238
|
+
|
|
239
|
+
return { src: src, res: res, josi: josi, numEOL: numEOL }
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
function parseNumber (n) {
|
|
243
|
+
return Number(n.replace(/_/g, ''))
|
|
244
|
+
}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
// なでしこの字句解析を行う
|
|
2
2
|
// 既に全角半角を揃えたコードに対して字句解析を行う
|
|
3
|
-
|
|
3
|
+
import { opPriority } from './nako_parser_const.mjs'
|
|
4
4
|
|
|
5
5
|
// 予約語句
|
|
6
6
|
// (memo)「回」「間」「繰返」「反復」「抜」「続」「戻」「代入」などは replaceWord で word から変換
|
|
7
|
-
|
|
7
|
+
import reservedWords from './nako_reserved_words.mjs'
|
|
8
8
|
|
|
9
9
|
// 助詞の一覧
|
|
10
|
-
|
|
10
|
+
import { josiRE, removeJosiMap, tararebaMap } from './nako_josi_list.mjs'
|
|
11
11
|
|
|
12
12
|
// 字句解析ルールの一覧
|
|
13
|
-
|
|
14
|
-
const rules = lexRules.rules
|
|
13
|
+
import { rules, unitRE } from './nako_lex_rules.mjs'
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
import { NakoLexerError, InternalLexerError } from './nako_errors.mjs'
|
|
17
16
|
|
|
18
17
|
/**
|
|
19
18
|
* @typedef {import('./nako3').TokenWithSourceMap} TokenWithSourceMap
|
|
@@ -43,7 +42,7 @@ const { NakoLexerError, InternalLexerError } = require('./nako_errors')
|
|
|
43
42
|
* )>} FuncList
|
|
44
43
|
*/
|
|
45
44
|
|
|
46
|
-
class NakoLexer {
|
|
45
|
+
export class NakoLexer {
|
|
47
46
|
/**
|
|
48
47
|
* @param {import("./nako_logger")} logger
|
|
49
48
|
*/
|
|
@@ -508,7 +507,7 @@ class NakoLexer {
|
|
|
508
507
|
// 数値なら単位を持つか? --- #994
|
|
509
508
|
if (rule.name === 'number') {
|
|
510
509
|
// 単位があれば読み飛ばす
|
|
511
|
-
const um =
|
|
510
|
+
const um = unitRE.exec(src)
|
|
512
511
|
if (um) {
|
|
513
512
|
src = src.substring(um[0].length)
|
|
514
513
|
column += m[0].length
|
|
@@ -573,5 +572,3 @@ class NakoLexer {
|
|
|
573
572
|
return result
|
|
574
573
|
}
|
|
575
574
|
}
|
|
576
|
-
|
|
577
|
-
module.exports = NakoLexer
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* @typedef {'trace' | 'debug' | 'info' | 'warn' | 'error' | 'stdout'} LogLevel
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
import { NakoError } from './nako_errors.mjs'
|
|
7
|
+
import { NakoColors } from './nako_colors.mjs'
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @typedef {{ startOffset?: number | null, endOffset?: number | null, line?: number, file?: string }} Position
|
|
@@ -34,7 +34,7 @@ const levels = ['trace', 'debug', 'info', 'warn', 'error', 'stdout']
|
|
|
34
34
|
* trace(), debug(), info(), warn(), error() はそれぞれメッセージに `[警告]` などのタグとエラー位置の日本語表現を付けて表示する。
|
|
35
35
|
* error() は引数にエラーオブジェクトを受け取ることもでき、その場合エラーオブジェクトからエラーメッセージとエラー位置が取り出される。
|
|
36
36
|
*/
|
|
37
|
-
class NakoLogger {
|
|
37
|
+
export class NakoLogger {
|
|
38
38
|
constructor () {
|
|
39
39
|
/** @type {{ level: LogLevel, callback: LogListener, includeHigherLevels: boolean }[]} */
|
|
40
40
|
this.listeners = []
|
|
@@ -135,4 +135,3 @@ class NakoLogger {
|
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
module.exports = NakoLogger
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* nadesiko v3 parser (demo version)
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { opPriority, keizokuJosi } from './nako_parser_const.mjs'
|
|
5
|
+
import { NakoParserBase } from './nako_parser_base.mjs'
|
|
6
|
+
import { NakoSyntaxError } from './nako_errors.mjs'
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
9
|
* @type {string[]}
|
|
8
10
|
*/
|
|
@@ -15,7 +17,7 @@ for (const key in opPriority) { operatorList.push(key) }
|
|
|
15
17
|
*/
|
|
16
18
|
|
|
17
19
|
// @ts-ignore
|
|
18
|
-
class NakoParser extends NakoParserBase {
|
|
20
|
+
export class NakoParser extends NakoParserBase {
|
|
19
21
|
/**
|
|
20
22
|
* @param {TokenWithSourceMap[]} tokens 字句解析済みのトークンの配列
|
|
21
23
|
* @return {Ast} AST(構文木)
|
|
@@ -2015,5 +2017,3 @@ class NakoParser extends NakoParserBase {
|
|
|
2015
2017
|
}
|
|
2016
2018
|
}
|
|
2017
2019
|
}
|
|
2018
|
-
|
|
2019
|
-
module.exports = NakoParser
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* なでしこの構文解析のためのユーティリティクラス
|
|
3
3
|
*/
|
|
4
|
-
|
|
5
|
-
const { NakoSyntaxError } = require('./nako_errors')
|
|
6
|
-
|
|
7
|
-
class NakoParserBase {
|
|
4
|
+
export class NakoParserBase {
|
|
8
5
|
/**
|
|
9
6
|
* @param {import("./nako_logger")} logger
|
|
10
7
|
*/
|
|
@@ -264,8 +261,3 @@ class NakoParserBase {
|
|
|
264
261
|
}
|
|
265
262
|
}
|
|
266
263
|
}
|
|
267
|
-
|
|
268
|
-
module.exports = {
|
|
269
|
-
NakoParserBase,
|
|
270
|
-
NakoSyntaxError
|
|
271
|
-
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable quote-props */
|
|
2
|
-
const opPriority = {
|
|
2
|
+
export const opPriority = {
|
|
3
3
|
// and or
|
|
4
4
|
'and': 1,
|
|
5
5
|
'or': 1,
|
|
@@ -29,11 +29,7 @@ const opPriority = {
|
|
|
29
29
|
'^': 6
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
const keizokuJosi = [
|
|
32
|
+
export const keizokuJosi = [
|
|
33
33
|
'いて', 'えて', 'きて', 'けて', 'して', 'って', 'にて', 'みて', 'めて', 'ねて', 'には', 'んで'
|
|
34
34
|
]
|
|
35
35
|
|
|
36
|
-
module.exports = {
|
|
37
|
-
opPriority,
|
|
38
|
-
keizokuJosi
|
|
39
|
-
}
|
|
@@ -68,7 +68,7 @@ class Replace {
|
|
|
68
68
|
// 字句解析を行う前に全角文字を半角に揃える
|
|
69
69
|
// ただし、文字列部分だけは、そのまま全角で出力するようにする
|
|
70
70
|
// for https://github.com/kujirahand/nadesiko3/issues/94
|
|
71
|
-
class NakoPrepare {
|
|
71
|
+
export class NakoPrepare {
|
|
72
72
|
/**
|
|
73
73
|
* @param {import("./nako_logger")} logger
|
|
74
74
|
*/
|
|
@@ -294,4 +294,3 @@ class NakoPrepare {
|
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
296
|
|
|
297
|
-
module.exports = NakoPrepare
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** prepareとtokenizeのソースマッピング */
|
|
2
|
-
class SourceMappingOfTokenization {
|
|
2
|
+
export class SourceMappingOfTokenization {
|
|
3
3
|
/**
|
|
4
4
|
* @param {number} sourceCodeLength
|
|
5
5
|
* @param {{ text: string; sourcePosition: number }[]} preprocessed
|
|
@@ -62,7 +62,7 @@ class SourceMappingOfTokenization {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
class SourceMappingOfIndentSyntax {
|
|
65
|
+
export class SourceMappingOfIndentSyntax {
|
|
66
66
|
/**
|
|
67
67
|
* @param {string} codeAfterProcessingIndentationSyntax
|
|
68
68
|
* @param {readonly number[]} linesInsertedByIndentationSyntax
|
|
@@ -165,7 +165,7 @@ class SourceMappingOfIndentSyntax {
|
|
|
165
165
|
}
|
|
166
166
|
|
|
167
167
|
/** offsetから (line, column) へ変換する。 */
|
|
168
|
-
class OffsetToLineColumn {
|
|
168
|
+
export class OffsetToLineColumn {
|
|
169
169
|
/**
|
|
170
170
|
* @param {string} code
|
|
171
171
|
*/
|
|
@@ -220,7 +220,7 @@ class OffsetToLineColumn {
|
|
|
220
220
|
* preCodeの分、ソースマップのoffset、行数、列数を減らす。
|
|
221
221
|
* @type {<T extends {line?: number, column?: number, startOffset: number | null, endOffset: number | null }>(sourceMap: T, preCode: string) => T}
|
|
222
222
|
*/
|
|
223
|
-
function subtractSourceMapByPreCodeLength (sourceMap, preCode) {
|
|
223
|
+
export function subtractSourceMapByPreCodeLength (sourceMap, preCode) {
|
|
224
224
|
// offsetは単純に引くだけでよい
|
|
225
225
|
if (typeof sourceMap.startOffset === 'number') {
|
|
226
226
|
sourceMap.startOffset -= preCode.length
|
|
@@ -242,10 +242,3 @@ function subtractSourceMapByPreCodeLength (sourceMap, preCode) {
|
|
|
242
242
|
|
|
243
243
|
return sourceMap
|
|
244
244
|
}
|
|
245
|
-
|
|
246
|
-
module.exports = {
|
|
247
|
-
SourceMappingOfTokenization,
|
|
248
|
-
SourceMappingOfIndentSyntax,
|
|
249
|
-
OffsetToLineColumn,
|
|
250
|
-
subtractSourceMapByPreCodeLength
|
|
251
|
-
}
|
|
File without changes
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
// plugin_browser.js
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
3
|
+
import PartBrowserColor from './plugin_browser_color.mjs'
|
|
4
|
+
import PartBrowserSystem from './plugin_browser_system.mjs'
|
|
5
|
+
import PartBrowserDialog from './plugin_browser_dialog.mjs'
|
|
6
|
+
import PartBrowserLocation from './plugin_browser_location.mjs'
|
|
7
|
+
import PartBrowserAjax from './plugin_browser_ajax.mjs'
|
|
8
|
+
import PartBrowserDomBasic from './plugin_browser_dom_basic.mjs'
|
|
9
|
+
import PartBrowserDomEvent from './plugin_browser_dom_event.mjs'
|
|
10
|
+
import PartBrowserDomParts from './plugin_browser_dom_parts.mjs'
|
|
11
|
+
import PartBrowserHtml from './plugin_browser_html.mjs'
|
|
12
|
+
import PartBrowserStorage from './plugin_browser_storage.mjs'
|
|
13
|
+
import PartBrowserCanvas from './plugin_browser_canvas.mjs'
|
|
14
|
+
import PartBrowserGeolocation from './plugin_browser_geolocation.mjs'
|
|
15
|
+
import PartBrowserSpeech from './plugin_browser_speech.mjs'
|
|
16
|
+
import PartBrowserWebsocket from './plugin_browser_websocket.mjs'
|
|
17
|
+
import PartBrowserAudio from './plugin_browser_audio.mjs'
|
|
18
|
+
import PartBrowserHotkey from './plugin_browser_hotkey.mjs'
|
|
19
|
+
import PartBrowserChart from './plugin_browser_chart.mjs'
|
|
20
|
+
import PartBrowserCrypto from './plugin_browser_crypto.mjs'
|
|
21
21
|
|
|
22
22
|
const BrowserParts = [
|
|
23
23
|
PartBrowserColor,
|
|
@@ -56,18 +56,18 @@ const PluginBrowser = {
|
|
|
56
56
|
pure: true,
|
|
57
57
|
fn: function (sys) {
|
|
58
58
|
/* eslint no-global-assign: 0 */
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
const doc = (typeof document === 'undefined') ? {'body': {}} : document
|
|
60
|
+
const win = (typeof window === 'undefined') ? {'location': { 'href': '' }} : window
|
|
61
|
+
const nav = (typeof navigator === 'undefined') ? {} : navigator
|
|
62
62
|
|
|
63
63
|
// 定数を初期化
|
|
64
64
|
sys.__v0['AJAX:ONERROR'] = (err) => { console.log(err) }
|
|
65
65
|
// オブジェクトを初期化
|
|
66
|
-
sys.__v0.DOCUMENT =
|
|
67
|
-
sys.__v0.WINDOW =
|
|
68
|
-
sys.__v0.NAVIGATOR =
|
|
69
|
-
sys.__v0['DOM親要素'] =
|
|
70
|
-
sys.__v0['ブラウザURL'] =
|
|
66
|
+
sys.__v0.DOCUMENT = doc
|
|
67
|
+
sys.__v0.WINDOW = win
|
|
68
|
+
sys.__v0.NAVIGATOR = nav
|
|
69
|
+
sys.__v0['DOM親要素'] = doc.body
|
|
70
|
+
sys.__v0['ブラウザURL'] = win.location.href
|
|
71
71
|
|
|
72
72
|
// 便利なメソッドを定義
|
|
73
73
|
sys.__tohtml = (text) => {
|
|
@@ -88,7 +88,7 @@ const PluginBrowser = {
|
|
|
88
88
|
sys.__addEvent = (dom, event, func, setHandler) => {
|
|
89
89
|
// dom
|
|
90
90
|
if (typeof (dom) === 'string') {
|
|
91
|
-
dom =
|
|
91
|
+
dom = doc.querySelector(dom)
|
|
92
92
|
if (!dom) { throw new Error('DOMイベントが追加できません。要素が見当たりません。') }
|
|
93
93
|
}
|
|
94
94
|
// func
|
|
@@ -142,7 +142,7 @@ const PluginBrowser = {
|
|
|
142
142
|
sys.__removeEvent = (dom, event, func) => {
|
|
143
143
|
// dom
|
|
144
144
|
if (typeof (dom) === 'string') {
|
|
145
|
-
dom =
|
|
145
|
+
dom = doc.querySelector(dom)
|
|
146
146
|
if (!dom) { throw new Error('DOMイベントが削除できません。要素が見当たりません。') }
|
|
147
147
|
}
|
|
148
148
|
// func
|
|
@@ -171,7 +171,7 @@ const PluginBrowser = {
|
|
|
171
171
|
sys.__dom_events = []
|
|
172
172
|
// requestAnimationFrame
|
|
173
173
|
if (sys.__requestAnimationFrameLastId > 0) {
|
|
174
|
-
|
|
174
|
+
win.cancelAnimationFrame(sys.__requestAnimationFrameLastId)
|
|
175
175
|
sys.__requestAnimationFrameLastId = 0
|
|
176
176
|
}
|
|
177
177
|
}
|
|
@@ -202,4 +202,4 @@ BrowserParts.forEach((a) => {
|
|
|
202
202
|
Object.assign(PluginBrowser, b)
|
|
203
203
|
})
|
|
204
204
|
|
|
205
|
-
|
|
205
|
+
export default PluginBrowser
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
2
|
/* eslint-disable quote-props */
|
|
3
|
-
|
|
3
|
+
export default {
|
|
4
4
|
// @AJAXとHTTP
|
|
5
5
|
'AJAX送信時': { // @非同期通信(Ajax)でURLにデータを送信し、成功するとcallbackが実行される。その際『対象』にデータが代入される。『AJAXオプション』を指定できる。 // @AJAXそうしんしたとき
|
|
6
6
|
type: 'func',
|
|
@@ -22,7 +22,7 @@ module.exports = {
|
|
|
22
22
|
},
|
|
23
23
|
return_none: true
|
|
24
24
|
},
|
|
25
|
-
'AJAX受信': { //
|
|
25
|
+
'AJAX受信': { // @ (非推奨)『AJAXテキスト取得』をご利用ください。-「!非同期モード」で非同期通信(Ajax)でURLからデータを受信する。『AJAXオプション』を指定できる。結果は変数『対象』に入る// @AJAXじゅしん
|
|
26
26
|
type: 'func',
|
|
27
27
|
josi: [['から', 'を']],
|
|
28
28
|
pure: true,
|
|
@@ -162,7 +162,7 @@ module.exports = {
|
|
|
162
162
|
},
|
|
163
163
|
return_none: true
|
|
164
164
|
},
|
|
165
|
-
'AJAX送信': { //
|
|
165
|
+
'AJAX送信': { // @(非推奨)『AJAXテキスト取得』をご利用ください。- 逐次実行構文にて、非同期通信(Ajax)でURLにデータを送信する。成功すると『対象』にデータが代入される。 // @AJAXそうしん
|
|
166
166
|
type: 'func',
|
|
167
167
|
josi: [['まで', 'へ', 'に']],
|
|
168
168
|
pure: true,
|
|
@@ -172,7 +172,7 @@ module.exports = {
|
|
|
172
172
|
},
|
|
173
173
|
return_none: true
|
|
174
174
|
},
|
|
175
|
-
'AJAX逐次送信': { //
|
|
175
|
+
'AJAX逐次送信': { // @(非推奨)『AJAXテキスト取得』をご利用ください。- 逐次実行構文にて、非同期通信(Ajax)でURLにデータを送信する。成功すると『対象』にデータが代入される。 // @AJAXちくじそうしん
|
|
176
176
|
type: 'func',
|
|
177
177
|
josi: [['まで', 'へ', 'に']],
|
|
178
178
|
pure: true,
|
|
@@ -205,17 +205,17 @@ module.exports = {
|
|
|
205
205
|
},
|
|
206
206
|
return_none: false
|
|
207
207
|
},
|
|
208
|
-
'HTTP取得': { //
|
|
208
|
+
'HTTP取得': { // @(非推奨)『AJAXテキスト取得』をご利用ください。- 逐次実行構文にて、非同期通信(Ajax)でURLにデータを送信する。成功すると『対象』にデータが代入される。失敗すると『AJAX失敗時』を実行。 // @HTTPしゅとく
|
|
209
209
|
type: 'func',
|
|
210
210
|
josi: [['の', 'から', 'を']],
|
|
211
|
-
pure:
|
|
211
|
+
pure: true,
|
|
212
212
|
fn: function (url, sys) {
|
|
213
213
|
if (!sys.resolve) { throw new Error('『HTTP取得』は『逐次実行』構文内で利用する必要があります。') }
|
|
214
214
|
sys.__exec('AJAX逐次送信', [url, sys])
|
|
215
215
|
},
|
|
216
216
|
return_none: true
|
|
217
217
|
},
|
|
218
|
-
'HTTP逐次取得': { //
|
|
218
|
+
'HTTP逐次取得': { // @(非推奨)『AJAXテキスト取得』をご利用ください。- 逐次実行構文にて、非同期通信(Ajax)でURLにデータを送信する。成功すると『対象』にデータが代入される。失敗すると『AJAX失敗時』を実行。 // @HTTPちくじしゅとく
|
|
219
219
|
type: 'func',
|
|
220
220
|
josi: [['の', 'から', 'を']],
|
|
221
221
|
pure: false,
|