Skip to content

Commit e9453d2

Browse files
committed
Merge branch 'release' of https://github.com/LingDong-/wenyan-lang into release
2 parents 28020ec + ad913f2 commit e9453d2

30 files changed

+1955
-966
lines changed

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2019 Lingdong Huang
3+
Copyright (c) 2019-present Lingdong Huang
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
# 文言 wenyan-lang
44

5+
[![npm](https://img.shields.io/npm/v/@wenyanlang/core)](https://www.npmjs.com/package/@wenyanlang/core)
6+
[![build](https://img.shields.io/github/workflow/status/LingDong-/wenyan-lang/Build%20%26%20Test)](https://github.com/LingDong-/wenyan-lang/actions)
7+
58
[http://wenyan-lang.lingdong.works](http://wenyan-lang.lingdong.works)
69

710
English | [简体中文](./README.zh-Hans.md) | [繁体中文](./README.zh-Hant.md)

documentation/Compiler-API.md

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { compile } from '@wenyanlang/core'
2727

2828
### Browsers
2929

30-
You can add following lind to the head of your html body.
30+
You can add the following line to the head of your html body.
3131

3232
```html
3333
<script src='https://unpkg.com/@wenyanlang/core/index.min.js'></script>
@@ -44,28 +44,53 @@ const compiled = Wenyan.compile('吾有一言。曰「「問天地好在。」
4444

4545
- core
4646
- [compile](#compile)
47+
- [execute](#execute)
48+
49+
### Execute
50+
51+
[Source](../src/parser.js)
52+
53+
```ts
54+
function execute(source: string, options?: ExecuteOptions)
55+
```
56+
57+
**Parameters**
58+
59+
| Name | Type | Note |
60+
| --- | --- | --- |
61+
| source | string | The Wenyan source code |
62+
| options | object | [Execute Options](#Execute-Options) |
4763

4864
### Compile
4965

5066
[Source](../src/parser.js)
5167

5268
```ts
53-
function compile(targetLang: string, source: string, options?: CompilerOptions)
69+
function compile(source: string, options?: CompilerOptions)
5470
```
5571

5672
**Parameters**
5773

5874
| Name | Type | Note |
5975
| --- | --- | --- |
60-
| targetLang | string | Can be `js`, `py` or `rb` |
6176
| source | string | The Wenyan source code |
6277
| options | object | [Compiler Options](#Compiler-Options) |
6378

64-
### Compiler Options
79+
#### Compiler Options
6580

6681
| Fields | Default Value | Note |
6782
| --- | --- | --- |
83+
| lang | `js` | Target language, can be `js`, `py` or `rb` |
6884
| romanizeIdentifiers | none | Romanize variable identifiers (e.g. `` to `JIA2`) |
6985
| resetVarCnt | false | Reset temporary variable counter |
7086
| logCallback | console.log | Get verbose debug log |
71-
| errorLog | process.exit | Error log |
87+
| errorLog | process.exit | Error log |
88+
89+
#### Execute Options
90+
91+
Execute Options extends all field in [Compiler Options](#Compiler-Options)
92+
93+
| Fields | Default Value | Note |
94+
| --- | --- | --- |
95+
| outputHanzi | true | Convert numbers and bools to Hanzi |
96+
| output | `console.log` | You can redirect the output if you don't want to use `console.log` |

documentation/Runtime.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
You can now run Wenyan as normal Javscript script right in your html.
66

7-
[**Check out the demo**](https://jsfiddle.net/antfu/u532ny49/2/)
7+
[**Check out the demo**](https://jsfiddle.net/antfu/u532ny49/)
88

99
## Installation
1010

@@ -47,6 +47,16 @@ You can import remote scripts as you will do for Javascript.
4747
<script type="application/wenyan" src="https://raw.githubusercontent.com/LingDong-/wenyan-lang/master/examples/fizzbuzz.wy"></script>
4848
```
4949

50+
### Outputing Hanzi
51+
52+
By default, it will convert numbers and bools to hanzi. If you want to output raw numbers, you can specify `ouputHanzi="false"` in attr of script tag.
53+
54+
```html
55+
<script type="application/wenyan" ouputHanzi="false">
56+
吾有一數。曰三。書之。
57+
</script>
58+
```
59+
5060
### DOM Hacks
5161

5262
There are some hacks you can do to access the DOM and browser APIs. This allows wenyan to do some realworld applications.

documentation/Testing.md

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@
44

55
This project uses [Mocha](https://mochajs.org/) and [Chai](https://www.chaijs.com/) for unit testing and snapshot testing.
66

7-
You will need to build first
8-
9-
```bash
10-
npm run build
11-
```
12-
13-
Then you can run all the tests by
7+
You can run all the tests by
148

159
```bash
1610
npm test

examples/README.md

Lines changed: 41 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,44 @@
1-
1+
<!-- Auto generated. DO NOT edit this file manually. -->
22
# Examples(範例)
33

4-
| File(文檔) | Remark(說明) |
5-
| -------------------------- | ----------------------- |
6-
| [beer.wy][3] | while |
7-
| [collatz.wy][4] | 角谷猜想 |
8-
| [collatz2.wy][5] | 考拉兹猜想(角谷猜想) |
9-
| [divination.wy][6] | 春秋古筮法 |
10-
| [eightqueens.wy][7] | 八皇后問題 |
11-
| [euclidean.wy][8] | 歐幾里得法 |
12-
| [factorial.wy][9] | 階乘 |
13-
| [fibonacci.wy][10] | 斐波那契 |
14-
| [fibonacci2.wy][11] | 斐氏列 |
15-
| [fizzbuzz.wy][12] | [Fizz buzz][1] |
16-
| [hanoi.wy][13] | 漢諾塔 |
17-
| [helloworld.wy][14] | 問天地好在 |
18-
| [helloworld+.wy][15] | 問天地好在+ |
19-
| [import.wy][16] | 導入 |
20-
| [mandelbrot.wy][17] | 曼德博集 |
21-
| [mergesort.wy][18] | 歸併排序 |
22-
| [misc.wy][19] | 雜項 |
23-
| [modinv.wy][20] | 大衍求一術 |
24-
| [multiplication_table.wy][21] | 乘算口訣 |
25-
| [nested_fun.wy][22] | 函数 |
26-
| [obj.wy][23] | 对象 |
27-
| [pi_leibniz.wy][24] | 萊布尼茲圓周率估算 |
28-
| [pi_liuhui.wy][25] | 劉徽割圓術求圓周率 |
29-
| [quicksort.wy][26] | 快速排序 |
30-
| [quicksort_inplace.wy][27] | 快速排序2 |
31-
| [quine.wy][28] | [自產生程式][2] |
32-
| [quine2.wy][29] | 自產生程式2 |
33-
| [selectionsort.wy][30] | 選擇排序 |
34-
| [sieve.wy][31] | 埃氏篩 |
35-
| [sqrt_newton.wy][32] | 牛頓求根法 |
36-
| [turing.wy][33] | 圖靈機 |
37-
| [draw_heart.wy][34] | 畫心 |
4+
| File(文檔) | Remark(說明) |
5+
| -------------------------------------- | ------------------------- |
6+
| [beer.wy](beer.wy) | 九十九瓶啤酒 |
7+
| [collatz.wy](collatz.wy) | 考拉兹猜想 |
8+
| [collatz2.wy](collatz2.wy) | 考拉兹猜想二 |
9+
| [divination.wy](divination.wy) | 春秋古筮法 |
10+
| [draw_heart.wy](draw_heart.wy) | 畫心 |
11+
| [eightqueens.wy](eightqueens.wy) | 八皇后問題 |
12+
| [euclidean.wy](euclidean.wy) | 歐幾里得法 |
13+
| [factorial.wy](factorial.wy) | 階乘 |
14+
| [fibonacci.wy](fibonacci.wy) | 斐氏列 |
15+
| [fibonacci2.wy](fibonacci2.wy) | 斐氏列二 |
16+
| [fizzbuzz.wy](fizzbuzz.wy) | [嘶嘶嗡嗡][1] |
17+
| [hanoi.wy](hanoi.wy) | 漢諾塔 |
18+
| [helloworld.wy](helloworld.wy) | 問天地好在 |
19+
| [helloworld+.wy](helloworld+.wy) | 問天地好在+ |
20+
| [import.wy](import.wy) | 導入示例 |
21+
| [macro.wy](macro.wy) | 宏示例 |
22+
| [mandelbrot.wy](mandelbrot.wy) | 曼德博集 |
23+
| [mergesort.wy](mergesort.wy) | 歸併排序 |
24+
| [misc.wy](misc.wy) | 雜項 |
25+
| [modinv.wy](modinv.wy) | 大衍求一術 |
26+
| [multiplication_table.wy](multiplication_table.wy) | 乘算口訣 |
27+
| [nested_fun.wy](nested_fun.wy) | 嵌套調用示例 |
28+
| [obj.wy](obj.wy) | 对象示例 |
29+
| [pi_leibniz.wy](pi_leibniz.wy) | 萊布尼茲圓周率估算 |
30+
| [pi_liuhui.wy](pi_liuhui.wy) | 劉徽割圓術求圓周率 |
31+
| [quicksort.wy](quicksort.wy) | 快速排序 |
32+
| [quicksort_inplace.wy](quicksort_inplace.wy) | 快速排序二 |
33+
| [quine.wy](quine.wy) | [自產生程式][2] |
34+
| [quine2.wy](quine2.wy) | 自產生程式二 |
35+
| [selectionsort.wy](selectionsort.wy) | 選擇排序 |
36+
| [sieve.wy](sieve.wy) | 埃氏篩 |
37+
| [sqrt_newton.wy](sqrt_newton.wy) | 牛頓求根法 |
38+
| [tree.wy](tree.wy) | 畫樹 |
39+
| [tree2.wy](tree2.wy) | 畫樹二 |
40+
| [try.wy](try.wy) | 異常處理示例 |
41+
| [turing.wy](turing.wy) | 圖靈機 |
3842

39-
[1]: https://en.wikipedia.org/wiki/Fizz_buzz "Fizz buzz"
40-
[2]: https://zh.wikipedia.org/wiki/自產生程式 "自產生程式"
41-
[3]: beer.wy
42-
[4]: collatz.wy
43-
[5]: collatz2.wy
44-
[6]: divination.wy
45-
[7]: eightqueens.wy
46-
[8]: euclidean.wy
47-
[9]: factorial.wy
48-
[10]: fibonacci.wy
49-
[11]: fibonacci2.wy
50-
[12]: fizzbuzz.wy
51-
[13]: hanoi.wy
52-
[14]: helloworld.wy
53-
[15]: helloworld+.wy
54-
[16]: import.wy
55-
[17]: mandelbrot.wy
56-
[18]: mergesort.wy
57-
[19]: misc.wy
58-
[20]: modinv.wy
59-
[21]: multiplication_table.wy
60-
[22]: nested_fun.wy
61-
[23]: obj.wy
62-
[24]: pi_leobniz.wy
63-
[25]: pi_liuhui.wy
64-
[26]: quicksort.wy
65-
[27]: quicksort_inplace.wy
66-
[28]: quine.wy
67-
[29]: quine2.wy
68-
[30]: selectionsort.wy
69-
[31]: sieve.wy
70-
[32]: sqrt_newton.wy
71-
[33]: turing.wy
72-
[34]: draw_heart.wy
43+
[1]: https://en.wikipedia.org/wiki/Fizz_buzz
44+
[2]: https://zh.wikipedia.org/wiki/自產生程式

examples/draw_heart.wy

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
欲行是術。必先得一言。曰「心語」。
55
乃行是術曰。
66
夫「心語」之長。名之曰「長度」。
7-
吾有一言。曰「「``」」。名之曰「填充符」。
7+
吾有一言。曰「「」」。名之曰「填充符」。
88
吾有一言。曰「「\n」」。名之曰「换行符」。
99
除十三以十。名之曰「乙」。
1010
除負十一以十。名之曰「乙止」。
@@ -25,18 +25,18 @@
2525
乘「甲」以「甲」。加其以「加數」。減其以一。名之曰「函數值」。
2626
若「函數值」不大於零者。
2727
夫「心語」之「輸出位置」。名之曰「字」。
28-
「本行」以「字」。昔之「本行」者今其是矣。
28+
「本行」以「字」。昔之「本行」者今其是矣。
2929
除「輸出位置」以「長度」。所餘幾何。加其以一。昔之「輸出位置」者今其是矣。
3030
若非。
31-
「本行」以「填充符」。昔之「本行」者今其是矣。
31+
「本行」以「填充符」。昔之「本行」者今其是矣。
3232
终也。
3333
加「甲」以「甲步長」。昔之「甲」者今其是矣。
3434
云云。
3535
減「乙」以「乙步長」。昔之「乙」者今其是矣。
36-
「本行」以「换行符」。昔之「本行」者今其是矣。
37-
「果」以「本行」。昔之「果」者今其是矣。
36+
「本行」以「换行符」。昔之「本行」者今其是矣。
37+
「果」以「本行」。昔之「果」者今其是矣。
3838
云云。
3939
吾有一言。曰「果」。書之。
4040
是謂「畫心」之術也。
4141

42-
施「畫心」於「「琉璃梳子撫青絲,畫心牽腸癡不癡。」」。
42+
施「畫心」於「「琉璃梳子撫青絲畫心牽腸癡不癡。」」。

examples/obj.wy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
物之「「丁」」者。數曰四。
1111
是謂「乙」之物也。
1212
乃得「乙」。
13-
是謂「造物之術」之物也
13+
是謂「造物之術」之術也
1414

1515
施「造物之術」於「「某甲」」。名之曰「戊」。
1616
昔之「戊」之「「丁」」者。今五是矣。

examples/quine.wy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
注曰Reference: 注曰https://qiita.com/amoO_O/items/5d0c4edfc99f64bea6fb
2-
吾有一術。名之曰「自己複製」。欲行是術。必先得零數。是術曰。吾有一術。名之曰「置換」。欲行是術。必先得三數。曰「文字列」。曰「置換対象」。曰「置換先」是術曰。吾有一言。曰「「」」。名之曰「返品」。吾有一數。曰二。名之曰「未来」。吾有一爻。曰陽。名之曰「実行条件」。凡「文字列」中之「文字」。若「実行条件」者。若「文字」等於「「星」」中無陰乎「文字列」之「未来」等於「置換対象」者。昔之「文字」者。今「置換先」是。昔之「実行条件」者。今陰是。也。加「返品」以「文字」。昔之「返品」者。今其是矣。若非。昔之「実行条件」者。今陽是。也。加「未来」以一。昔之「未来」者。今其是矣。云云。乃得「返品」。是謂「置換」之術也。吾有一言。曰String.fromCharCode名之曰「函数」。施「函数」於一萬二千三百。昔之「始」者。今其是矣。施「函数」於一萬二千三百零一。昔之「終」者。今其是矣。吾有二言。曰「「吾有一術。名之曰星甲自己複製星乙。欲行是術。必先得零數。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。曰星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。」」。曰「「」」。名之曰「原文」曰「結果」。施「置換」於「原文」。於「「甲」」。於「始」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「乙」」。於「終」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「丙」」。於「原文」。昔之「結果」者。今其是矣。吾有一言。曰「結果」。書之。是謂「自己複製」之術也。施「自己複製」。
2+
吾有一術。名之曰「自己複製」。欲行是術。是術曰。吾有一術。名之曰「置換」。欲行是術。必先得三數。曰「文字列」。曰「置換対象」。曰「置換先」是術曰。吾有一言。曰「「」」。名之曰「返品」。吾有一數。曰二。名之曰「未来」。吾有一爻。曰陽。名之曰「実行条件」。凡「文字列」中之「文字」。若「実行条件」者。若「文字」等於「「星」」中無陰乎「文字列」之「未来」等於「置換対象」者。昔之「文字」者。今「置換先」是。昔之「実行条件」者。今陰是。也。加「返品」以「文字」。昔之「返品」者。今其是矣。若非。昔之「実行条件」者。今陽是。也。加「未来」以一。昔之「未来」者。今其是矣。云云。乃得「返品」。是謂「置換」之術也。吾有一言。曰String.fromCharCode名之曰「函数」。施「函数」於一萬二千三百。昔之「始」者。今其是矣。施「函数」於一萬二千三百零一。昔之「終」者。今其是矣。吾有二言。曰「「吾有一術。名之曰星甲自己複製星乙。欲行是術。是術曰。吾有一術。名之曰星甲置換星乙。欲行是術。必先得三數。曰星甲文字列星乙。曰星甲置換対象星乙。曰星甲置換先星乙是術曰。吾有一言。曰星甲星甲星乙星乙。名之曰星甲返品星乙。吾有一數。曰二。名之曰星甲未来星乙。吾有一爻。曰陽。名之曰星甲実行条件星乙。凡星甲文字列星乙中之星甲文字星乙。若星甲実行条件星乙者。若星甲文字星乙等於星甲星甲星星乙星乙中無陰乎星甲文字列星乙之星甲未来星乙等於星甲置換対象星乙者。昔之星甲文字星乙者。今星甲置換先星乙是。昔之星甲実行条件星乙者。今陰是。也。加星甲返品星乙以星甲文字星乙。昔之星甲返品星乙者。今其是矣。若非。昔之星甲実行条件星乙者。今陽是。也。加星甲未来星乙以一。昔之星甲未来星乙者。今其是矣。云云。乃得星甲返品星乙。是謂星甲置換星乙之術也。吾有一言。曰String.fromCharCode名之曰星甲函数星乙。施星甲函数星乙於一萬二千三百。昔之星甲始星乙者。今其是矣。施星甲函数星乙於一萬二千三百零一。昔之星甲終星乙者。今其是矣。吾有二言。曰星甲星甲星丙星乙星乙。曰星甲星甲星乙星乙。名之曰星甲原文星乙曰星甲結果星乙。施星甲置換星乙於星甲原文星乙。於星甲星甲甲星乙星乙。於星甲始星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲乙星乙星乙。於星甲終星乙。昔之星甲結果星乙者。今其是矣。施星甲置換星乙於星甲結果星乙。於星甲星甲丙星乙星乙。於星甲原文星乙。昔之星甲結果星乙者。今其是矣。吾有一言。曰星甲結果星乙。書之。是謂星甲自己複製星乙之術也。施星甲自己複製星乙。」」。曰「「」」。名之曰「原文」曰「結果」。施「置換」於「原文」。於「「甲」」。於「始」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「乙」」。於「終」。昔之「結果」者。今其是矣。施「置換」於「結果」。於「「丙」」。於「原文」。昔之「結果」者。今其是矣。吾有一言。曰「結果」。書之。是謂「自己複製」之術也。施「自己複製」。

0 commit comments

Comments
 (0)