Skip to content

Commit

Permalink
support typescript
Browse files Browse the repository at this point in the history
  • Loading branch information
saturngod committed May 19, 2020
1 parent 11c598c commit 53ffdb2
Show file tree
Hide file tree
Showing 7 changed files with 183 additions and 1 deletion.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ You can get build result under the `output` folder.

## Changelog

### 19/05/2020
- support typescript

### 11/08/2019
- add go lang

Expand Down
25 changes: 25 additions & 0 deletions other-lang/typescript/rabbit.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
interface RabbitRule {
from: string;
to: string;
}
export class Rabbit {

static uni2zg(unicode: string) {
var rule: Array<RabbitRule> = JSON.parse("[ { \"from\": \"\\u1004\\u103a\\u1039\", \"to\": \"\\u1064\" }, { \"from\": \"\\u1039\\u1010\\u103d\", \"to\": \"\\u1096\" }, { \"from\": \"\\u102b\\u103a\", \"to\": \"\\u105a\" }, { \"from\": \"\\u102d\\u1036\", \"to\": \"\\u108e\" }, { \"from\": \"\\u104e\\u1004\\u103a\\u1038\", \"to\": \"\\u104e\" }, { \"from\": \"[\\u1025\\u1009](?=\\u1039)\", \"to\": \"\\u106a\" }, { \"from\": \"\\u1009(?=[\\u102f\\u1030])\", \"to\": \"\\u1025\" }, { \"from\": \"[\\u1025\\u1009](?=[\\u1037]?[\\u103a])\", \"to\": \"\\u1025\" }, { \"from\": \"\\u100a(?=[\\u1039\\u103d])\", \"to\": \"\\u106b\" }, { \"from\": \"(\\u1039[\\u1000-\\u1021])(\\u102D){0,1}\\u102f\", \"to\": \"$1$2\\u1033\" }, { \"from\": \"(\\u1039[\\u1000-\\u1021])\\u1030\", \"to\": \"$1\\u1034\" }, { \"from\": \"\\u1014(?=[\\u102d\\u102e\\u102f\\u103A]?[\\u1030\\u103d\\u103e\\u102f\\u1039])\", \"to\": \"\\u108f\" }, { \"from\": \"\\u1014(?=\\u103A\\u102F )\", \"to\": \"\\u108f\" }, { \"from\" : \"\\u1014\\u103c\", \"to\" : \"\\u108f\\u103c\" }, { \"from\": \"\\u1039\\u1000\", \"to\": \"\\u1060\" }, { \"from\": \"\\u1039\\u1001\", \"to\": \"\\u1061\" }, { \"from\": \"\\u1039\\u1002\", \"to\": \"\\u1062\" }, { \"from\": \"\\u1039\\u1003\", \"to\": \"\\u1063\" }, { \"from\": \"\\u1039\\u1005\", \"to\": \"\\u1065\" }, { \"from\": \"\\u1039\\u1006\", \"to\": \"\\u1066\" }, { \"from\": \"\\u1039\\u1007\", \"to\": \"\\u1068\" }, { \"from\": \"\\u1039\\u1008\", \"to\": \"\\u1069\" }, { \"from\": \"\\u1039\\u100b\", \"to\": \"\\u106c\" }, { \"from\": \"\\u100b\\u1039\\u100c\", \"to\": \"\\u1092\" }, { \"from\": \"\\u1039\\u100c\", \"to\": \"\\u106d\" }, { \"from\": \"\\u100d\\u1039\\u100d\", \"to\": \"\\u106e\" }, { \"from\": \"\\u100d\\u1039\\u100e\", \"to\": \"\\u106f\" }, { \"from\": \"\\u1039\\u100f\", \"to\": \"\\u1070\" }, { \"from\": \"\\u1039\\u1010\", \"to\": \"\\u1071\" }, { \"from\": \"\\u1039\\u1011\", \"to\": \"\\u1073\" }, { \"from\": \"\\u1039\\u1012\", \"to\": \"\\u1075\" }, { \"from\": \"\\u1039\\u1013\", \"to\": \"\\u1076\" }, { \"from\": \"\\u1039[\\u1014\\u108f]\", \"to\": \"\\u1077\" }, { \"from\": \"\\u1039\\u1015\", \"to\": \"\\u1078\" }, { \"from\": \"\\u1039\\u1016\", \"to\": \"\\u1079\" }, { \"from\": \"\\u1039\\u1017\", \"to\": \"\\u107a\" }, { \"from\": \"\\u1039\\u1018\", \"to\": \"\\u107b\" }, { \"from\": \"\\u1039\\u1019\", \"to\": \"\\u107c\" }, { \"from\": \"\\u1039\\u101c\", \"to\": \"\\u1085\" }, { \"from\": \"\\u103f\", \"to\": \"\\u1086\" }, { \"from\": \"\\u103d\\u103e\", \"to\": \"\\u108a\" }, { \"from\": \"(\\u1064)([\\u1000-\\u1021])([\\u103b\\u103c]?)\\u102d\", \"to\": \"$2$3\\u108b\" }, { \"from\": \"(\\u1064)([\\u1000-\\u1021])([\\u103b\\u103c]?)\\u102e\", \"to\": \"$2$3\\u108c\" }, { \"from\": \"(\\u1064)([\\u1000-\\u1021])([\\u103b\\u103c]?)\\u1036\", \"to\": \"$2$3\\u108d\" }, { \"from\": \"(\\u1064)([\\u1000-\\u1021\\u1040-\\u1049])([\\u103b\\u103c]?)([\\u1031]?)\", \"to\": \"$2$3$4$1\" }, { \"from\": \"\\u101b(?=([\\u102d\\u102e]?)[\\u102f\\u1030\\u103d\\u108a])\", \"to\": \"\\u1090\" }, { \"from\": \"\\u100f\\u1039\\u100d\", \"to\": \"\\u1091\" }, { \"from\": \"\\u100b\\u1039\\u100b\", \"to\": \"\\u1097\" }, { \"from\": \"([\\u1000-\\u1021\\u108f\\u1029\\u106a\\u106e\\u106f\\u1086\\u1090\\u1091\\u1092\\u1097\\u1096])([\\u1060-\\u1069\\u106c\\u106d\\u1070-\\u107c\\u1085\\u108a])?([\\u103b-\\u103e]*)?\\u1031\", \"to\": \"\\u1031$1$2$3\" }, { \"from\": \"\\u103c\\u103e\", \"to\": \"\\u103c\\u1087\" }, { \"from\": \"([\\u1000-\\u1021\\u108f\\u1029])([\\u1060-\\u1069\\u106c\\u106d\\u1070-\\u107c\\u1085])?(\\u103c)\", \"to\": \"$3$1$2\" }, { \"from\": \"\\u103a\", \"to\": \"\\u1039\" }, { \"from\": \"\\u103b\", \"to\": \"\\u103a\" }, { \"from\": \"\\u103c\", \"to\": \"\\u103b\" }, { \"from\": \"\\u103d\", \"to\": \"\\u103c\" }, { \"from\": \"\\u103e\", \"to\": \"\\u103d\" }, { \"from\": \"([^\\u103a\\u100a])\\u103d([\\u102d\\u102e]?)\\u102f\", \"to\": \"$1\\u1088$2\" }, { \"from\": \"([\\u101b\\u103a\\u103c\\u108a\\u1088\\u1090])([\\u1030\\u103d])?([\\u1032\\u1036\\u1039\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e]?)(\\u102f)?\\u1037\", \"to\": \"$1$2$3$4\\u1095\" }, { \"from\": \"([\\u102f\\u1014\\u1030\\u103d])([\\u1032\\u1036\\u1039\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e]?)\\u1037\", \"to\": \"$1$2\\u1094\" }, { \"from\": \"([\\u103b])([\\u1000-\\u1021])([\\u1087]?)([\\u1036\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e]?)\\u102f\", \"to\": \"$1$2$3$4\\u1033\" }, { \"from\": \"([\\u103b])([\\u1000-\\u1021])([\\u1087]?)([\\u1036\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e]?)\\u1030\", \"to\": \"$1$2$3$4\\u1034\" }, { \"from\": \"([\\u103a\\u103c\\u100a\\u1008\\u100b\\u100c\\u100d\\u1020\\u1025])([\\u103d]?)([\\u1036\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e]?)\\u102f\", \"to\": \"$1$2$3\\u1033\" }, { \"from\": \"([\\u103a\\u103c\\u100a\\u1008\\u100b\\u100c\\u100d\\u1020\\u1025])(\\u103d?)([\\u1036\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e]?)\\u1030\", \"to\": \"$1$2$3\\u1034\" }, { \"from\": \"([\\u100a\\u1020\\u1009])\\u103d\", \"to\": \"$1\\u1087\" }, { \"from\": \"\\u103d\\u1030\", \"to\": \"\\u1089\" }, { \"from\": \"\\u103b([\\u1000\\u1003\\u1006\\u100f\\u1010\\u1011\\u1018\\u101a\\u101c\\u101a\\u101e\\u101f])\", \"to\": \"\\u107e$1\" }, { \"from\": \"\\u107e([\\u1000\\u1003\\u1006\\u100f\\u1010\\u1011\\u1018\\u101a\\u101c\\u101a\\u101e\\u101f])([\\u103c\\u108a])([\\u1032\\u1036\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e])\", \"to\": \"\\u1084$1$2$3\" }, { \"from\": \"\\u107e([\\u1000\\u1003\\u1006\\u100f\\u1010\\u1011\\u1018\\u101a\\u101c\\u101a\\u101e\\u101f])([\\u103c\\u108a])\", \"to\": \"\\u1082$1$2\" }, { \"from\": \"\\u107e([\\u1000\\u1003\\u1006\\u100f\\u1010\\u1011\\u1018\\u101a\\u101c\\u101a\\u101e\\u101f])([\\u1033\\u1034]?)([\\u1032\\u1036\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e])\", \"to\": \"\\u1080$1$2$3\" }, { \"from\": \"\\u103b([\\u1000-\\u1021])([\\u103c\\u108a])([\\u1032\\u1036\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e])\", \"to\": \"\\u1083$1$2$3\" }, { \"from\": \"\\u103b([\\u1000-\\u1021])([\\u103c\\u108a])\", \"to\": \"\\u1081$1$2\" }, { \"from\": \"\\u103b([\\u1000-\\u1021])([\\u1033\\u1034]?)([\\u1032\\u1036\\u102d\\u102e\\u108b\\u108c\\u108d\\u108e])\", \"to\": \"\\u107f$1$2$3\" }, { \"from\": \"\\u103a\\u103d\", \"to\": \"\\u103d\\u103a\" }, { \"from\": \"\\u103a([\\u103c\\u108a])\", \"to\": \"$1\\u107d\" }, { \"from\": \"([\\u1033\\u1034])(\\u1036?)\\u1094\", \"to\": \"$1$2\\u1095\" }, { \"from\": \"\\u108F\\u1071\", \"to\" : \"\\u108F\\u1072\" }, { \"from\": \"\\u108F\\u1073\", \"to\" : \"\\u108F\\u1074\" }, { \"from\": \"([\\u1000-\\u1021])([\\u107B\\u1066])\\u102C\", \"to\": \"$1\\u102C$2\" }, { \"from\": \"\\u102C([\\u107B\\u1066])\\u1037\", \"to\": \"\\u102C$1\\u1094\" }, { \"from\": \"\\u1047((?=[\\u1000-\\u1021]\\u1039)|(?=[\\u102c-\\u1030\\u1032\\u1036-\\u1038\\u103c\\u103d]))\", \"to\": \"\\u101b\" }]")
return this.replaceWithRule(rule,unicode);
}

static zg2uni(unicode: string) {
var rule: Array<RabbitRule> = JSON.parse("[ { \"from\" : \"([\\u102D\\u102E\\u103D\\u102F\\u1037\\u1095])\\\\1+\", \"to\" : \"$1\" }, { \"from\": \"\\u200B\", \"to\": \"\" }, { \"from\" : \"\\u103d\\u103c\", \"to\" : \"\\u108a\" }, { \"from\": \"(\\u103d|\\u1087)\", \"to\": \"\\u103e\" }, { \"from\": \"\\u103c\", \"to\": \"\\u103d\" }, { \"from\": \"(\\u103b|\\u107e|\\u107f|\\u1080|\\u1081|\\u1082|\\u1083|\\u1084)\", \"to\": \"\\u103c\" }, { \"from\": \"(\\u103a|\\u107d)\", \"to\": \"\\u103b\" }, { \"from\": \"\\u1039\", \"to\": \"\\u103a\" }, { \"from\": \"(\\u1066|\\u1067)\", \"to\": \"\\u1039\\u1006\" }, { \"from\": \"\\u106a\", \"to\": \"\\u1009\" }, { \"from\": \"\\u106b\", \"to\": \"\\u100a\" }, { \"from\": \"\\u106c\", \"to\": \"\\u1039\\u100b\" }, { \"from\": \"\\u106d\", \"to\": \"\\u1039\\u100c\" }, { \"from\": \"\\u106e\", \"to\": \"\\u100d\\u1039\\u100d\" }, { \"from\": \"\\u106f\", \"to\": \"\\u100d\\u1039\\u100e\" }, { \"from\": \"\\u1070\", \"to\": \"\\u1039\\u100f\" }, { \"from\": \"(\\u1071|\\u1072)\", \"to\": \"\\u1039\\u1010\" }, { \"from\": \"\\u1060\", \"to\": \"\\u1039\\u1000\" }, { \"from\": \"\\u1061\", \"to\": \"\\u1039\\u1001\" }, { \"from\": \"\\u1062\", \"to\": \"\\u1039\\u1002\" }, { \"from\": \"\\u1063\", \"to\": \"\\u1039\\u1003\" }, { \"from\": \"\\u1065\", \"to\": \"\\u1039\\u1005\" }, { \"from\": \"\\u1068\", \"to\": \"\\u1039\\u1007\" }, { \"from\": \"\\u1069\", \"to\": \"\\u1039\\u1008\" }, { \"from\": \"(\\u1073|\\u1074)\", \"to\": \"\\u1039\\u1011\" }, { \"from\": \"\\u1075\", \"to\": \"\\u1039\\u1012\" }, { \"from\": \"\\u1076\", \"to\": \"\\u1039\\u1013\" }, { \"from\": \"\\u1077\", \"to\": \"\\u1039\\u1014\" }, { \"from\": \"\\u1078\", \"to\": \"\\u1039\\u1015\" }, { \"from\": \"\\u1079\", \"to\": \"\\u1039\\u1016\" }, { \"from\": \"\\u107a\", \"to\": \"\\u1039\\u1017\" }, { \"from\": \"\\u107c\", \"to\": \"\\u1039\\u1019\" }, { \"from\": \"\\u1085\", \"to\": \"\\u1039\\u101c\" }, { \"from\": \"\\u1033\", \"to\": \"\\u102f\" }, { \"from\": \"\\u1034\", \"to\": \"\\u1030\" }, { \"from\": \"\\u103f\", \"to\": \"\\u1030\" }, { \"from\": \"\\u1086\", \"to\": \"\\u103f\" }, { \"from\": \"\\u1036\\u1088\", \"to\": \"\\u1088\\u1036\" }, { \"from\": \"\\u1088\", \"to\": \"\\u103e\\u102f\" }, { \"from\": \"\\u1089\", \"to\": \"\\u103e\\u1030\" }, { \"from\": \"\\u108a\", \"to\": \"\\u103d\\u103e\" }, { \"from\": \"\\u103B\\u1064\", \"to\": \"\\u1064\\u103B\" }, { \"from\": \"\\u103c([\\u1000-\\u1021])([\\u1064\\u108b\\u108d])\", \"to\": \"$1\\u103c$2\" }, { \"from\": \"(\\u1031)?([\\u1000-\\u1021\\u1040-\\u1049])(\\u103c)?\\u1064\", \"to\": \"\\u1004\\u103a\\u1039$1$2$3\" }, { \"from\": \"(\\u1031)?([\\u1000-\\u1021])(\\u103b|\\u103c)?\\u108b\", \"to\": \"\\u1004\\u103a\\u1039$1$2$3\\u102d\" }, { \"from\": \"(\\u1031)?([\\u1000-\\u1021])(\\u103b)?\\u108c\", \"to\": \"\\u1004\\u103a\\u1039$1$2$3\\u102e\" }, { \"from\": \"(\\u1031)?([\\u1000-\\u1021])([\\u103b\\u103c])?\\u108d\", \"to\": \"\\u1004\\u103a\\u1039$1$2$3\\u1036\" }, { \"from\": \"\\u108e\", \"to\": \"\\u102d\\u1036\" }, { \"from\": \"\\u108f\", \"to\": \"\\u1014\" }, { \"from\": \"\\u1090\", \"to\": \"\\u101b\" }, { \"from\": \"\\u1091\", \"to\": \"\\u100f\\u1039\\u100d\" }, { \"from\": \"\\u1092\", \"to\": \"\\u100b\\u1039\\u100c\" }, { \"from\": \"\\u1019\\u102c(\\u107b|\\u1093)\", \"to\": \"\\u1019\\u1039\\u1018\\u102c\" }, { \"from\": \"(\\u107b|\\u1093)\", \"to\": \"\\u1039\\u1018\" }, { \"from\": \"(\\u1094|\\u1095)\", \"to\": \"\\u1037\" }, { \"from\": \"([\\u1000-\\u1021])\\u1037\\u1032\", \"to\": \"$1\\u1032\\u1037\" }, { \"from\": \"\\u1096\", \"to\": \"\\u1039\\u1010\\u103d\" }, { \"from\": \"\\u1097\", \"to\": \"\\u100b\\u1039\\u100b\" }, { \"from\": \"\\u103c([\\u1000-\\u1021])([\\u1000-\\u1021])?\", \"to\": \"$1\\u103c$2\" }, { \"from\": \"([\\u1000-\\u1021])\\u103c\\u103a\", \"to\": \"\\u103c$1\\u103a\" }, { \"from\": \"\\u1047(?=[\\u102c-\\u1030\\u1032\\u1036-\\u1038\\u103d\\u1038])\", \"to\": \"\\u101b\" }, { \"from\": \"\\u1031\\u1047\", \"to\": \"\\u1031\\u101b\" }, { \"from\": \"\\u1040(\\u102e|\\u102f|\\u102d\\u102f|\\u1030|\\u1036|\\u103d|\\u103e)\", \"to\": \"\\u101d$1\" }, { \"from\": \"([^\\u1040\\u1041\\u1042\\u1043\\u1044\\u1045\\u1046\\u1047\\u1048\\u1049])\\u1040\\u102b\", \"to\": \"$1\\u101d\\u102b\" }, { \"from\": \"([\\u1040\\u1041\\u1042\\u1043\\u1044\\u1045\\u1046\\u1047\\u1048\\u1049])\\u1040\\u102b(?!\\u1038)\", \"to\": \"$1\\u101d\\u102b\" }, { \"from\": \"^\\u1040(?=\\u102b)\", \"to\": \"\\u101d\" }, { \"from\": \"\\u1040\\u102d(?!\\u0020?/)\", \"to\": \"\\u101d\\u102d\" }, { \"from\": \"([^\\u1040-\\u1049])\\u1040([^\\u1040-\\u1049\\u0020]|[\\u104a\\u104b])\", \"to\": \"$1\\u101d$2\" }, { \"from\": \"([^\\u1040-\\u1049])\\u1040(?=[\\\\f\\\\n\\\\r])\", \"to\": \"$1\\u101d\" }, { \"from\": \"([^\\u1040-\\u1049])\\u1040$\", \"to\": \"$1\\u101d\" }, { \"from\": \"\\u1031([\\u1000-\\u1021\\u103f])(\\u103e)?(\\u103b)?\", \"to\": \"$1$2$3\\u1031\" }, { \"from\": \"([\\u1000-\\u1021])\\u1031([\\u103b\\u103c\\u103d\\u103e]+)\", \"to\": \"$1$2\\u1031\" }, { \"from\": \"\\u1032\\u103d\", \"to\": \"\\u103d\\u1032\" }, { \"from\": \"([\\u102d\\u102e])\\u103b\", \"to\": \"\\u103b$1\" }, { \"from\": \"\\u103d\\u103b\", \"to\": \"\\u103b\\u103d\" }, { \"from\": \"\\u103a\\u1037\", \"to\": \"\\u1037\\u103a\" }, { \"from\": \"\\u102f(\\u102d|\\u102e|\\u1036|\\u1037)\\u102f\", \"to\": \"\\u102f$1\" }, { \"from\": \"(\\u102f|\\u1030)(\\u102d|\\u102e)\", \"to\": \"$2$1\" }, { \"from\": \"(\\u103e)(\\u103b|\\u103c)\", \"to\": \"$2$1\" }, { \"from\": \"\\u1025(?=[\\u1037]?[\\u103a\\u102c])\", \"to\": \"\\u1009\" }, { \"from\": \"\\u1025\\u102e\", \"to\": \"\\u1026\" }, { \"from\": \"\\u1005\\u103b\", \"to\": \"\\u1008\" }, { \"from\": \"\\u1036(\\u102f|\\u1030)\", \"to\": \"$1\\u1036\" }, { \"from\": \"\\u1031\\u1037\\u103e\", \"to\": \"\\u103e\\u1031\\u1037\" }, { \"from\": \"\\u1031\\u103e\\u102c\", \"to\": \"\\u103e\\u1031\\u102c\" }, { \"from\": \"\\u105a\", \"to\": \"\\u102b\\u103a\" }, { \"from\": \"\\u1031\\u103b\\u103e\", \"to\": \"\\u103b\\u103e\\u1031\" }, { \"from\": \"(\\u102d|\\u102e)(\\u103d|\\u103e)\", \"to\": \"$2$1\" }, { \"from\": \"\\u102c\\u1039([\\u1000-\\u1021])\", \"to\": \"\\u1039$1\\u102c\" }, { \"from\": \"\\u1039\\u103c\\u103a\\u1039([\\u1000-\\u1021])\", \"to\": \"\\u103a\\u1039$1\\u103c\" }, { \"from\": \"\\u103c\\u1039([\\u1000-\\u1021])\", \"to\": \"\\u1039$1\\u103c\" }, { \"from\": \"\\u1036\\u1039([\\u1000-\\u1021])\", \"to\": \"\\u1039$1\\u1036\" }, { \"from\": \"\\u104e\", \"to\": \"\\u104e\\u1004\\u103a\\u1038\" }, { \"from\": \"\\u1040(\\u102b|\\u102c|\\u1036)\", \"to\": \"\\u101d$1\" }, { \"from\": \"\\u1025\\u1039\", \"to\": \"\\u1009\\u1039\" }, { \"from\": \"([\\u1000-\\u1021])\\u103c\\u1031\\u103d\", \"to\": \"$1\\u103c\\u103d\\u1031\" }, { \"from\": \"([\\u1000-\\u1021])\\u103b\\u1031\\u103d(\\u103e)?\", \"to\": \"$1\\u103b\\u103d$2\\u1031\" }, { \"from\": \"([\\u1000-\\u1021])\\u103d\\u1031\\u103b\", \"to\": \"$1\\u103b\\u103d\\u1031\" }, { \"from\": \"([\\u1000-\\u1021])\\u1031(\\u1039[\\u1000-\\u1021]\\u103d?)\", \"to\": \"$1$2\\u1031\" }, { \"from\": \"\\u1038\\u103a\", \"to\": \"\\u103a\\u1038\" }, { \"from\": \"\\u102d\\u103a|\\u103a\\u102d\", \"to\": \"\\u102d\" }, { \"from\": \"\\u102d\\u102f\\u103a\", \"to\": \"\\u102d\\u102f\" }, { \"from\": \"\\u0020\\u1037\", \"to\": \"\\u1037\" }, { \"from\": \"\\u1037\\u1036\", \"to\": \"\\u1036\\u1037\" }, { \"from\": \"[\\u102d]+\", \"to\": \"\\u102d\" }, { \"from\": \"[\\u103a]+\", \"to\": \"\\u103a\" }, { \"from\": \"[\\u103d]+\", \"to\": \"\\u103d\" }, { \"from\": \"[\\u1037]+\", \"to\": \"\\u1037\" }, { \"from\": \"[\\u102e]+\", \"to\": \"\\u102e\" }, { \"from\": \"\\u102d\\u102e|\\u102e\\u102d\", \"to\": \"\\u102e\" }, { \"from\": \"\\u102f\\u102d\", \"to\": \"\\u102d\\u102f\" }, { \"from\": \"\\u1037\\u1037\", \"to\": \"\\u1037\" }, { \"from\": \"\\u1032\\u1032\", \"to\": \"\\u1032\" }, { \"from\": \"\\u1044\\u1004\\u103a\\u1038\", \"to\": \"\\u104E\\u1004\\u103a\\u1038\" }, { \"from\": \"([\\u102d\\u102e])\\u1039([\\u1000-\\u1021])\", \"to\": \"\\u1039$2$1\" }, { \"from\": \"(\\u103c\\u1031)\\u1039([\\u1000-\\u1021])\", \"to\": \"\\u1039$2$1\" }, { \"from\": \"\\u1036\\u103d\", \"to\": \"\\u103d\\u1036\" }, { \"from\": \"\\u1047((?=[\\u1000-\\u1021]\\u103a)|(?=[\\u102c-\\u1030\\u1032\\u1036-\\u1038\\u103d\\u103e]))\", \"to\": \"\\u101b\" }]")
return this.replaceWithRule(rule,unicode);
}

static replaceWithRule(rule: Array<RabbitRule>,output: string) {
rule.forEach(function (value) {
let from = new RegExp(value.from,"g");
output = output.replace(from,value.to);
});
return output;
}
}

