Skip to content

Commit 3bca5e0

Browse files
authored
Merge pull request #554 from wenyan-lang/master
v0.3.0
2 parents fdb6f79 + 16acc12 commit 3bca5e0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+53470
-39274
lines changed

.eslintrc.js

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
11
module.exports = {
2+
parser: "@typescript-eslint/parser",
3+
plugins: [
4+
"@typescript-eslint",
5+
"jest",
6+
],
27
parserOptions: {
3-
ecmaVersion: 2018
4-
},
8+
sourceType: "module"
9+
},
510
env: {
611
browser: true,
712
node: true,
8-
es6: true
13+
es6: true,
14+
jest: true,
915
},
1016
extends: [
1117
/* disbale rules temporary, before the codebase refactored with module system */
1218
// "eslint:recommended",
1319
"prettier",
1420
"prettier/babel"
21+
],
22+
plugins: [
23+
"html"
1524
]
1625
}

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ build/wenyan-win.exe
66
temp
77
dist
88
/tools/calendar.html
9-
藏書樓
9+
藏書樓
10+
.node-xmlhttprequest-*
11+
typings

documentation/Standard-Lib.md

+87-91
Large diffs are not rendered by default.

examples/README.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
<!-- Auto generated. DO NOT edit this file manually. -->
2-
# Examples(範例)
1+
<!-- GENERATED FILE, DO NOT MODIFY-->
2+
# Examples
33

4-
| File(文檔) | Remark(說明) |
4+
| File | Remark |
55
| -------------------------------------- | ------------------------- |
66
| [beer.wy](beer.wy) | 九十九瓶啤酒 |
7+
| [clock.wy](clock.wy) | 畫鐘 |
78
| [collatz.wy](collatz.wy) | 考拉兹猜想 |
89
| [collatz2.wy](collatz2.wy) | 考拉兹猜想二 |
910
| [divination.wy](divination.wy) | 春秋古筮法 |
@@ -26,6 +27,7 @@
2627
| [multiplication_table.wy](multiplication_table.wy) | 乘算口訣 |
2728
| [nested_fun.wy](nested_fun.wy) | 嵌套調用示例 |
2829
| [obj.wy](obj.wy) | 对象示例 |
30+
| [pascal_triangle.wy](pascal_triangle.wy) | 賈憲三角 |
2931
| [pi_leibniz.wy](pi_leibniz.wy) | 萊布尼茲圓周率估算 |
3032
| [pi_liuhui.wy](pi_liuhui.wy) | 劉徽割圓術求圓周率 |
3133
| [quicksort.wy](quicksort.wy) | 快速排序 |
@@ -39,7 +41,7 @@
3941
| [tree2.wy](tree2.wy) | 畫樹二 |
4042
| [try.wy](try.wy) | 異常處理示例 |
4143
| [turing.wy](turing.wy) | 圖靈機 |
42-
| [pascal_triangle.wy](pascal_triangle.wy) | 賈憲三角 |
44+
| [zh_sqrt.wy](zh_sqrt.wy) | 增乘開平方 |
4345

4446
[1]: https://en.wikipedia.org/wiki/Fizz_buzz
4547
[2]: https://zh.wikipedia.org/wiki/自產生程式

examples/clock.wy

