Skip to content

Commit

Permalink
add typescript support
Browse files Browse the repository at this point in the history
  • Loading branch information
ran-2012 committed Nov 3, 2019
1 parent 03ee1a6 commit e2cddca
Show file tree
Hide file tree
Showing 4 changed files with 270 additions and 0 deletions.
160 changes: 160 additions & 0 deletions typescript/data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
class Statement {
readonly state: string[];
readonly famous: string[];
readonly append: string[];
readonly prepend: string[];
}

class DefaultStatement extends Statement {
readonly state: string[] = [
"现在,解决主题的问题,是非常非常重要的。 所以, ",
"我们不得不面对一个非常尴尬的事实,那就是, ",
"主题的发生,到底需要如何做到,不主题的发生,又会如何产生。 ",
"而这些并不是完全重要,更加重要的问题是, ",
"主题,到底应该如何实现。 ",
"带着这些问题,我们来审视一下主题。 ",
"所谓主题,关键是主题需要如何写。 ",
"我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。 ",
"问题的关键究竟为何? ",
"主题因何而发生?",
"每个人都不得不面对这些问题。 在面对这种问题时, ",
"一般来讲,我们都必须务必慎重的考虑考虑。 ",
"要想清楚,主题,到底是一种怎么样的存在。 ",
"了解清楚主题到底是一种怎么样的存在,是解决一切问题的关键。 ",
"就我个人来说,主题对我的意义,不能不说非常重大。 ",
"本人也是经过了深思熟虑,在每个日日夜夜思考这个问题。 ",
"主题,发生了会如何,不发生又会如何。 ",
"在这种困难的抉择下,本人思来想去,寝食难安。 ",
"生活中,若主题出现了,我们就不得不考虑它出现了的事实。 ",
"这种事实对本人来说意义重大,相信对这个世界也是有一定意义的。 ",
"我们都知道,只要有意义,那么就必须慎重考虑。 ",
"既然如此, ",
"那么, ",
"我认为, ",
"一般来说, ",
"总结的来说, ",
"既然如何, ",
"经过上述讨论",
];

readonly famous: string[] = [
"伏尔泰曾经说过,不经巨大的困难,不会有伟大的事业。这不禁令我深思",
"富勒曾经说过,苦难磨炼一些人,也毁灭另一些人。这不禁令我深思",
"文森特·皮尔曾经说过,改变你的想法,你就改变了自己的世界。这不禁令我深思",
"拿破仑·希尔曾经说过,不要等待,时机永远不会恰到好处。这不禁令我深思",
"塞涅卡曾经说过,生命如同寓言,其价值不在与长短,而在与内容。这不禁令我深思",
"奥普拉·温弗瑞曾经说过,你相信什么,你就成为什么样的人。这不禁令我深思",
"吕凯特曾经说过,生命不可能有两次,但许多人连一次也不善于度过。这不禁令我深思",
"莎士比亚曾经说过,人的一生是短的,但如果卑劣地过这一生,就太长了。这不禁令我深思",
"笛卡儿曾经说过,我的努力求学没有得到别的好处,只不过是愈来愈发觉自己的无知。这不禁令我深思",
"左拉曾经说过,生活的道路一旦选定,就要勇敢地走到底,决不回头。这不禁令我深思",
"米歇潘曾经说过,生命是一条艰险的峡谷,只有勇敢的人才能通过。这不禁令我深思",
"吉姆·罗恩曾经说过,要么你主宰生活,要么你被生活主宰。这不禁令我深思",
"日本谚语曾经说过,不幸可能成为通向幸福的桥梁。这不禁令我深思",
"海贝尔曾经说过,人生就是学校。在那里,与其说好的教师是幸福,不如说好的教师是不幸。这不禁令我深思",
"杰纳勒尔·乔治·S·巴顿曾经说过,接受挑战,就可以享受胜利的喜悦。这不禁令我深思",
"德谟克利特曾经说过,节制使快乐增加并使享受加强。这不禁令我深思",
"裴斯泰洛齐曾经说过,今天应做的事没有做,明天再早也是耽误了。这不禁令我深思",
"歌德曾经说过,决定一个人的一生,以及整个命运的,只是一瞬之间。这不禁令我深思",
"卡耐基曾经说过,一个不注意小事情的人,永远不会成就大事业。这不禁令我深思",
"卢梭曾经说过,浪费时间是一桩大罪过。这不禁令我深思",
"康德曾经说过,既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。这不禁令我深思",
"克劳斯·莫瑟爵士曾经说过,教育需要花费钱,而无知也是一样。这不禁令我深思",
"伏尔泰曾经说过,坚持意志伟大的事业需要始终不渝的精神。这不禁令我深思",
"亚伯拉罕·林肯曾经说过,你活了多少岁不算什么,重要的是你是如何度过这些岁月的。这不禁令我深思",
"韩非曾经说过,内外相应,言行相称。这不禁令我深思",
"富兰克林曾经说过,你热爱生命吗?那么别浪费时间,因为时间是组成生命的材料。这不禁令我深思",
"马尔顿曾经说过,坚强的信心,能使平凡的人做出惊人的事业。这不禁令我深思",
"笛卡儿曾经说过,读一切好书,就是和许多高尚的人谈话。这不禁令我深思",
"塞涅卡曾经说过,真正的人生,只有在经过艰难卓绝的斗争之后才能实现。这不禁令我深思",
"易卜生曾经说过,伟大的事业,需要决心,能力,组织和责任感。这不禁令我深思",
"歌德曾经说过,没有人事先了解自己到底有多大的力量,直到他试过以后才知道。这不禁令我深思",
"达尔文曾经说过,敢于浪费哪怕一个钟头时间的人,说明他还不懂得珍惜生命的全部价值。这不禁令我深思",
"佚名曾经说过,感激每一个新的挑战,因为它会锻造你的意志和品格。这不禁令我深思",
"奥斯特洛夫斯基曾经说过,共同的事业,共同的斗争,可以使人们产生忍受一切的力量。 这不禁令我深思",
"苏轼曾经说过,古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。这不禁令我深思",
"王阳明曾经说过,故立志者,为学之心也;为学者,立志之事也。这不禁令我深思",
"歌德曾经说过,读一本好书,就如同和一个高尚的人在交谈。这不禁令我深思",
"乌申斯基曾经说过,学习是劳动,是充满思想的劳动。这不禁令我深思",
"别林斯基曾经说过,好的书籍是最贵重的珍宝。这不禁令我深思",
"富兰克林曾经说过,读书是易事,思索是难事,但两者缺一,便全无用处。这不禁令我深思",
"鲁巴金曾经说过,读书是在别人思想的帮助下,建立起自己的思想。这不禁令我深思",
"培根曾经说过,合理安排时间,就等于节约时间。这不禁令我深思",
"屠格涅夫曾经说过,你想成为幸福的人吗?但愿你首先学会吃得起苦。这不禁令我深思",
"莎士比亚曾经说过,抛弃时间的人,时间也抛弃他。这不禁令我深思",
"叔本华曾经说过,普通人只想到如何度过时间,有才能的人设法利用时间。这不禁令我深思",
"博曾经说过,一次失败,只是证明我们成功的决心还够坚强。 维这不禁令我深思",
"拉罗什夫科曾经说过,取得成就时坚持不懈,要比遭到失败时顽强不屈更重要。这不禁令我深思",
"莎士比亚曾经说过,人的一生是短的,但如果卑劣地过这一生,就太长了。这不禁令我深思",
"俾斯麦曾经说过,失败是坚忍的最后考验。这不禁令我深思",
"池田大作曾经说过,不要回避苦恼和困难,挺起身来向它挑战,进而克服它。这不禁令我深思",
"莎士比亚曾经说过,那脑袋里的智慧,就像打火石里的火花一样,不去打它是不肯出来的。这不禁令我深思",
"希腊曾经说过,最困难的事情就是认识自己。这不禁令我深思",
"黑塞曾经说过,有勇气承担命运这才是英雄好汉。这不禁令我深思",
"非洲曾经说过,最灵繁的人也看不见自己的背脊。这不禁令我深思",
"培根曾经说过,阅读使人充实,会谈使人敏捷,写作使人精确。这不禁令我深思",
"斯宾诺莎曾经说过,最大的骄傲于最大的自卑都表示心灵的最软弱无力。这不禁令我深思",
"西班牙曾经说过,自知之明是最难得的知识。这不禁令我深思",
"塞内加曾经说过,勇气通往天堂,怯懦通往地狱。这不禁令我深思",
"赫尔普斯曾经说过,有时候读书是一种巧妙地避开思考的方法。这不禁令我深思",
"笛卡儿曾经说过,阅读一切好书如同和过去最杰出的人谈话。这不禁令我深思",
"邓拓曾经说过,越是没有本领的就越加自命不凡。这不禁令我深思",
"爱尔兰曾经说过,越是无能的人,越喜欢挑剔别人的错儿。这不禁令我深思",
"老子曾经说过,知人者智,自知者明。胜人者有力,自胜者强。这不禁令我深思",
"歌德曾经说过,意志坚强的人能把世界放在手中像泥块一样任意揉捏。这不禁令我深思",
"迈克尔·F·斯特利曾经说过,最具挑战性的挑战莫过于提升自我。这不禁令我深思",
"爱迪生曾经说过,失败也是我需要的,它和成功对我一样有价值。这不禁令我深思",
"罗素·贝克曾经说过,一个人即使已登上顶峰,也仍要自强不息。这不禁令我深思",
"马云曾经说过,最大的挑战和突破在于用人,而用人最大的突破在于信任人。这不禁令我深思",
"雷锋曾经说过,自己活着,就是为了使别人过得更美好。这不禁令我深思",
"布尔沃曾经说过,要掌握书,莫被书掌握;要为生而读,莫为读而生。这不禁令我深思",
"培根曾经说过,要知道对好事的称颂过于夸大,也会招来人们的反感轻蔑和嫉妒。这不禁令我深思",
"莫扎特曾经说过,谁和我一样用功,谁就会和我一样成功。这不禁令我深思",
"马克思曾经说过,一切节省,归根到底都归结为时间的节省。这不禁令我深思",
"莎士比亚曾经说过,意志命运往往背道而驰,决心到最后会全部推倒。这不禁令我深思",
"卡莱尔曾经说过,过去一切时代的精华尽在书中。这不禁令我深思",
"培根曾经说过,深窥自己的心,而后发觉一切的奇迹在你自己。这不禁令我深思",
"罗曼·罗兰曾经说过,只有把抱怨环境的心情,化为上进的力量,才是成功的保证。这不禁令我深思",
"孔子曾经说过,知之者不如好之者,好之者不如乐之者。这不禁令我深思",
"达·芬奇曾经说过,大胆和坚定的决心能够抵得上武器的精良。这不禁令我深思",
"叔本华曾经说过,意志是一个强壮的盲人,倚靠在明眼的跛子肩上。这不禁令我深思",
"黑格尔曾经说过,只有永远躺在泥坑里的人,才不会再掉进坑里。这不禁令我深思",
"普列姆昌德曾经说过,希望的灯一旦熄灭,生活刹那间变成了一片黑暗。这不禁令我深思",
"维龙曾经说过,要成功不需要什么特别的才能,只要把你能做的小事做得好就行了。这不禁令我深思",
"郭沫若曾经说过,形成天才的决定因素应该是勤奋。这不禁令我深思",
"洛克曾经说过,学到很多东西的诀窍,就是一下子不要学很多。这不禁令我深思",
"西班牙曾经说过,自己的鞋子,自己知道紧在哪里。这不禁令我深思",
"拉罗什福科曾经说过,我们唯一不会改正的缺点是软弱。这不禁令我深思",
"亚伯拉罕·林肯曾经说过,我这个人走得很慢,但是我从不后退。这不禁令我深思",
"美华纳曾经说过,勿问成功的秘诀为何,且尽全力做你应该做的事吧。这不禁令我深思",
"俾斯麦曾经说过,对于不屈不挠的人来说,没有失败这回事。这不禁令我深思",
"阿卜·日·法拉兹曾经说过,学问是异常珍贵的东西,从任何源泉吸收都不可耻。这不禁令我深思",
"白哲特曾经说过,坚强的信念能赢得强者的心,并使他们变得更坚强。 这不禁令我深思",
"查尔斯·史考伯曾经说过,一个人几乎可以在任何他怀有无限热忱的事情上成功。 这不禁令我深思",
"贝多芬曾经说过,卓越的人一大优点是:在不利与艰难的遭遇里百折不饶。这不禁令我深思",
"莎士比亚曾经说过,本来无望的事,大胆尝试,往往能成功。这不禁令我深思",
"卡耐基曾经说过,我们若已接受最坏的,就再没有什么损失。这不禁令我深思",
"德国曾经说过,只有在人群中间,才能认识自己。这不禁令我深思",
"史美尔斯曾经说过,书籍把我们引入最美好的社会,使我们认识各个时代的伟大智者。这不禁令我深思",
"冯学峰曾经说过,当一个人用工作去迎接光明,光明很快就会来照耀着他。这不禁令我深思",
"吉格·金克拉曾经说过,如果你能做梦,你就能实现它。这不禁令我深思",
];

readonly append: string[] = [
"这不禁令我深思。 ",
"带着这句话,我们还要更加慎重的审视这个问题: ",
"这启发了我, ",
"我希望诸位也能好好地体会这句话。 ",
"这句话语虽然很短,但令我浮想联翩。 ",
];

readonly prepend: string[] = [
"曾经说过",
"在不经意间这样说过",
];
}

