【wenyan-lang / 文言】Pixiで始め‘られ’る文言
仮想文言環境
算えるに二年も前、ここ
投稿日現在の数値
当の記事はこちら。
文言という言語に実用性などないことは言わずもがな、使い勝手も聊か好からぬものですから、敢えて使わんとするような代物ではございません。本記事は寧ろ、
Node.js の入手
何を隠そう、私が
然う謂いますのも、文言は
Pixi による方法
件の
pixi init wenyan-prj
cd wenyan-prj
pixi add nodejs
文言の入手
npm
によって、文言を入手しましょう。
pixi run npm install -g @wenyan/cli
> pixi run wenyan
,_ ,_
\/ ==
/\ []
WENYAN LANG 文言 Compiler v0.3.4
Usage: wenyan [options] [files...]
Options:
-v, --version Output the version
-l, --lang <lang> Target language, can be "js", "py" or "rb" (default: "js")
-c, --compile Output the compiled code instead of executing it
-e, --eval <code> Evaluate script
-i, --interactive Interactive REPL
-o, --output [file] Output compiled code or executing result to file
-r, --render Outputs renderings
--roman [method] Romanize identifiers. The method can be "pinyin", "baxter" or "unicode"
--strict Enable static typechecking (default: false)
--allowHttp Allow to import from http (default: false)
--dir <path> Directory to importing from, seprates with comma(,)
--no-outputHanzi Don't convert output to hanzi
--log <file> Save log to file
--title <title> Override title in rendering
-h, --help Display help
手に入れたところで用がないという人の大多数でしょうが、動作するところを見て終えましょう。
用例
pixi run wenyan -i
> 吾有一列名之曰「高」充「高」以「「一」」以「「二」」以「「三」」
> 夫「高」書之
一。二。三
手打ちで都度命令することも、尺紙一つ用意して一挙に命ずることもできると雖も、特に珍しいものではございません。
吾有一列名之曰「育児の事」充「育児の事」
以「「欺くこと勿𛄀」」
以「「脋か𛁏こと勿𛄀」」
以「「復讎𛄜教ふること勿𛄀」」
以「「無用の恐懼を教ふること勿𛄀」」
以「「嫉妬の𫝹を起さ𛁈むること勿𛄀」」
以「「妄󠄁語を語ること勿𛄀」」
以「「為𛁏勿𛄀の語を常用𛁏ること勿𛄀」」
以「「動物𛂌仁愛を施𛁏ことを教ふべ𛁅」」
以「「言行を一𛂌𛁏べ𛁅」」
以「「親愛𛁏べ𛁅」」
吾有一言曰「「婦女必読家事要訓」」書之
吾有一言曰「「第十章育児の事」」書之
夫「育児の事」書之
pixi run wenyan .\婦女必読家事要訓.wy
婦女必読家事要訓
第十章育児の事
欺くこと勿𛄀。脋か𛁏こと勿𛄀。復讎𛄜教ふること勿𛄀。無用の恐懼を教ふること勿𛄀。嫉妬の𫝹を起さ𛁈むること勿𛄀。妄󠄁語を語ること勿𛄀。為𛁏勿𛄀の語を常用𛁏ること勿𛄀。動物𛂌仁愛を施𛁏ことを教ふべ𛁅。言行を一𛂌𛁏べ𛁅。親愛𛁏べ𛁅
引用:
ところで、文言は他の言語に書き換えることもできます。
-l, --lang <lang> Target language, can be "js", "py" or "rb" (default: "js")
-c, --compile Output the compiled code instead of executing it
pixi run wenyan .\婦女必読家事要訓.wy -c -l py
# -*- coding: utf-8 -*-
class Ctnr:
def __init__(self):self.dict = dict();self.length = 0;self.it = -1;
def push(self,*args):
for arg in args:
self.dict[str(self.length)]=arg; self.length+=1
def __getitem__(self,i):
try: return self.dict[str(i)]
except: return None
def __setitem__(self,i,x):
self.dict[str(i)]=x
inti = None
try:
inti = int(i)
if (abs(inti - float(i))>0.0001): inti=None
except: pass
if (inti != None):
self.length=inti+1
for j in range(0,self.length):
try: self.dict[str(j)]
except: self.dict[str(j)]=None
def slice(self,i):
ret = Ctnr();
for i in range(i,self.length): ret.push(self[i])
return ret
def concat(self,other):
ret = Ctnr();
for i in range(0,self.length): ret.push(self[i])
for i in range(0,other.length): ret.push(other[i])
return ret
def __str__(self):
if (len(self.dict.keys())==self.length):
ret = "["
for k in range(0,self.length):
v = self[k]
if (isinstance(v,Ctnr)): ret += v.__str__()
else: ret += str(v)
ret+=","
ret += "]"
return ret;
else:
ret = "{"
for k in self.dict.keys():
ret += str(k)+":"
v = self.dict[k]
if (isinstance(v,Ctnr)): ret += v.__str__()
else: ret += str(v)
ret+=","
ret += "}"
return ret;
def __repr__(self):
return self.__str__()
def __iter__(self):
self.it = -1;
return self
def __next__(self):
self.it += 1
if (self.it >= self.length): raise StopIteration()
return self[self.it]
globals()['Ctnr']=Ctnr;
class JSON:
@staticmethod
def stringify(x):
return x;
#####
育児の事=Ctnr()
育児の事.push("欺くこと勿𛄀","脋か𛁏こと勿𛄀","復讎𛄜教ふること勿𛄀","無用の恐懼を教ふること勿𛄀","嫉妬の𫝹を起さ𛁈むること勿𛄀","妄󠄁語を語ること勿𛄀","為𛁏勿𛄀の語を常用𛁏ること勿𛄀","動物𛂌仁愛を施𛁏ことを教ふべ𛁅","言行を一𛂌𛁏べ𛁅","親愛𛁏べ𛁅")
_ans1="婦女必読家事要訓"
print(_ans1);
_ans2="第十章育児の事"
print(_ans2);
_ans3=育児の事;
print(_ans3);
満足したら次の一行で片付けられます。
pixi clean
跋
文言が
Discussion