+138
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
吾嘗觀「「曆法」」之書。方悟「今何紀元時」「彼時何小時」「彼刻何刻」「彼分何分」「彼秒何秒」之義。
2+
吾嘗觀「「畫譜」」之書。方悟「備紙」「擇筆」「蘸色」「落筆」「運筆」「提筆」「設色」「裱畫」之義。
3+
吾嘗觀「「算經」」之書。方悟「倍圓周率」「正弦」「餘弦」之義。
4+
5+
施「今何紀元時」。名之曰「紀元時」。
6+
施「彼時何小時」於「紀元時」。名之曰「小時」。
7+
施「彼刻何刻」於「紀元時」。名之曰「刻」。
8+
施「彼分何分」於「紀元時」。名之曰「分」。
9+
施「彼秒何秒」於「紀元時」。名之曰「秒」。
10+
11+
有數四百。名之曰「紙縱」。
12+
有數四百。名之曰「紙橫」。
13+
除二於「紙縱」。名之曰「半縱」。
14+
除二於「紙橫」。名之曰「半橫」。
15+
吾有一數。名之曰「比例」。
16+
17+
若「半橫」小於「半縱」者。
18+
昔之「比例」者。今「半橫」是矣。
19+
若非。
20+
昔之「比例」者。今「半縱」是矣。
21+
云云。
22+
23+
吾有一術。名之曰「縱坐標」。欲行是術。必先得一數。曰「南」。是術曰。
24+
乘「南」以「比例」。減其於「半縱」。乃得矣。
25+
是謂「縱坐標」之術也。
26+
27+
吾有一術。名之曰「橫坐標」。欲行是術。必先得一數。曰「東」。是術曰。
28+
乘「東」以「比例」。減其於「半橫」。乃得矣。
29+
是謂「橫坐標」之術也。
30+
31+
吾有一術。名之曰「極坐標」。欲行是術。必先得二數。曰「距」。曰「角」。是術曰。
32+
施「餘弦」於「角」。乘其以「距」。取一以施「縱坐標」。名之曰「縱」。
33+
施「正弦」於「角」。乘其以「距」。取一以施「橫坐標」。名之曰「橫」。
34+
吾有一物。名之曰「坐標」。其物如是。
35+
物之「「橫」」者。數曰「橫」。
36+
物之「「縱」」者。數曰「縱」。
37+
是謂「坐標」之物也。乃得「坐標」。
38+
是謂「極坐標」之術也。
39+
40+
吾有一術。名之曰「畫鐘面」。
41+
欲行是術。必先得一物。曰「紙」。一數。曰「半徑」。
42+
是術曰。
43+
44+
有數一千零二十四。名之曰「割圓」。
45+
夫「半徑」。夫零。取二以施「極坐標」。名之曰「始坐標」。
46+
夫「紙」。夫「始坐標」之「「橫」」。夫「始坐標」之「「縱」」。取三以施「落筆」。
47+
48+
有數一。名之曰「甲」。
49+
為是「割圓」遍。
50+
除「甲」以「割圓」。乘其以「倍圓周率」。名之曰「乙」。
51+
夫「半徑」。夫「乙」。取二以施「極坐標」。名之曰「坐標」。
52+
夫「紙」。夫「坐標」之「「橫」」。夫「坐標」之「「縱」」。取三以施「運筆」。
53+
加「甲」以一。昔之「甲」者。今其是矣。
54+
云云。
55+
56+
施「蘸色」於「紙」於「「鈦白」」。
57+
施「設色」於「紙」。
58+
施「蘸色」於「紙」於「「黑」」。
59+
施「提筆」於「紙」。
60+
61+
有數零。名之曰「丙」。
62+
63+
為是六十遍。
64+
除「丙」以六十。乘其以「倍圓周率」。名之曰「丁」。
65+
夫「半徑」。夫「丁」。取二以施「極坐標」。名之曰「正刻外坐標」。
66+
夫「紙」。夫「正刻外坐標」之「「橫」」。夫「正刻外坐標」之「「縱」」。取三以施「落筆」。
67+
乘九分五於「半徑」。夫「丁」。取二以施「極坐標」。名之曰「正刻內坐標」。
68+
夫「紙」。夫「正刻內坐標」之「「橫」」。夫「正刻內坐標」之「「縱」」。取三以施「運筆」。
69+
施「提筆」於「紙」。
70+
71+
加「丙」以一。昔之「丙」者。今其是矣。
72+
云云。
73+
74+
75+
有數零。名之曰「丙」。
76+
77+
為是十二遍。
78+
除「丙」以十二。乘其以「倍圓周率」。名之曰「戊」。
79+
夫「半徑」。夫「戊」。取二以施「極坐標」。名之曰「初刻外坐標」。
80+
夫「紙」。夫「初刻外坐標」之「「橫」」。夫「初刻外坐標」之「「縱」」。取三以施「落筆」。
81+
乘八分五於「半徑」。夫「戊」。取二以施「極坐標」。名之曰「初刻內坐標」。
82+
夫「紙」。夫「初刻內坐標」之「「橫」」。夫「初刻內坐標」之「「縱」」。取三以施「運筆」。
83+
施「提筆」於「紙」。
84+
85+
加「丙」以一。昔之「丙」者。今其是矣。
86+
云云。
87+
88+
是謂「畫鐘面」之術也。
89+
90+
吾有一術。名之曰「畫指針」。
91+
欲行是術。必先得一物。曰「紙」。五數。曰「角」。曰「針長」。曰「尾長」。曰「針角」。曰「尾角」。
92+
是術曰。
93+
94+
夫「針長」。加「針角」於「角」。取二以施「極坐標」。名之曰「甲」。
95+
乘負一於「尾長」。減「尾角」於「角」。取二以施「極坐標」。名之曰「乙」。
96+
乘負一於「尾長」。加「尾角」於「角」。取二以施「極坐標」。名之曰「丙」。
97+
夫「針長」。減「針角」於「角」。取二以施「極坐標」。名之曰「丁」。
98+
99+
夫「紙」。夫「甲」之「「橫」」。夫「甲」之「「縱」」。取三以施「落筆」。
100+
夫「紙」。夫「乙」之「「橫」」。夫「乙」之「「縱」」。取三以施「運筆」。
101+
夫「紙」。夫「丙」之「「橫」」。夫「丙」之「「縱」」。取三以施「運筆」。
102+
夫「紙」。夫「丁」之「「橫」」。夫「丁」之「「縱」」。取三以施「運筆」。
103+
夫「紙」。夫「甲」之「「橫」」。夫「甲」之「「縱」」。取三以施「運筆」。
104+
105+
施「蘸色」於「紙」於「「花青」」。
106+
施「設色」於「紙」。
107+
108+
是謂「畫指針」之術也。
109+
110+
吾有一術。名之曰「执笔」。是術曰。
111+
112+
施「(()=>document.getElementById("out").innerHTML="")」。
113+
施「今何紀元時」。名之曰「紀元時」。
114+
施「彼時何小時」於「紀元時」。名之曰「時」。
115+
施「彼分何分」於「紀元時」。名之曰「分」。
116+
施「彼刻何刻」於「紀元時」。名之曰「刻」。
117+
施「彼秒何秒」於「紀元時」。名之曰「秒」。
118+
119+
乘「刻」以十五。加其於「分」。昔之「分」者。今其是矣。
120+
121+
除「秒」以六十。加其於「分」。昔之「分」者。今其是矣。
122+
除「分」以六十。加其於「時」。昔之「時」者。今其是矣。
123+
124+
除「分」以六十。乘其以「倍圓周率」。乘其以負一。名之曰「分角」。
125+
除「時」以十二。乘其以「倍圓周率」。乘其以負一。名之曰「時角」。
126+
除「秒」以六十。乘其以「倍圓周率」。乘其以負一。名之曰「秒角」。
127+
128+
129+
施「備紙」於「紙橫」。於「紙縱」。名之曰「紙」。
130+
施「畫鐘面」於「紙」。於九分。
131+
施「畫指針」於「紙」。於「秒角」。於八分。於一分。於三毫。於一分。
132+
施「畫指針」於「紙」。於「分角」。於七分五釐。於一分。於三毫。於三分。
133+
施「畫指針」於「紙」。於「時角」。於五分五釐。於八釐。於五毫。於五分。
134+
施「裱畫」於「紙」於「「out」」。
135+
136+
是謂「执笔」之術也。
137+
138+
施「(x=>setInterval(x, 500))」於「执笔」。

