文言文編程語言 A programming language for the ancient Chinese.
MIT License
Bot releases are hidden (Show)
Bugfixes
Published by antfu over 4 years ago
Move to the new npm org @wenyan. Thanks for the donation!
Now you can use:
npm i -g @wenyan/cli
Published by antfu over 4 years ago
Thanks for our first financial contributor @wenfeng0218 on Open Collective!
Published by antfu over 4 years ago
Published by antfu almost 5 years ago
compile
API changeAs we mentioned in the v0.2.0 release, the support of using lang
as the first argument of compile
is now REMOVED. Please use the new API instead.
// before
compile('js', source, { ... })
// after
compile(source, { lang: 'js', ... })
The fresh new Online IDE is now landed. With file explorer, rendering, a better editor, auto-complete, wyg support, dark mode and more. Please do check it out! (PR #515 #526 #535 #536 #537 #546 #551 #552)
We have rewritten our codebase to Typescript. The typing declaration file is also shipped in @wanyanlang/core.
Check out for #543 for more details.
Published by antfu almost 5 years ago
Thanks to everyone who contributed their ideas, a selection of proposed new syntaxes are now added
js/c++ | wenyan | issue |
---|---|---|
continue |
乃止是遍 |
#392 |
else if |
或若 |
#365 |
if (ans) { |
若其然者 |
#513 |
if (!ans) { |
若其不然者 |
ditto |
auto |
元 |
#486 |
require('path/to/something') |
吾嘗觀「「某樓」」中「「某閣」」中「「某書」」之書。 |
#475 |
refer to #519 for more details
Published by antfu almost 5 years ago
Think 序.wy
the Wenyan version of index.js
.
For example, the reader now will search for a module 四庫全書
for a given path /tmp/examples
/tmp/examples/四庫全書.wy
/tmp/examples/四庫全書/序.wy
The first match will be imported. Refer to #512 for more details.
Think 藏書樓
the Wenyan version of node_modules
.
藏書樓
will be included as importPaths
by CLI automatically. It will do an up searching for 藏書樓
from the cwd (just as node did)
Published by antfu almost 5 years ago
We are now using Netlify to build our website & IDE. The legacy links will redirect to http://wy-lang.org automatically.
importPaths
for specifying the import searching directories, (PR #499, by @antfu)allowHttp
for allowing import scripts from the web (default to false
). refer to #499 for more details.Published by antfu almost 5 years ago
When the option is turned on, the compiler will now raise exceptions if your code does not typecheck. Also it is capable of producing type signatures for inspection, e.g. ./example/quicksort.wy produces the following:
[0-347] {
快排 : (('a) arr) -> (('a) arr)
己 : (num) arr
[33-285] {
首 : ('a) arr
頷 : ('a) arr
尾 : ('a) arr
甲一 : 'a
甲餘 : ('a) arr
乙 : ('a) arr
[136-201] {
丁 : 'a
}
}
}
For more detail, please refer to #486
Published by antfu almost 5 years ago
compile
API changeThe first argument lang move to option, please switch to new API.
//before
compile('js', source, { ... })
// after
compile(source, { lang: 'js', ... })
The old API is still functional for temporary backward compatible, the support will be REMOVED in the next minor update.
Please do check it out. Any feedbacks are welcome!
Check out API Document and #473
Published by antfu almost 5 years ago
As you might (not) have noticed, wenyan-lang strives to be more readable (for ancient Chinese people). Macros provide syntactic sugars to bring the 文采 of your code to the next level.
E.g. Now you can patch wenyan-lang's notorius print function like so:
或云「「書「甲」焉」」。
蓋謂「「吾有一言。曰「甲」。書之」」。
書「「問天地好在」」焉。
Since we're beating JavaScript to macros, here is a rough C equivalence:
#define 書(甲)焉 吾有一言。曰甲。書之
書("問天地好在")焉。
See Full Documation, #440 for more details.
A new standard library 畫譜
that manipulates canvas on web pages. Check out the demo on Online IDE!
New package @wenyanlang/runtime
allowing you to run Wenyan direct in <script>
tag of html! (PR #433, thanks @antfu)
Published by antfu almost 5 years ago
hanzi2num
(PR #413, thanks @statementreply)塵埃渺漠
are now 10x each穰
(U+7A70).一百一
= 101 now一
before fractional multipliers is no longer allowed. It's unclear whether 五毫絲
means 0.0051 or 5e-7, so I just disallowed it for now.一萬萬
= 1e+8, 一百絲
= 0.01.一三三七
= 1337〇
(exactly one digit of zero) and decimal separator ·
: 三五〇〇·〇一
= 3500.01『』
is now supported as string literals, an alternate of 「「」」
(5f698df434133d12b7c6027a197db634b91ace53), resolves #81、
is now supported sentence separators. (5f698df434133d12b7c6027a197db634b91ace53), resolves #15, resolves #129, resolves #348Published by LingDong- almost 5 years ago