export {
Statement,
DefaultStatement,
};
5 changes: 5 additions & 0 deletions typescript/examples/ep1.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import BSGenerator from "../index";

const bs = new BSGenerator('修仙');

console.log(bs.generate());
76 changes: 76 additions & 0 deletions typescript/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
import {DefaultStatement, Statement} from "./data";

export default class BSGenerator {

private readonly theme: string;
private data: Statement;

constructor(theme: string) {
this.theme = theme;
this.data = new DefaultStatement();
}

private randomSelect(list: string[]) {
let randIdx = Math.floor(Math.random() * list.length);
return list[randIdx];
}

private randomNumber(min: number = 0, max: number = 100) {
return Math.random() * (max - min) + min;
}

private randomFamous() {
const repPrepend = '曾经说过';
const repAppend = '这不禁令我深思';

let famous = this.randomSelect(this.data.famous);
famous = famous.replace(repPrepend, this.randomSelect(this.data.prepend));
famous = famous.replace(repAppend, this.randomSelect(this.data.append));
return famous
}

private randomState() {
const repTheme = '主题';

let statement = this.randomSelect(this.data.state);
statement = statement.replace(RegExp(repTheme, 'g'), this.theme);
return statement;
}

private addParagraph(paragraph: string) {
if (paragraph[paragraph.length - 1] === " ") {
paragraph = paragraph.slice(0, -2)
}
return "  " + paragraph + "。 "
}

generate() {
let article = [];
const paragraphCount = this.randomNumber(3, 5);

for (let i = 0; i < paragraphCount; ++i) {
let paragraph = "";
let paragraphLength = 0;
while (paragraphLength < 6000) {
let randNum = this.randomNumber();
if (randNum < 5 && paragraph.length > 200) {
paragraph = this.addParagraph(paragraph);
article.push(paragraph);
paragraph = "";
} else if (randNum < 20) {
let state = this.randomFamous();
paragraphLength = paragraphLength + state.length;
paragraph = paragraph + state;
} else {
let state = this.randomState();
paragraphLength = paragraphLength + state.length;
paragraph = paragraph + state;
}
}
paragraph = this.addParagraph(paragraph);
article.push(paragraph);
}
return article.join("\n");
}
}

29 changes: 29 additions & 0 deletions typescript/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"compileOnSave": true,
"compilerOptions": {
"allowUnreachableCode": false,
"allowUnusedLabels": false,
"alwaysStrict": true,
"charset": "utf8",
"inlineSourceMap": false,
"importHelpers": true,
"locale": "zh-CN",
"module": "commonjs",
"moduleResolution": "node",
"newLine": "CRLF",
"noImplicitAny": false,
"noImplicitReturns": true,
"noImplicitThis": true,
"noFallthroughCasesInSwitch": true,
"preserveConstEnums": true,
"pretty": true,
"removeComments": false,
"skipLibCheck": true,
"skipDefaultLibCheck": true,
"sourceMap": true,
"strictPropertyInitialization": false,
"strictBindCallApply": true,
"strictFunctionTypes": true,
"target": "es2018"
}
}

0 comments on commit e2cddca

Please sign in to comment.