3 changes: 2 additions & 1 deletion source/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ var elixir = require(__dirname + "/lang/elixir/elixir_template.js");
var kotlin = require(__dirname + "/lang/kotlin/kotlin_template.js");
var go = require(__dirname + "/lang/go/go_template.js");
var dart = require(__dirname + "/lang/dart/dart_template.js");
var typescript = require(__dirname + "/lang/typescript/typescript_template.js");
//rule
var uni2json = fs.readFileSync(__dirname + "/rule/uni2zg.json","utf8");
var zg2uni = fs.readFileSync(__dirname + "/rule/zg2uni.json","utf8");
Expand All @@ -36,7 +37,7 @@ elixir.compile(uni2json,zg2uni,__dirname + "/output/elixir/Rabbit.ex");
kotlin.compile(uni2json,zg2uni,__dirname + "/output/kotlin/Rabbit.kt");
go.compile(uni2json,zg2uni,__dirname + "/output/go/rabbit.go");
dart.compile(uni2json,zg2uni,__dirname + "/output/dart/rabbit.dart");

typescript.compile(uni2json,zg2uni,__dirname + "/output/typescript/rabbit.ts");
console.log("Moving To Package ...");
//time to move to Packages
copy(__dirname + "/output/ruby/rabbit.rb",path.resolve(__dirname + "/../Packages/ruby/lib/rabbit.rb")); //Ruby
Expand Down
81 changes: 81 additions & 0 deletions source/lang/typescript/rabbit_template.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?php

