Skip to content

Commit 3b31c4c

Browse files
authored
Merge pull request #432 from LingDong-/docs/stdlib
docs: add script for building standard lib docs
2 parents 50f5bd3 + 43be742 commit 3b31c4c

File tree

7 files changed

+253
-5
lines changed

7 files changed

+253
-5
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,10 @@ Arrays are 1-indexed.
207207

208208
### Advance Features
209209

210+
- [Standard Library](./documentation/Standard-Lib.md)
210211
- [Try...Catch](./documentation/Try-Catch.md)
211212
- [Nested Function Calls](./documentation/Nested-Function-Calls.md)
212-
- [Importing and Standard Library](./documentation/Importing.md)
213+
- [Importing](./documentation/Importing.md)
213214

214215
## Renderer
215216

documentation/Standard-Lib.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<!-- GENERATED FILE, DO NOT MODIFY-->
2+
3+
[Back to README](../README.md)
4+
5+
# Standard Library Cheatsheet
6+
7+
Last updated: Mon, 30 Dec 2019 15:32:37 GMT
8+
9+
10+
## Usage
11+
12+
```
13+
吾嘗觀「「算經」」之書。方悟「正弦」「餘弦」「圓周率」之義。
14+
```
15+
16+
## [易經](../lib/易經.wy)
17+
18+
| Wenyan | Javascript Equivalent |
19+
|---|---|
20+
21+
## [算經](../lib/算經.wy)
22+
23+
| Wenyan | Javascript Equivalent |
24+
|---|---|
25+
| [`圓周率`](../lib/算經.wy#L166) | `Math.PI` |
26+
| [`倍圓周率`](../lib/算經.wy#L169) | `Math.PI * 2` |
27+
| [`半圓周率`](../lib/算經.wy#L172) | `Math.PI / 2` |
28+
| [`四分圓周率`](../lib/算經.wy#L175) | `Math.PI / 4` |
29+
| [`自然常數`](../lib/算經.wy#L177) | `Math.E` |
30+
| [`歐拉常數`](../lib/算經.wy#L179) | `0.5772156649015329` |
31+
| [`黃金分割數`](../lib/算經.wy#L181) | `1.618033988749895` |
32+
| [`二之平方根`](../lib/算經.wy#L183) | `Math.SQRT2` |
33+
| [`二之對數`](../lib/算經.wy#L185) | `Math.LN2` |
34+
| [`十之對數`](../lib/算經.wy#L187) | `Math.LN10` |
35+
| [`不可算數乎`](../lib/算經.wy#L190) | `Number.isNaN` |
36+
| [`浮點移位`](../lib/算經.wy#L392) | `x * Math.pow(2, y), y is integer` |
37+
| [`析浮點數`](../lib/算經.wy#L428) | `N/A` |
38+
| [`正弦`](../lib/算經.wy#L472) | `Math.sin` |
39+
| [`餘弦`](../lib/算經.wy#L502) | `Math.cos` |
40+
| [`反正弦`](../lib/算經.wy#L510) | `Math.asin` |
41+
| [`反餘弦`](../lib/算經.wy#L537) | `Math.acos` |
42+
| [`正切`](../lib/算經.wy#L544) | `Math.tan` |
43+
| [`反正切`](../lib/算經.wy#L581) | `Math.atan` |
44+
| [`勾股求角`](../lib/算經.wy#L615) | `Math.atan2` |
45+
| [`勾股求弦`](../lib/算經.wy#L633) | `Math.hypot` |
46+
| [`對數`](../lib/算經.wy#L670) | `Math.log` |
47+
| [`指數`](../lib/算經.wy#L713) | `Math.exp` |
48+
| [``](../lib/算經.wy#L749) | `Math.pow` |
49+
| [`平方根`](../lib/算經.wy#L773) | `Math.sqrt` |
50+
| [`絕對`](../lib/算經.wy#L834) | `Math.abs` |
51+
| [`取頂`](../lib/算經.wy#L839) | `Math.ceil` |
52+
| [`取底`](../lib/算經.wy#L844) | `Math.floor` |
53+
| [`取整`](../lib/算經.wy#L859) | `Math.round, but rounded away from zero when the fractional part is exactly 0.5` |
54+
| [`捨餘`](../lib/算經.wy#L873) | `Math.trunc` |
55+
| [`正負`](../lib/算經.wy#L883) | `Math.sign` |
56+
57+
## [籌經](../lib/籌經.wy)
58+
59+
| Wenyan | Javascript Equivalent |
60+
|---|---|
61+
| [`求和`](../lib/籌經.wy#L1) | `reduce((a,b)=>a+b)` |
62+
63+
## [位經](../lib/js/位經.wy)
64+
65+
| Wenyan | Javascript Equivalent |
66+
|---|---|
67+
68+
69+
70+
71+
## Help update this cheatsheet
72+
73+
This cheatsheet is generated direct from stdlibs. There are still a lot of functions are not listed above. If you would like to hep update this cheatsheet, here is the steps.
74+
75+
Add comments in the stdlib files (one line above the function/value), the format should look like this:
76+
```
77+
注曰「「餘弦。同Javascript之Math.cos也。」」
78+
```
79+
80+
After you fill the comments, you need to update the document by running
81+
```bash
82+
npm run docs:update
83+
```
84+
85+
Check the output document out and submit a pull request. Thank you!

lib/js/位經.wy

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,39 @@
1+
疏曰「「左移。同犀之x<<y也。」」
12
今有一術。名之曰「左移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
23
施「(x=>y=>(x<<y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
34
是謂「左移」之術也。
45

6+
疏曰「「右移。同犀之x>>y也。」」
57
今有一術。名之曰「右移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
68
施「(x=>y=>(x>>y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
79
是謂「右移」之術也。
810

11+
疏曰「「補零右移。同犀之x>>>y也。」」
912
今有一術。名之曰「補零右移」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
1013
施「(x=>y=>(x>>>y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
1114
是謂「補零右移」之術也。
1215

16+
疏曰「「位与。同犀之x&y也。」」
1317
今有一術。名之曰「位与」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
1418
施「(x=>y=>(x&y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
1519
是謂「位与」之術也。
1620

21+
疏曰「「位或。同犀之x|y也。」」
1722
今有一術。名之曰「位或」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
1823
施「(x=>y=>(x|y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
1924
是謂「位或」之術也。
2025

26+
疏曰「「异或。同犀之x^y也。」」
2127
今有一術。名之曰「异或」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
2228
施「(x=>y=>(x^y))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
2329
是謂「异或」之術也。
2430

31+
疏曰「「与非。同犀之~(x&y)也。」」
2532
今有一術。名之曰「与非」。欲行是術。必先得二數。曰「甲」。曰「乙」。乃行是術曰。
2633
施「(x=>y=>(~(x&y)))」於「甲」。於「乙」。名之曰「丙」。乃得「丙」。
2734
是謂「与非」之術也。
2835

36+
疏曰「「位變。同犀之~x也。」」
2937
今有一術。名之曰「位變」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
3038
施「(x=>y=>(~x))」於「甲」。名之曰「乙」。乃得「乙」。
3139
是謂「位變」之術也。

lib/算經.wy

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,20 +163,31 @@
163163
是謂「盤古」之術也。
164164
施「盤古」。
165165

166+
注曰「「圓周率。同Javascript之Math.PI也。」」
166167
今有一數。曰「假圓周率」。名之曰「圓周率」。注曰「「圓周率者。三又一分四釐一毫有奇也。」」
167168
乘二於「圓周率」。名之曰「假倍圓周率」。
169+
注曰「「倍圓周率。同Javascript之Math.PI * 2也。」」
168170
今有一數。曰「假倍圓周率」。名之曰「倍圓周率」。
169171
除二於「圓周率」。名之曰「假半圓周率」。
172+
注曰「「半圓周率。同Javascript之Math.PI / 2也。」」
170173
今有一數。曰「假半圓周率」。名之曰「半圓周率」。
171174
除四於「圓周率」。名之曰「假四分圓周率」。
175+
注曰「「四分圓周率。同Javascript之Math.PI / 4也。」」
172176
今有一數。曰「假四分圓周率」。名之曰「四分圓周率」。
177+
注曰「「自然常數。同Javascript之Math.E也。」」
173178
今有一數。曰「假自然常數」。名之曰「自然常數」。注曰「「自然常數者。二又七分一釐八毫有奇也。」」
179+
注曰「「歐拉常數。同Javascript之0.5772156649015329也。」」
174180
今有一數。曰「假歐拉常數」。名之曰「歐拉常數」。注曰「「歐拉常數者。五分七釐七毫二絲有奇也。」」
181+
注曰「「黃金分割數。同Javascript之1.618033988749895也。」」
175182
今有一數。曰「假黃金分割數」。名之曰「黃金分割數」。注曰「「黃金分割數者。一又六分一釐八毫有奇也。」」
183+
注曰「「二之平方根。同Javascript之Math.SQRT2也。」」
176184
今有一數。曰「假二之平方根」。名之曰「二之平方根」。注曰「「二之平方根者。一又四分一釐四毫有奇也。」」
185+
注曰「「二之對數。同Javascript之Math.LN2也。」」
177186
今有一數。曰「假二之對數」。名之曰「二之對數」。注曰「「二之對數者。六分九釐三毫一絲有奇也。」」
187+
注曰「「十之對數。同Javascript之Math.LN10也。」」
178188
今有一數。曰「假十之對數」。名之曰「十之對數」。注曰「「十之對數者。二又三分零釐二毫有奇也。」」
179189

190+
注曰「「不可算數乎。同Javascript之Number.isNaN也。」」
180191
今有一術。名之曰「不可算數乎」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
181192
若「甲」等於「甲」者。乃得陰。
182193
若非。乃得陽也。
@@ -378,6 +389,7 @@
378389
云云。
379390
是謂「求多項式」之術也。
380391

392+
注曰「「浮點移位。同Javascript之x * Math.pow(2, y), y is integer也。」」
381393
今有一術。名之曰「浮點移位」。欲行是術。必先得二數。曰「本」。曰「位」。乃行是術曰。
382394
注曰「「位正則進位。負則退位。」」
383395
若「位」不大於「至大指」者。若「位」不小於「至小指」者。
@@ -413,6 +425,7 @@
413425
云云。
414426
是謂「浮點移位」之術也。
415427

428+
注曰「「析浮點數。同Javascript之N/A也。」」
416429
今有一術。名之曰「析浮點數」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
417430
注曰「「是術得一物。物有三數。曰符。曰位。曰本。符者。正負也。位者。進退位也。本者。本數也。」」
418431
注曰「「設計算機二進。若施是術於負六。乃得符負一。位二。本一又五分。」」
@@ -456,6 +469,7 @@
456469
云云。
457470
是謂「析浮點數」之術也。
458471

472+
注曰「「正弦。同Javascript之Math.sin也。」」
459473
今有一術。名之曰「正弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。
460474
注曰「「數小甚矣。乃得其身。否則以泰勒展開求之。復以週期性得其餘。」」
461475

@@ -485,14 +499,15 @@
485499

486500
是謂「正弦」之術也。
487501

502+
注曰「「餘弦。同Javascript之Math.cos也。」」
488503
今有一術。名之曰「餘弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。
489504
注曰「「餘弦者。蓋正弦之變化所得。」」
490505

491506
加「甲」以「半圓周率」。取一以施「正弦」。乃得矣。
492507

493508
是謂「餘弦」之術也。
494509

495-
510+
注曰「「反正弦。同Javascript之Math.asin也。」」
496511
今有一術。名之曰「反正弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。
497512
注曰「「Abramowitz & Stegun 書中所述之法」」
498513
若「甲」小於零者。
@@ -519,14 +534,14 @@
519534

520535
是謂「反正弦」之術也。
521536

522-
537+
注曰「「反餘弦。同Javascript之Math.acos也。」」
523538
今有一術。名之曰「反餘弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。
524539
注曰「「反餘弦者。蓋反正弦之變化所得。」」
525540
減零以「甲」。取一以施「反正弦」。加其以「半圓周率」。乃得矣。
526541

527542
是謂「反餘弦」之術也。
528543

529-
544+
注曰「「正切。同Javascript之Math.tan也。」」
530545
今有一術。名之曰「正切」。欲行是術。必先得一數曰「甲」。乃行是術曰。
531546
注曰「「數小甚矣。乃得其身。居零與二十二度三十分之間者。以泰勒展開求之。其餘或以三角恆等式。或以週期性可得。」」
532547

@@ -563,7 +578,7 @@
563578

564579
是謂「正切」之術也。
565580

566-
581+
注曰「「反正切。同Javascript之Math.atan也。」」
567582
今有一術。名之曰「反正切」。欲行是術。必先得一數曰「甲」。乃行是術曰。
568583
注曰「「數小甚矣。乃得其身。小於二減根號三者。以泰勒展開求之。其餘以三角恆等式變化可得。」」
569584

@@ -597,6 +612,7 @@
597612
是謂「反正切」之術也。
598613

599614

615+
注曰「「勾股求角。同Javascript之Math.atan2也。」」
600616
今有一術。名之曰「勾股求角」。欲行是術。必先得二數曰「甲」。曰「乙」。乃行是術曰。
601617
注曰「「反正切之分類討論也」」
602618

@@ -614,6 +630,7 @@
614630
是謂「勾股求角」之術也。
615631

616632

633+
注曰「「勾股求弦。同Javascript之Math.hypot也。」」
617634
今有一術。名之曰「勾股求弦」。欲行是術。必先得二數曰「勾」。曰「股」。乃行是術曰。
618635
施「絕對」於「勾」。名之曰「甲」。
619636
施「絕對」於「股」。名之曰「乙」。
@@ -650,6 +667,7 @@
650667
除一以十九。充「對數多項式甲」以其。
651668
注曰「「 x^2 * f(x^2) = atanh(x)/x - 1 」」
652669

670+
注曰「「對數。同Javascript之Math.log也。」」
653671
今有一術。名之曰「對數」。欲行是術。必先得一數曰「甲」。乃行是術曰。
654672
注曰「「自然對數。」」
655673
有爻陽。名之曰「非常」。
@@ -692,6 +710,7 @@
692710
除負一千三百八十二以六億三千八百五十一萬二千八百七十五。充「指數多項式甲」以其。
693711
注曰「「 x^2 * f(x^2) = x/tanh(x) - 1 」」
694712

713+
注曰「「指數。同Javascript之Math.exp也。」」
695714
今有一術。名之曰「指數」。欲行是術。必先得一數曰「甲」。乃行是術曰。
696715
注曰「「自然指數。」」
697716
有爻陽。名之曰「非常」。
@@ -727,6 +746,7 @@
727746
施「浮點移位」於「庚」。於「移位數」。乃得矣。
728747
是謂「指數」之術也。
729748

749+
注曰「「冪。同Javascript之Math.pow也。」」
730750
今有一術。名之曰「冪」。欲行是術。必先得二數。曰「底」。曰「指」。乃行是術曰。
731751
注曰「「小數部借指數算之。整數部死算可矣。」」
732752

@@ -750,6 +770,7 @@
750770
減一於「二之平方根」。乘其以二。名之曰「平方根常數乙」。
751771
乘「上位冪」於「微位冪」。乘其以「進制」。乘其以「進制」。名之曰「平方根下溢界」。
752772

773+
注曰「「平方根。同Javascript之Math.sqrt也。」」
753774
今有一術。名之曰「平方根」。欲行是術。必先得一數曰「甲」。乃行是術曰。
754775
有爻陽。名之曰「非常」。
755776
若「甲」不小於「平方根下溢界」者。若「甲」小於「巨位冪」者。
@@ -810,14 +831,17 @@
810831
乃得「乙」。
811832
是謂「平方根」之術也。
812833

834+
注曰「「絕對。同Javascript之Math.abs也。」」
813835
今有一術。名之曰「絕對」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
814836
施「正負」於「甲」。名之曰「符」。乘「符」於「甲」。乃得矣。
815837
是謂「絕對」之術也。
816838

839+
注曰「「取頂。同Javascript之Math.ceil也。」」
817840
今有一術。名之曰「取頂」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
818841
乘負一於「甲」。取一以施「取底」。乘其以負一。乃得矣。
819842
是謂「取頂」之術也。
820843

844+
注曰「「取底。同Javascript之Math.floor也。」」
821845
今有一術。名之曰「取底」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
822846
施「正負」於「甲」。名之曰「符」。乘「符」於「甲」。名之曰「乙」。
823847
注曰「「JavaScript者。除負以正。所餘負也。Python者。除負以正。所餘正也。」」
@@ -832,6 +856,7 @@
832856
乃得「甲」也。
833857
是謂「取底」之術也。
834858

859+
注曰「「取整。同Javascript之Math.round, but rounded away from zero when the fractional part is exactly 0.5也。」」
835860
今有一術。名之曰「取整」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
836861
施「正負」於「甲」。名之曰「符」。乘「符」於「甲」。名之曰「乙」。
837862
除「乙」以一。所餘幾何。名之曰「丙」。
@@ -845,6 +870,7 @@
845870
乃得「甲」也。
846871
是謂「取整」之術也。
847872

873+
注曰「「捨餘。同Javascript之Math.trunc也。」」
848874
今有一術。名之曰「捨餘」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
849875
施「正負」於「甲」。名之曰「符」。乘「符」於「甲」。名之曰「乙」。
850876
除「乙」以一。所餘幾何。名之曰「丙」。
@@ -854,6 +880,7 @@
854880
乃得「甲」也。
855881
是謂「捨餘」之術也。
856882

883+
注曰「「正負。同Javascript之Math.sign也。」」
857884
今有一術。名之曰「正負」。欲行是術。必先得一數。曰「甲」。乃行是術曰。
858885
若「甲」大於零者。乃得一也。
859886
若「甲」小於零者。乃得負一也。

lib/籌經.wy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
注曰「「求和。同Javascript之reduce((a,b)=>a+b)也。」」
12
今有一術。名之曰「求和」。欲行是術。必先得一列。曰「列」。乃行是術曰。
23
吾有一數。曰零。名之曰「和」。凡「列」中之「數」。加「和」以「數」。
34
名之曰「和」。云云。乃得「和」。是謂「求和」之術也。

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
"publish": "bump --commit && node ./tools/publish.js",
2626
"publish:ci": "node ./tools/publish.js",
2727
"release": "bump --commit --tag && git push --follow-tags",
28+
"docs:update": "node ./tools/stdlib_doc.js",
2829
"make_ide": "node ./tools/make_ide.js",
2930
"make_site": "node ./tools/make_site.js",
3031
"ide:dev": "nodemon --ignore build,dist ./tools/make_ide.js",

0 commit comments

Comments
 (0)