examples/zh_sqrt.wy

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
吾嘗觀『算經』之書。方悟「取底除」之義。
2+
3+
吾有一術。名之曰「增乘開平方」。欲行是術。必先得一數。曰「實」。乃行是術曰。
4+
注曰。『增乘開平方法,以商數乘下法遞增求之。』。
5+
吾有四數。名之曰「果」曰「商」曰「餘」曰「廉」。有數一。名之曰「法」。
6+
恆為是。施「取底除」於「實」於「法」。若其之『商』小於百者乃止也。
7+
乘「法」以百。昔之「法」者。今其是矣云云。
8+
恆為是。若「法」不大於零者乃止也。
9+
乘「果」以十。昔之「果」者。今其是矣。
10+
加「廉」以「商」。乘其以十。昔之「廉」者。今其是矣。
11+
施「取底除」於「實」於「法」。名之曰「甲」。
12+
昔之「實」者。今「甲」之『商』是矣。
13+
昔之「餘」者。今「甲」之『餘』是矣。
14+
昔之「商」者。今零是矣。
15+
恆為是。加「廉」以「商」。乘其以「商」。若其不小於「實」者乃止也。
16+
加「商」以一。昔之「商」者。今其是矣云云。
17+
加「廉」以「商」。乘其以「商」。若其大於「實」者。
18+
減「商」以一。昔之「商」者。今其是矣云云。
19+
加「廉」以「商」。昔之「廉」者。今其是矣。
20+
加「果」以「商」。昔之「果」者。今其是矣。
21+
乘「商」以「廉」。減「實」以其。乘其以「法」。加其以「餘」。昔之「實」者。今其是矣。
22+
施「取底除」於「法」於百。昔之「法」者。今其之『商』是矣云云。
23+
注曰。『商第一位。上商得數以乘下法為乘方。命上商除實。上商得數以乘下法入乘方。一退為廉,下法再退。』。
24+
注曰。『商第二位。商得數以乘下法為隅。命上商除實訖。以上商乘下法入隅,皆名曰廉。一退,下法再退,以求第三位商。』。
25+
注曰。『商第三位。用法如第二位求之。』。
26+
乃得 「果」。
27+
是謂「增乘開平方」之術也。
28+
29+
噫。施「增乘開平方」於七萬一千八百二十四。書之。
30+
注曰。『楊輝算草』。