/**
* Rabbit is Another Zawgyi <=> Unicode Converter.
*
* @author Saturngod <[email protected]>
*/
class Rabbit
{
/**
* Rabbit Converter version.
*
* @var string
*/
const VERSION = '{{VERSION}}';

/**
* Convert unicode string to zawgyi.
*
* @param string $unicode
* @return string
*/
public static function uni2zg($unicode)
{
$rule = json_decode("{{UNI2ZG}}", true);

return self::replaceWithRule($rule, $unicode);
}

/**
* Convert zawgyi string to unicode.
*
* @param string $unicode
* @return string
*/
public static function zg2uni($zawgyi)
{
$rule = json_decode("{{ZG2UNI}}", true);

return self::replaceWithRule($rule, $zawgyi);
}

/**
* Replace the line break to character to parse the data correctly
* @param string $string
* @return string
*/
private static function parseline($string){
$string = str_replace(chr(10), "\\n", $string);
$string = str_replace(chr(13), "\\n", $string);
$string = str_replace("\f", "\\f", $string);
return $string;
}

/**
* Replace the string with rules.
*
* @param array $rule
* @param string $output
* @return string
*/
protected static function replaceWithRule($rule, $output)
{
foreach ($rule as $data) {

$from_json = $data["from"];

//search line break.
//if line break include , need to fix the line
if (strpos($from_json, chr(13)) !== false) {
$from_json = self::parseline($from_json);
}

$from = "~".json_decode('"'.$from_json.'"')."~u";
$to = json_decode('"'.$data["to"].'"');
$output = preg_replace($from, $to, $output);
}

return $output;
}
}
25 changes: 25 additions & 0 deletions source/lang/typescript/rabbit_template.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
interface RabbitRule {
from: string;
to: string;
}
export class Rabbit {

static uni2zg(unicode: string) {
var rule: Array<RabbitRule> = JSON.parse("{{UNI2ZG}}")
return this.replaceWithRule(rule,unicode);
}

static zg2uni(unicode: string) {
var rule: Array<RabbitRule> = JSON.parse("{{ZG2UNI}}")
return this.replaceWithRule(rule,unicode);
}

static replaceWithRule(rule: Array<RabbitRule>,output: string) {
rule.forEach(function (value) {
let from = new RegExp(value.from,"g");
output = output.replace(from,value.to);
});
return output;
}
}

22 changes: 22 additions & 0 deletions source/lang/typescript/typescript_template.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
exports.compile = function(uni2zg,zg2uni,path) {

var fs = require('fs');

var template = fs.readFileSync(__dirname + "/rabbit_template.ts");
template = template + "";//for make sure string
template = template.replace("{{UNI2ZG}}",clear(uni2zg));
template = template.replace("{{ZG2UNI}}",clear(zg2uni));
fs.writeFileSync(path,template);
}

function clear(json) {
json = json + "";//make sure for string
json = json.replace(/\\/g,"\\\\");
json = json.replace(/\"/g,"\\\"");
json = json.replace(/\n/g,"");
json = json.replace(/\r/g,"");
json = json.replace(/ /g," ");
json = json.replace(/ /g," ");
json = json.replace(/ /g," ");
return json;
}
Loading

0 comments on commit 53ffdb2

Please sign in to comment.