/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠF orte Sc ar let Ċ Ġ* Ċ Ġ* Ġcat Code åºĵ çĽ¸åħ³ ä»£çłģ ä½¿çĶ¨ ĠMIT ĠLicense Ġ å¼ĢæºĲ ï¼Į è¯· éģ µ å®Ī åįıè®® çĽ¸åħ³ æĿ¡ æ¬¾ ãĢĤ Ċ Ġ* Ċ Ġ* Ġabout ĠMIT : Ġhttps :// opensource . org / licenses / MIT Ċ Ġ* Ċ Ġ* Ċ Ġ* Ċ Ġ* Ċ Ġ*/ ĊĊ Ċ package Ġcat code Ċ Ċ import Ġcat code . codes . Map N ora N ek o Ċ import Ġcat code . codes . N ora Ny ank o ĊĊ Ċ /** Ċ Ġ* Ġ éĩ İ èī¯ çĮ « çłģ çļĦ æĵįä½ľ å·¥åħ· ç±» ãĢĤ Ċ Ġ* Ċ Ġ* Ġ æŀĦå»º æŃ¤ å·¥åħ· ç±» éľĢè¦ģ æıĲä¾Ľ ä¸Ģä¸ª Ġ` code Type ` åıĤæķ° ä»¥ ä»£è¡¨ æŃ¤ éĩ İ èī¯ çĮ « çłģ çļĦ ç±»åŀĭ ãĢĤ Ċ Ġ* Ċ Ġ* Ġ æīĢ è° ĵ éĩ İ èī¯ çĮ « ï¼Į åį³ code ç±»åŀĭ ä¸į ä¸Ģå®ļ æĺ¯ ` CAT ` çļĦ cat çłģ ãĢĤ Ċ Ġ* Ġ ä¾ĭå¦Ĥ ï¼ļ ` [ CAT : at , code = 1 2 3 ] `, ĠæŃ¤ çłģ çļĦ ç±»åŀĭ ä¸º ` CAT `, Ġ æīĢä»¥ æĺ¯ æłĩåĩĨ çĮ « çĮ « çłģ ï¼Į Ċ Ġ* Ġ èĢĮ ä¾ĭå¦Ĥ ` [ CQ : at , code = 1 2 3 ] `, ĠæŃ¤ çłģ çļĦ ç±»åŀĭ ä¸º ` CQ `, Ġ ä¸įæĺ¯ æłĩåĩĨ çĮ « çĮ « çłģ ï¼Į åį³ ä¸º éĩ İ èī¯ çĮ « çłģ ãĢĤ Ċ Ġ* Ċ Ġ* Ġ> Ġ éĩ İ èī¯ çĮ « Ġ-> Ġãģ® ãĤī ãģ Ń ãģĵ Ġ-> Ġ éĩ İ çĮ « Ġ-> Ġwild cat Ċ Ġ* Ċ Ġ*/ Ċ @ Suppress (" unused ", Ġ" Deprecated Callable Add Replace With ") Ċ public Ġclass ĠW ild cat Code Util Ċ private Ġconstructor ( private Ġval Ġcode Type : ĠString ) Ġ: ĠN ek o Ai bo Ġby ĠN ek o Ai bo Impl ( code Type ), ĠTemplate Ab le , ĠBuilder Ab le Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ kotlin . jvm . Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ kotlin . js . Js Name (" instance ") ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( code Type : ĠString ): ĠW ild cat Code Util Ġ= ĠW ild cat Code Util ( code Type ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġèİ·åıĸ ä¸Ģä¸ª String ä¸º è½½ ä½ĵ çļĦ [ æ¨¡æĿ¿ ][ Code Template ] ĊĠĠĠĠ Ġ* Ġ Ġ@ see ĠString Template ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġstring Template : ĠW ild cat Template < String > Ġ= ĠW ild cat String Template ( code Type , Ġthis ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġèİ·åıĸ [ N ek o ] ä¸º è½½ ä½ĵ çļĦ [ æ¨¡æĿ¿ ][ Code Template ] ĊĠĠĠĠ Ġ* Ġ Ġ@ see ĠN ek o Template ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġne ko Template : ĠW ild cat Template < N ek o > Ġ= ĠN ora N ek o Template ( code Type , Ġstring Template ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æŀĦå»º ä¸Ģä¸ª String ä¸º è½½ ä½ĵ ç±»åŀĭçļĦ [ æŀĦå»º åĻ¨ ][ Code Builder ] ãĢĤ é»ĺè®¤ å¼ĢåĲ¯ è½¬ ä¹ī ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠgetString Code Builder ( type : ĠString , Ġencode : ĠBoolean ): ĠCode Builder < String > Ġ= ĠW ild cat String Code Builder ( code Type , Ġtype , Ġencode ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æŀĦå»º ä¸Ģä¸ª [ N ek o ] ä¸º è½½ ä½ĵ ç±»åŀĭçļĦ [ æŀĦå»º åĻ¨ ][ Code Builder ] ãĢĤ é»ĺè®¤ å¼ĢåĲ¯ è½¬ ä¹ī ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget N ek o Builder ( type : ĠString , Ġencode : ĠBoolean ): ĠCode Builder < N ek o > Ġ= ĠN ora N ek o Builder ( code Type , Ġtype ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æŀĦå»º ä¸Ģä¸ª [ N ek o ] ä¸º è½½ ä½ĵ ç±»åŀĭçļĦ [ æŀĦå»º åĻ¨ ][ Code Builder ] ãĢĤ é»ĺè®¤ å¼ĢåĲ¯ è½¬ ä¹ī ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Lazy N ek o Builder ( type : ĠString , Ġencode : ĠBoolean ): ĠLazy Code Builder < N ek o > Ġ= ĠLazy N ora N ek o Builder ( code Type , Ġtype ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĹł åıĤæķ° çļĦ [ N ek o ] ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġ çĮ « çĮ « çłģ çļĦ ç±»åŀĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġto N ek o ( type : ĠString ): ĠN ora N ek o Ġ= ĠEmpty N ora N ek o ( code Type , Ġtype ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® [ Map ] ç±»åŀĭ åıĤæķ° è½¬ åĮĸ ä¸º [ N ek o ] å®ŀä¾ĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġ çĮ « çĮ « çłģ çļĦ ç±»åŀĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġparams ĠåıĤæķ° åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġto N ek o ( type : ĠString , Ġparams : ĠMap < String , Ġ* >): ĠN ora N ek o Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( params . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto N ek o ( type ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap N ora N ek o . by Map ( code Type , Ġtype , Ġparams . as Sequence (). map Ġ{ Ġit . key Ġto Ġit . value . toString () Ġ}. toMap ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® åıĤæķ° è½¬ åĮĸ ä¸º [ N ek o ] å®ŀä¾ĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġ çĮ « çĮ « çłģ çļĦ ç±»åŀĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġparams ĠåıĤæķ° åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġto N ek o ( type : ĠString , Ġvar arg Ġparams : ĠCat KV < String , Ġ* >): ĠN ora N ek o Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( params . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto N ek o ( type ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMap N ora N ek o . by Map ( code Type , Ġtype , Ġparams . as Sequence (). map Ġ{ Ġit . key Ġto Ġit . value . toString () Ġ}. toMap ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® åıĤæķ° è½¬ åĮĸ ä¸º [ N ek o ] å®ŀä¾ĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġ çĮ « çĮ « çłģ çļĦ ç±»åŀĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġparam Text ĠåıĤæķ° åĪĹè¡¨ , Ġ ä¾ĭå¦Ĥ ï¼ļ" qq = 1 2 3 " ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġto N ek o ( type : ĠString , Ġencode : ĠBoolean , Ġvar arg Ġparam Text : ĠString ): ĠN ora N ek o Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( param Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto N ek o ( type ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( encode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN ora Ny ank o . by Code ( to Cat ( type , Ġencode , Ġ* param Text )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMap N ora N ek o . by Param String ( code Type , Ġtype , Ġ* param Text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæıĲ åıĸ åĩº æĸĩæľ¬ ä¸ŃçļĦ çĮ « çĮ « çłģ ï¼Į å¹¶ å°ģè£ħ ä¸º [ N ek o ] å®ŀä¾ĭ ãĢĤ ĊĠĠĠĠ Ġ* Ġ@ param Ġtext Ġ åŃĺåľ¨ çĮ « çĮ « çłģ çļĦ æŃ£ æĸĩ ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġ è¦ģ èİ·åıĸ çļĦ çĮ « çĮ « çłģ çļĦ ç±»åŀĭ ï¼Į é»ĺè®¤ä¸º æīĢæľī ç±»åŀĭ ĊĠĠĠĠ Ġ* Ġ@ param Ġindex Ġèİ·åıĸ çļĦ ç´¢å¼ķ ä½į çļĦ çĮ « çĮ « çłģ ï¼Į é»ĺè®¤ä¸º 0 ï¼Į åį³ ç¬¬ä¸Ģä¸ª ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget N ek o ( text : ĠString , Ġtype : ĠString , Ġindex : ĠInt ): ĠN ek o ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcat : ĠString Ġ= Ġget Cat ( text , Ġtype , Ġindex ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠN ek o . by Code ( cat ) ĊĠĠĠ Ġ} ĊĊ Ċ } ĊĊĊĊĊĊĊ