diff --git a/demo/finaloutput.x8l b/demo/finaloutput.x8l new file mode 100644 index 0000000..63f1876 --- /dev/null +++ b/demo/finaloutput.x8l @@ -0,0 +1,51 @@ + + + < + <0000> + < + > + Hello?> + 您> + < + Hl> + > + > + > + <0001> + < + 谢谢!> + Thanks!> + 谢> + Thx> + < + > + ulagra!> + > + < + <0002> + < + > + Hello?> + 您> + < + Hl> + > + u-don?> + > + + > + > + > + > + hugna> + > + > + + > + > + > + > + > + tag thag har!!> + > +> diff --git a/demo/generate.x8l b/demo/generate.x8l new file mode 100644 index 0000000..c8f4a9a --- /dev/null +++ b/demo/generate.x8l @@ -0,0 +1,4003 @@ + + + <0> + > + > + > + <1> + > + > + > + <2> + > + > + > + <3> + > + > + > + <4> + > + > + > + <5> + > + > + > + <6> + > + > + > + <7> + > + > + > + <8> + > + > + > + <9> + > + > + > + <10> + > + > + > + <11> + > + > + > + <12> + > + > + > + <13> + > + > + > + <14> + > + > + > + <15> + > + > + > + <16> + > + > + > + <17> + > + > + > + <18> + > + > + > + <19> + > + > + > + <20> + > + > + > + <21> + > + > + > + <22> + > + > + > + <23> + > + > + > + <24> + > + > + > + <25> + > + > + > + <26> + > + > + > + <27> + > + > + > + <28> + > + > + > + <29> + > + > + > + <30> + > + > + > + <31> + > + > + > + <32> + > + > + > + <33> + > + > + > + <34> + > + > + > + <35> + > + > + > + <36> + > + > + > + <37> + > + > + > + <38> + > + > + > + <39> + > + > + > + <40> + > + > + > + <41> + > + > + > + <42> + > + > + > + <43> + > + > + > + <44> + > + > + > + <45> + > + > + > + <46> + > + > + > + <47> + > + > + > + <48> + > + > + > + <49> + > + > + > + <50> + > + > + > + <51> + > + > + > + <52> + > + > + > + <53> + > + > + > + <54> + > + > + > + <55> + > + > + > + <56> + > + > + > + <57> + > + > + > + <58> + > + > + > + <59> + > + > + > + <60> + > + > + > + <61> + > + > + > + <62> + > + > + > + <63> + > + > + > + <64> + > + > + > + <65> + > + > + > + <66> + > + > + > + <67> + > + > + > + <68> + > + > + > + <69> + > + > + > + <70> + > + > + > + <71> + > + > + > + <72> + > + > + > + <73> + > + > + > + <74> + > + > + > + <75> + > + > + > + <76> + > + > + > + <77> + > + > + > + <78> + > + > + > + <79> + > + > + > + <80> + > + > + > + <81> + > + > + > + <82> + > + > + > + <83> + > + > + > + <84> + > + > + > + <85> + > + > + > + <86> + > + > + > + <87> + > + > + > + <88> + > + > + > + <89> + > + > + > + <90> + > + > + > + <91> + > + > + > + <92> + > + > + > + <93> + > + > + > + <94> + > + > + > + <95> + > + > + > + <96> + > + > + > + <97> + > + > + > + <98> + > + > + > + <99> + > + > + > + <100> + > + > + > + <101> + > + > + > + <102> + > + > + > + <103> + > + > + > + <104> + > + > + > + <105> + > + > + > + <106> + > + > + > + <107> + > + > + > + <108> + > + > + > + <109> + > + > + > + <110> + > + > + > + <111> + > + > + > + <112> + > + > + > + <113> + > + > + > + <114> + > + > + > + <115> + > + > + > + <116> + > + > + > + <117> + > + > + > + <118> + > + > + > + <119> + > + > + > + <120> + > + > + > + <121> + > + > + > + <122> + > + > + > + <123> + > + > + > + <124> + > + > + > + <125> + > + > + > + <126> + > + > + > + <127> + > + > + > + <128> + > + > + > + <129> + > + > + > + <130> + > + > + > + <131> + > + > + > + <132> + > + > + > + <133> + > + > + > + <134> + > + > + > + <135> + > + > + > + <136> + > + > + > + <137> + > + > + > + <138> + > + > + > + <139> + > + > + > + <140> + > + > + > + <141> + > + > + > + <142> + > + > + > + <143> + > + > + > + <144> + > + > + > + <145> + > + > + > + <146> + > + > + > + <147> + > + > + > + <148> + > + > + > + <149> + > + > + > + <150> + > + > + > + <151> + > + > + > + <152> + > + > + > + <153> + > + > + > + <154> + > + > + > + <155> + > + > + > + <156> + > + > + > + <157> + > + > + > + <158> + > + > + > + <159> + > + > + > + <160> + > + > + > + <161> + > + > + > + <162> + > + > + > + <163> + > + > + > + <164> + > + > + > + <165> + > + > + > + <166> + > + > + > + <167> + > + > + > + <168> + > + > + > + <169> + > + > + > + <170> + > + > + > + <171> + > + > + > + <172> + > + > + > + <173> + > + > + > + <174> + > + > + > + <175> + > + > + > + <176> + > + > + > + <177> + > + > + > + <178> + > + > + > + <179> + > + > + > + <180> + > + > + > + <181> + > + > + > + <182> + > + > + > + <183> + > + > + > + <184> + > + > + > + <185> + > + > + > + <186> + > + > + > + <187> + > + > + > + <188> + > + > + > + <189> + > + > + > + <190> + > + > + > + <191> + > + > + > + <192> + > + > + > + <193> + > + > + > + <194> + > + > + > + <195> + > + > + > + <196> + > + > + > + <197> + > + > + > + <198> + > + > + > + <199> + > + > + > + <200> + > + > + > + <201> + > + > + > + <202> + > + > + > + <203> + > + > + > + <204> + > + > + > + <205> + > + > + > + <206> + > + > + > + <207> + > + > + > + <208> + > + > + > + <209> + > + > + > + <210> + > + > + > + <211> + > + > + > + <212> + > + > + > + <213> + > + > + > + <214> + > + > + > + <215> + > + > + > + <216> + > + > + > + <217> + > + > + > + <218> + > + > + > + <219> + > + > + > + <220> + > + > + > + <221> + > + > + > + <222> + > + > + > + <223> + > + > + > + <224> + > + > + > + <225> + > + > + > + <226> + > + > + > + <227> + > + > + > + <228> + > + > + > + <229> + > + > + > + <230> + > + > + > + <231> + > + > + > + <232> + > + > + > + <233> + > + > + > + <234> + > + > + > + <235> + > + > + > + <236> + > + > + > + <237> + > + > + > + <238> + > + > + > + <239> + > + > + > + <240> + > + > + > + <241> + > + > + > + <242> + > + > + > + <243> + > + > + > + <244> + > + > + > + <245> + > + > + > + <246> + > + > + > + <247> + > + > + > + <248> + > + > + > + <249> + > + > + > + <250> + > + > + > + <251> + > + > + > + <252> + > + > + > + <253> + > + > + > + <254> + > + > + > + <255> + > + > + > + <256> + > + > + > + <257> + > + > + > + <258> + > + > + > + <259> + > + > + > + <260> + > + > + > + <261> + > + > + > + <262> + > + > + > + <263> + > + > + > + <264> + > + > + > + <265> + > + > + > + <266> + > + > + > + <267> + > + > + > + <268> + > + > + > + <269> + > + > + > + <270> + > + > + > + <271> + > + > + > + <272> + > + > + > + <273> + > + > + > + <274> + > + > + > + <275> + > + > + > + <276> + > + > + > + <277> + > + > + > + <278> + > + > + > + <279> + > + > + > + <280> + > + > + > + <281> + > + > + > + <282> + > + > + > + <283> + > + > + > + <284> + > + > + > + <285> + > + > + > + <286> + > + > + > + <287> + > + > + > + <288> + > + > + > + <289> + > + > + > + <290> + > + > + > + <291> + > + > + > + <292> + > + > + > + <293> + > + > + > + <294> + > + > + > + <295> + > + > + > + <296> + > + > + > + <297> + > + > + > + <298> + > + > + > + <299> + > + > + > + <300> + > + > + > + <301> + > + > + > + <302> + > + > + > + <303> + > + > + > + <304> + > + > + > + <305> + > + > + > + <306> + > + > + > + <307> + > + > + > + <308> + > + > + > + <309> + > + > + > + <310> + > + > + > + <311> + > + > + > + <312> + > + > + > + <313> + > + > + > + <314> + > + > + > + <315> + > + > + > + <316> + > + > + > + <317> + > + > + > + <318> + > + > + > + <319> + > + > + > + <320> + > + > + > + <321> + > + > + > + <322> + > + > + > + <323> + > + > + > + <324> + > + > + > + <325> + > + > + > + <326> + > + > + > + <327> + > + > + > + <328> + > + > + > + <329> + > + > + > + <330> + > + > + > + <331> + > + > + > + <332> + > + > + > + <333> + > + > + > + <334> + > + > + > + <335> + > + > + > + <336> + > + > + > + <337> + > + > + > + <338> + > + > + > + <339> + > + > + > + <340> + > + > + > + <341> + > + > + > + <342> + > + > + > + <343> + > + > + > + <344> + > + > + > + <345> + > + > + > + <346> + > + > + > + <347> + > + > + > + <348> + > + > + > + <349> + > + > + > + <350> + > + > + > + <351> + > + > + > + <352> + > + > + > + <353> + > + > + > + <354> + > + > + > + <355> + > + > + > + <356> + > + > + > + <357> + > + > + > + <358> + > + > + > + <359> + > + > + > + <360> + > + > + > + <361> + > + > + > + <362> + > + > + > + <363> + > + > + > + <364> + > + > + > + <365> + > + > + > + <366> + > + > + > + <367> + > + > + > + <368> + > + > + > + <369> + > + > + > + <370> + > + > + > + <371> + > + > + > + <372> + > + > + > + <373> + > + > + > + <374> + > + > + > + <375> + > + > + > + <376> + > + > + > + <377> + > + > + > + <378> + > + > + > + <379> + > + > + > + <380> + > + > + > + <381> + > + > + > + <382> + > + > + > + <383> + > + > + > + <384> + > + > + > + <385> + > + > + > + <386> + > + > + > + <387> + > + > + > + <388> + > + > + > + <389> + > + > + > + <390> + > + > + > + <391> + > + > + > + <392> + > + > + > + <393> + > + > + > + <394> + > + > + > + <395> + > + > + > + <396> + > + > + > + <397> + > + > + > + <398> + > + > + > + <399> + > + > + > + <400> + > + > + > + <401> + > + > + > + <402> + > + > + > + <403> + > + > + > + <404> + > + > + > + <405> + > + > + > + <406> + > + > + > + <407> + > + > + > + <408> + > + > + > + <409> + > + > + > + <410> + > + > + > + <411> + > + > + > + <412> + > + > + > + <413> + > + > + > + <414> + > + > + > + <415> + > + > + > + <416> + > + > + > + <417> + > + > + > + <418> + > + > + > + <419> + > + > + > + <420> + > + > + > + <421> + > + > + > + <422> + > + > + > + <423> + > + > + > + <424> + > + > + > + <425> + > + > + > + <426> + > + > + > + <427> + > + > + > + <428> + > + > + > + <429> + > + > + > + <430> + > + > + > + <431> + > + > + > + <432> + > + > + > + <433> + > + > + > + <434> + > + > + > + <435> + > + > + > + <436> + > + > + > + <437> + > + > + > + <438> + > + > + > + <439> + > + > + > + <440> + > + > + > + <441> + > + > + > + <442> + > + > + > + <443> + > + > + > + <444> + > + > + > + <445> + > + > + > + <446> + > + > + > + <447> + > + > + > + <448> + > + > + > + <449> + > + > + > + <450> + > + > + > + <451> + > + > + > + <452> + > + > + > + <453> + > + > + > + <454> + > + > + > + <455> + > + > + > + <456> + > + > + > + <457> + > + > + > + <458> + > + > + > + <459> + > + > + > + <460> + > + > + > + <461> + > + > + > + <462> + > + > + > + <463> + > + > + > + <464> + > + > + > + <465> + > + > + > + <466> + > + > + > + <467> + > + > + > + <468> + > + > + > + <469> + > + > + > + <470> + > + > + > + <471> + > + > + > + <472> + > + > + > + <473> + > + > + > + <474> + > + > + > + <475> + > + > + > + <476> + > + > + > + <477> + > + > + > + <478> + > + > + > + <479> + > + > + > + <480> + > + > + > + <481> + > + > + > + <482> + > + > + > + <483> + > + > + > + <484> + > + > + > + <485> + > + > + > + <486> + > + > + > + <487> + > + > + > + <488> + > + > + > + <489> + > + > + > + <490> + > + > + > + <491> + > + > + > + <492> + > + > + > + <493> + > + > + > + <494> + > + > + > + <495> + > + > + > + <496> + > + > + > + <497> + > + > + > + <498> + > + > + > + <499> + > + > + > + <500> + > + > + > + <501> + > + > + > + <502> + > + > + > + <503> + > + > + > + <504> + > + > + > + <505> + > + > + > + <506> + > + > + > + <507> + > + > + > + <508> + > + > + > + <509> + > + > + > + <510> + > + > + > + <511> + > + > + > + <512> + > + > + > + <513> + > + > + > + <514> + > + > + > + <515> + > + > + > + <516> + > + > + > + <517> + > + > + > + <518> + > + > + > + <519> + > + > + > + <520> + > + > + > + <521> + > + > + > + <522> + > + > + > + <523> + > + > + > + <524> + > + > + > + <525> + > + > + > + <526> + > + > + > + <527> + > + > + > + <528> + > + > + > + <529> + > + > + > + <530> + > + > + > + <531> + > + > + > + <532> + > + > + > + <533> + > + > + > + <534> + > + > + > + <535> + > + > + > + <536> + > + > + > + <537> + > + > + > + <538> + > + > + > + <539> + > + > + > + <540> + > + > + > + <541> + > + > + > + <542> + > + > + > + <543> + > + > + > + <544> + > + > + > + <545> + > + > + > + <546> + > + > + > + <547> + > + > + > + <548> + > + > + > + <549> + > + > + > + <550> + > + > + > + <551> + > + > + > + <552> + > + > + > + <553> + > + > + > + <554> + > + > + > + <555> + > + > + > + <556> + > + > + > + <557> + > + > + > + <558> + > + > + > + <559> + > + > + > + <560> + > + > + > + <561> + > + > + > + <562> + > + > + > + <563> + > + > + > + <564> + > + > + > + <565> + > + > + > + <566> + > + > + > + <567> + > + > + > + <568> + > + > + > + <569> + > + > + > + <570> + > + > + > + <571> + > + > + > + <572> + > + > + > + <573> + > + > + > + <574> + > + > + > + <575> + > + > + > + <576> + > + > + > + <577> + > + > + > + <578> + > + > + > + <579> + > + > + > + <580> + > + > + > + <581> + > + > + > + <582> + > + > + > + <583> + > + > + > + <584> + > + > + > + <585> + > + > + > + <586> + > + > + > + <587> + > + > + > + <588> + > + > + > + <589> + > + > + > + <590> + > + > + > + <591> + > + > + > + <592> + > + > + > + <593> + > + > + > + <594> + > + > + > + <595> + > + > + > + <596> + > + > + > + <597> + > + > + > + <598> + > + > + > + <599> + > + > + > + <600> + > + > + > + <601> + > + > + > + <602> + > + > + > + <603> + > + > + > + <604> + > + > + > + <605> + > + > + > + <606> + > + > + > + <607> + > + > + > + <608> + > + > + > + <609> + > + > + > + <610> + > + > + > + <611> + > + > + > + <612> + > + > + > + <613> + > + > + > + <614> + > + > + > + <615> + > + > + > + <616> + > + > + > + <617> + > + > + > + <618> + > + > + > + <619> + > + > + > + <620> + > + > + > + <621> + > + > + > + <622> + > + > + > + <623> + > + > + > + <624> + > + > + > + <625> + > + > + > + <626> + > + > + > + <627> + > + > + > + <628> + > + > + > + <629> + > + > + > + <630> + > + > + > + <631> + > + > + > + <632> + > + > + > + <633> + > + > + > + <634> + > + > + > + <635> + > + > + > + <636> + > + > + > + <637> + > + > + > + <638> + > + > + > + <639> + > + > + > + <640> + > + > + > + <641> + > + > + > + <642> + > + > + > + <643> + > + > + > + <644> + > + > + > + <645> + > + > + > + <646> + > + > + > + <647> + > + > + > + <648> + > + > + > + <649> + > + > + > + <650> + > + > + > + <651> + > + > + > + <652> + > + > + > + <653> + > + > + > + <654> + > + > + > + <655> + > + > + > + <656> + > + > + > + <657> + > + > + > + <658> + > + > + > + <659> + > + > + > + <660> + > + > + > + <661> + > + > + > + <662> + > + > + > + <663> + > + > + > + <664> + > + > + > + <665> + > + > + > + <666> + > + > + > + <667> + > + > + > + <668> + > + > + > + <669> + > + > + > + <670> + > + > + > + <671> + > + > + > + <672> + > + > + > + <673> + > + > + > + <674> + > + > + > + <675> + > + > + > + <676> + > + > + > + <677> + > + > + > + <678> + > + > + > + <679> + > + > + > + <680> + > + > + > + <681> + > + > + > + <682> + > + > + > + <683> + > + > + > + <684> + > + > + > + <685> + > + > + > + <686> + > + > + > + <687> + > + > + > + <688> + > + > + > + <689> + > + > + > + <690> + > + > + > + <691> + > + > + > + <692> + > + > + > + <693> + > + > + > + <694> + > + > + > + <695> + > + > + > + <696> + > + > + > + <697> + > + > + > + <698> + > + > + > + <699> + > + > + > + <700> + > + > + > + <701> + > + > + > + <702> + > + > + > + <703> + > + > + > + <704> + > + > + > + <705> + > + > + > + <706> + > + > + > + <707> + > + > + > + <708> + > + > + > + <709> + > + > + > + <710> + > + > + > + <711> + > + > + > + <712> + > + > + > + <713> + > + > + > + <714> + > + > + > + <715> + > + > + > + <716> + > + > + > + <717> + > + > + > + <718> + > + > + > + <719> + > + > + > + <720> + > + > + > + <721> + > + > + > + <722> + > + > + > + <723> + > + > + > + <724> + > + > + > + <725> + > + > + > + <726> + > + > + > + <727> + > + > + > + <728> + > + > + > + <729> + > + > + > + <730> + > + > + > + <731> + > + > + > + <732> + > + > + > + <733> + > + > + > + <734> + > + > + > + <735> + > + > + > + <736> + > + > + > + <737> + > + > + > + <738> + > + > + > + <739> + > + > + > + <740> + > + > + > + <741> + > + > + > + <742> + > + > + > + <743> + > + > + > + <744> + > + > + > + <745> + > + > + > + <746> + > + > + > + <747> + > + > + > + <748> + > + > + > + <749> + > + > + > + <750> + > + > + > + <751> + > + > + > + <752> + > + > + > + <753> + > + > + > + <754> + > + > + > + <755> + > + > + > + <756> + > + > + > + <757> + > + > + > + <758> + > + > + > + <759> + > + > + > + <760> + > + > + > + <761> + > + > + > + <762> + > + > + > + <763> + > + > + > + <764> + > + > + > + <765> + > + > + > + <766> + > + > + > + <767> + > + > + > + <768> + > + > + > + <769> + > + > + > + <770> + > + > + > + <771> + > + > + > + <772> + > + > + > + <773> + > + > + > + <774> + > + > + > + <775> + > + > + > + <776> + > + > + > + <777> + > + > + > + <778> + > + > + > + <779> + > + > + > + <780> + > + > + > + <781> + > + > + > + <782> + > + > + > + <783> + > + > + > + <784> + > + > + > + <785> + > + > + > + <786> + > + > + > + <787> + > + > + > + <788> + > + > + > + <789> + > + > + > + <790> + > + > + > + <791> + > + > + > + <792> + > + > + > + <793> + > + > + > + <794> + > + > + > + <795> + > + > + > + <796> + > + > + > + <797> + > + > + > + <798> + > + > + > + <799> + > + > + > + <800> + > + > + > + <801> + > + > + > + <802> + > + > + > + <803> + > + > + > + <804> + > + > + > + <805> + > + > + > + <806> + > + > + > + <807> + > + > + > + <808> + > + > + > + <809> + > + > + > + <810> + > + > + > + <811> + > + > + > + <812> + > + > + > + <813> + > + > + > + <814> + > + > + > + <815> + > + > + > + <816> + > + > + > + <817> + > + > + > + <818> + > + > + > + <819> + > + > + > + <820> + > + > + > + <821> + > + > + > + <822> + > + > + > + <823> + > + > + > + <824> + > + > + > + <825> + > + > + > + <826> + > + > + > + <827> + > + > + > + <828> + > + > + > + <829> + > + > + > + <830> + > + > + > + <831> + > + > + > + <832> + > + > + > + <833> + > + > + > + <834> + > + > + > + <835> + > + > + > + <836> + > + > + > + <837> + > + > + > + <838> + > + > + > + <839> + > + > + > + <840> + > + > + > + <841> + > + > + > + <842> + > + > + > + <843> + > + > + > + <844> + > + > + > + <845> + > + > + > + <846> + > + > + > + <847> + > + > + > + <848> + > + > + > + <849> + > + > + > + <850> + > + > + > + <851> + > + > + > + <852> + > + > + > + <853> + > + > + > + <854> + > + > + > + <855> + > + > + > + <856> + > + > + > + <857> + > + > + > + <858> + > + > + > + <859> + > + > + > + <860> + > + > + > + <861> + > + > + > + <862> + > + > + > + <863> + > + > + > + <864> + > + > + > + <865> + > + > + > + <866> + > + > + > + <867> + > + > + > + <868> + > + > + > + <869> + > + > + > + <870> + > + > + > + <871> + > + > + > + <872> + > + > + > + <873> + > + > + > + <874> + > + > + > + <875> + > + > + > + <876> + > + > + > + <877> + > + > + > + <878> + > + > + > + <879> + > + > + > + <880> + > + > + > + <881> + > + > + > + <882> + > + > + > + <883> + > + > + > + <884> + > + > + > + <885> + > + > + > + <886> + > + > + > + <887> + > + > + > + <888> + > + > + > + <889> + > + > + > + <890> + > + > + > + <891> + > + > + > + <892> + > + > + > + <893> + > + > + > + <894> + > + > + > + <895> + > + > + > + <896> + > + > + > + <897> + > + > + > + <898> + > + > + > + <899> + > + > + > + <900> + > + > + > + <901> + > + > + > + <902> + > + > + > + <903> + > + > + > + <904> + > + > + > + <905> + > + > + > + <906> + > + > + > + <907> + > + > + > + <908> + > + > + > + <909> + > + > + > + <910> + > + > + > + <911> + > + > + > + <912> + > + > + > + <913> + > + > + > + <914> + > + > + > + <915> + > + > + > + <916> + > + > + > + <917> + > + > + > + <918> + > + > + > + <919> + > + > + > + <920> + > + > + > + <921> + > + > + > + <922> + > + > + > + <923> + > + > + > + <924> + > + > + > + <925> + > + > + > + <926> + > + > + > + <927> + > + > + > + <928> + > + > + > + <929> + > + > + > + <930> + > + > + > + <931> + > + > + > + <932> + > + > + > + <933> + > + > + > + <934> + > + > + > + <935> + > + > + > + <936> + > + > + > + <937> + > + > + > + <938> + > + > + > + <939> + > + > + > + <940> + > + > + > + <941> + > + > + > + <942> + > + > + > + <943> + > + > + > + <944> + > + > + > + <945> + > + > + > + <946> + > + > + > + <947> + > + > + > + <948> + > + > + > + <949> + > + > + > + <950> + > + > + > + <951> + > + > + > + <952> + > + > + > + <953> + > + > + > + <954> + > + > + > + <955> + > + > + > + <956> + > + > + > + <957> + > + > + > + <958> + > + > + > + <959> + > + > + > + <960> + > + > + > + <961> + > + > + > + <962> + > + > + > + <963> + > + > + > + <964> + > + > + > + <965> + > + > + > + <966> + > + > + > + <967> + > + > + > + <968> + > + > + > + <969> + > + > + > + <970> + > + > + > + <971> + > + > + > + <972> + > + > + > + <973> + > + > + > + <974> + > + > + > + <975> + > + > + > + <976> + > + > + > + <977> + > + > + > + <978> + > + > + > + <979> + > + > + > + <980> + > + > + > + <981> + > + > + > + <982> + > + > + > + <983> + > + > + > + <984> + > + > + > + <985> + > + > + > + <986> + > + > + > + <987> + > + > + > + <988> + > + > + > + <989> + > + > + > + <990> + > + > + > + <991> + > + > + > + <992> + > + > + > + <993> + > + > + > + <994> + > + > + > + <995> + > + > + > + <996> + > + > + > + <997> + > + > + > + <998> + > + > + > + <999> + > + > + > +> diff --git a/pom.xml b/pom.xml index 99847de..cf9e0b6 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.xenoamess multi_language - 0.21 + 0.30 diff --git a/src/main/java/com/xenoamess/multi_language/MultiLanguageStructure.java b/src/main/java/com/xenoamess/multi_language/MultiLanguageStructure.java new file mode 100644 index 0000000..300f3ae --- /dev/null +++ b/src/main/java/com/xenoamess/multi_language/MultiLanguageStructure.java @@ -0,0 +1,75 @@ +package com.xenoamess.multi_language; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/* + * I will not restrict you from building this class's object for your own, + * but it is strongly suggest that you first get a MultiLanguageX8lFileUtil, load a file, + * and use MultiLanguageX8lFileUtil.parse to generate this MultiLanguageStructure object. + */ +public class MultiLanguageStructure { + public Map languageMap = new HashMap(); + public String currentLanguage; + + public MultiLanguageStructure() { + currentLanguage = "en"; + } + + + public boolean SetCurrentLanguage(String newCurrentLanguage) { + if (languageMap.containsKey(newCurrentLanguage)) { + currentLanguage = newCurrentLanguage; + return true; + } else { + return false; + } + } + + public SingleLanguageStructure getSingleLanguageStructure(String languageName) { + return languageMap.get(languageName); + } + + public String getText(String textID) { + return this.getText(this.currentLanguage, textID); + } + + public String getText(String languageName, String textID) { + /* + * languageName be "" means shall return the raw textID. + * that is useful when debug, + * ex. we press open debuge setting and then press a key and all text change to raw code./ + * that is also very useful when you need community translations from players. + */ + if (languageName.equals("")) { + return textID; + } + + SingleLanguageStructure singleLanguageStructure = languageMap.get(languageName); + if (singleLanguageStructure != null) { + return singleLanguageStructure.getText(textID); + } else { + return null; + } + } + + public void putText(String languageName, String textID, String textValue) { + SingleLanguageStructure singleLanguageStructure = languageMap.get(languageName); + if (singleLanguageStructure == null) { + singleLanguageStructure = new SingleLanguageStructure(); + languageMap.put(languageName, singleLanguageStructure); + } + singleLanguageStructure.putText(textID, textValue); + } + + public void show() { + System.out.println(this.languageMap); + for (Map.Entry entry : languageMap.entrySet()) { + System.out.println(entry.getKey()); + System.out.println(entry.getValue()); + } + } + +} diff --git a/src/main/java/com/xenoamess/multi_language/DataCenter.java b/src/main/java/com/xenoamess/multi_language/MultiLanguageX8lFileUtil.java similarity index 87% rename from src/main/java/com/xenoamess/multi_language/DataCenter.java rename to src/main/java/com/xenoamess/multi_language/MultiLanguageX8lFileUtil.java index 86ace00..c0ea434 100644 --- a/src/main/java/com/xenoamess/multi_language/DataCenter.java +++ b/src/main/java/com/xenoamess/multi_language/MultiLanguageX8lFileUtil.java @@ -9,12 +9,11 @@ import java.math.BigInteger; import java.util.*; - -public class DataCenter { +public class MultiLanguageX8lFileUtil { public X8lTree dataTree; - public DataCenter() { + public MultiLanguageX8lFileUtil() { dataTree = new X8lTree(null); dataTree.root = new ContentNode(null); ContentNode nowNode = new ContentNode(dataTree.root); @@ -22,7 +21,7 @@ public DataCenter() { nowNode.addAttribute("version=0.00"); } - public DataCenter loadFromMerge(File file) { + public MultiLanguageX8lFileUtil loadFromMerge(File file) { X8lTree newX8lTree = null; newX8lTree = X8lTree.LoadFromFile(file); if (!newX8lTree.root.getContentNodesFromChildren(1).get(0).attributes.containsKey("merge")) { @@ -33,11 +32,10 @@ public DataCenter loadFromMerge(File file) { } else { mergeFromMerge(newX8lTree); } - return this; } - public DataCenter loadFromSplit(File file) { + public MultiLanguageX8lFileUtil loadFromSplit(File file) { X8lTree newX8lTree = null; newX8lTree = X8lTree.LoadFromFile(file); @@ -348,14 +346,14 @@ public Map splitToSplit() { return res; } - public DataCenter trim() { + public MultiLanguageX8lFileUtil trim() { if (this.dataTree != null) { this.dataTree.trim(); } return this; } - public DataCenter format() { + public MultiLanguageX8lFileUtil format() { if (this.dataTree != null) { this.dataTree.format(); } @@ -393,7 +391,7 @@ protected void sortSingleNode(Comparator comparator, ContentNode nowNode /* * for user's convenience, we completeMissingLanguageNodes before we sortLanguageNodes */ - public DataCenter sort(Comparator comparator) { + public MultiLanguageX8lFileUtil sort(Comparator comparator) { this.completeMissingLanguageNodes(); ContentNode nowRoot1 = this.dataTree.root.getContentNodesFromChildren(1).get(0); @@ -409,7 +407,7 @@ public DataCenter sort(Comparator comparator) { return this; } - public DataCenter sort() { + public MultiLanguageX8lFileUtil sort() { Comparator comparator = new Comparator() { public int compare(String s1, String s2) { BigInteger int1 = null; @@ -446,11 +444,9 @@ public int compare(String s1, String s2) { } - public DataCenter completeMissingLanguageNodes() { + public MultiLanguageX8lFileUtil completeMissingLanguageNodes() { ContentNode nowRoot1 = this.dataTree.root.getContentNodesFromChildren(1).get(0); - Set languageSet1 = new HashSet(); - for (TreeNode treeNode1 : nowRoot1.children) { if (!(treeNode1 instanceof ContentNode)) { continue; @@ -500,4 +496,67 @@ public DataCenter completeMissingLanguageNodes() { } return this; } + + + public MultiLanguageStructure parse() { + this.completeMissingLanguageNodes().sort().trim(); + MultiLanguageStructure res = new MultiLanguageStructure(); + + ContentNode nowRoot1 = this.dataTree.root.getContentNodesFromChildren(1).get(0); + + for (TreeNode treeNode1 : nowRoot1.children) { + if (!(treeNode1 instanceof ContentNode)) { + continue; + } + ContentNode nowNode1 = (ContentNode) treeNode1; + if (nowNode1.attributesKeyList.isEmpty()) { + continue; + } + String textID = nowNode1.getName(); + for (TreeNode treeNode11 : nowNode1.children) { + if (!(treeNode11 instanceof ContentNode)) { + continue; + } + ContentNode nowNode11 = (ContentNode) treeNode11; + if (nowNode11.attributesKeyList.isEmpty()) { + continue; + } + String languageName = nowNode11.getName(); + for (TreeNode treeNode111 : nowNode11.children) { + if (!(treeNode111 instanceof TextNode)) { + continue; + } + String textValue = ((TextNode) treeNode111).textContent; + res.putText(languageName, textID, textValue); + } + } + } + + return res; + } + + + public static void Generate(File file, int num) { + PrintStream out = null; + try { + out = new PrintStream(new FileOutputStream(file)); + out.println(""); + for (int i = 0; i < num; i++) { + out.println("<" + i + ">"); + out.println(">>"); + out.println(">"); + } + out.println(">"); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } finally { + if (out != null) { + out.close(); + } + } + + MultiLanguageX8lFileUtil multiLanguageUtil = new MultiLanguageX8lFileUtil(); + multiLanguageUtil.loadFromMerge(file); + multiLanguageUtil.sort().trim().format().saveToMerge(file); + } } diff --git a/src/main/java/com/xenoamess/multi_language/SingleLanguageStructure.java b/src/main/java/com/xenoamess/multi_language/SingleLanguageStructure.java new file mode 100644 index 0000000..a8d1043 --- /dev/null +++ b/src/main/java/com/xenoamess/multi_language/SingleLanguageStructure.java @@ -0,0 +1,23 @@ +package com.xenoamess.multi_language; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/* + * I will not restrict you from building this class's object for your own, + * but it is strongly suggest that you first get a MultiLanguageX8lFileUtil, load a file, + * and use MultiLanguageX8lFileUtil.parse to generate this MultiLanguageStructure object. + */ +public class SingleLanguageStructure { + public Map textMap = new HashMap(); + + public String getText(String textID) { + return textMap.get(textID); + } + + public String putText(String textID, String textValue) { + return textMap.put(textID, textValue); + } +} diff --git a/src/test/java/TestDataCenter.java b/src/test/java/TestDataCenter.java deleted file mode 100644 index e19c0f9..0000000 --- a/src/test/java/TestDataCenter.java +++ /dev/null @@ -1,19 +0,0 @@ -import com.xenoamess.multi_language.DataCenter; - -import java.io.File; - -public class TestDataCenter { - public static void main(String args[]) { - DataCenter dataCenter = new DataCenter(); - dataCenter.loadFromMerge(new File("demo/merge.x8l")); - dataCenter.loadFromMerge(new File("demo/merge2.x8l")); - dataCenter.saveToMerge(new File("demo/product.x8l")); - dataCenter.trim().saveToMerge(new File("demo/productTrim.x8l")); - dataCenter.format().saveToMerge(new File("demo/productFormat.x8l")); - dataCenter.completeMissingLanguageNodes().format().saveToMerge(new File("demo/productCompleteMissingLanguageNodeFormat.x8l")); - dataCenter.sort().format().saveToMerge(new File("demo/productSortFormat.x8l")); - dataCenter.loadFromSplit(new File("demo/split_urzinko.x8l")).format().saveToMerge(new File("demo/productSortFormat2.x8l")); - dataCenter.saveToSplit(new File("demo")); - dataCenter.dataTree.show(); - } -} diff --git a/src/test/java/Tester.java b/src/test/java/Tester.java new file mode 100644 index 0000000..6f558cb --- /dev/null +++ b/src/test/java/Tester.java @@ -0,0 +1,22 @@ +import com.xenoamess.multi_language.MultiLanguageX8lFileUtil; + +import java.io.File; + +public class Tester { + public static void main(String args[]) { + MultiLanguageX8lFileUtil multiLanguageUtil = new MultiLanguageX8lFileUtil(); + multiLanguageUtil.loadFromMerge(new File("demo/merge.x8l")); + multiLanguageUtil.loadFromMerge(new File("demo/merge2.x8l")); + multiLanguageUtil.saveToMerge(new File("demo/product.x8l")); + multiLanguageUtil.trim().saveToMerge(new File("demo/productTrim.x8l")); + multiLanguageUtil.format().saveToMerge(new File("demo/productFormat.x8l")); + multiLanguageUtil.completeMissingLanguageNodes().format().saveToMerge(new File("demo/productCompleteMissingLanguageNodeFormat.x8l")); + multiLanguageUtil.sort().format().saveToMerge(new File("demo/productSortFormat.x8l")); + multiLanguageUtil.loadFromSplit(new File("demo/split_urzinko.x8l")).format().saveToMerge(new File("demo/productSortFormat2.x8l")); + multiLanguageUtil.saveToSplit(new File("demo")); + multiLanguageUtil.completeMissingLanguageNodes().sort().trim().format().saveToMerge(new File("demo/finaloutput.x8l")); + multiLanguageUtil.dataTree.show(); + MultiLanguageX8lFileUtil.Generate(new File("demo/generate.x8l"), 1000); + multiLanguageUtil.loadFromMerge(new File("demo/merge.x8l")).parse().show(); + } +}