jest.config.js

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module.exports = {
2+
roots: [
3+
'<rootDir>/test',
4+
],
5+
testMatch: [
6+
'**/__tests__/**/*.+(ts|tsx|js)',
7+
'**/?(*.)+(spec|test).+(ts|tsx|js)',
8+
],
9+
transform: {
10+
'^.+\\.(ts|tsx)$': 'ts-jest',
11+
},
12+
}

lib/js/格物.wy

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
疏曰「「此法可以變數為鍵。」」
2+
今有一術。名之曰「取物」。
3+
昔之「取物」者。今「function(arr){if(typeof(arr)=='object'){return function(key){return arr[key];}}else{throw new TypeError('應與之以物。');}}」是矣。
4+
今有一術。名之曰「置物」。
5+
昔之「置物」者。今「function(arr){if(typeof(arr)=='object'){return function(key){return function(value){arr[key]=value;}}}else{throw new TypeError('應與之以物。');}}」是矣。

lib/列經.wy

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@
6464
充「尾」以「丁」
6565
也。
6666
云云。
67-
施「快排」於「首」。昔之「首」者。今其是矣。
68-
施「快排」於「尾」。昔之「尾」者。今其是矣。
67+
施「排序」於「甲」於「首」。昔之「首」者。今其是矣。
68+
施「排序」於「甲」於「尾」。昔之「尾」者。今其是矣。
6969

7070
銜「首」以「頷」以「尾」。名之曰「丙」。
7171
乃得「丙」。

0 commit comments

Comments
 (0)