package Ġcom . sh uy u . github . kotlin . model . conversion Ċ Ċ import Ġcom . sh uy u . github . kotlin . model . bean . Trend ing Repo Model Ċ import Ġjava . lang . Exception Ċ Ċ /** Ċ Ġ* ĠHtml ĠString Ġ åĪ° Ġ è¶ ĭ åĬ¿ çĽ¸åħ³ å®ŀä½ĵ è½¬æį¢ Ċ Ġ* ĠCreated Ġby Ġgu os hu yu Ċ Ġ* ĠDate : Ġ 2 0 1 8 - 1 0 - 2 9 Ċ Ġ*/ Ċ val ĠTAG S Ġ= Ġhash Map Of ( ĊĠĠĠĠĠĠĠ ĠPair (" meta ", Ġhash Map Of ( Pair (" start ", Ġ"< span Ġclass =\" d - inline - block Ġfloat - sm - right \"" ), ĠPair (" flag ", Ġ"/ svg > "), ĠPair (" end ", Ġ"</ span > end ")) ), ĊĠĠĠĠĠĠĠ ĠPair (" star Count ", Ġhash Map Of ( Pair (" start ", Ġ"< svg Ġaria - label =\" star \"" ), ĠPair (" flag ", Ġ"/ svg > "), ĠPair (" end ", Ġ"</ a > ")) ), ĊĠĠĠĠĠĠĠ ĠPair (" fork Count ", Ġhash Map Of ( Pair (" start ", Ġ"< svg Ġaria - label =\" repo - fork ed \"" ), ĠPair (" flag ", Ġ"/ svg > "), ĠPair (" end ", Ġ"</ a > "))) Ċ ) Ċ Ċ object ĠT rend Conversion Ġ{ ĊĠĠĠ Ġfun Ġhtml To Repo ( result Data : ĠString ): ĠArrayList < Trend ing Repo Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Of < String , ĠString >() ĊĠĠĠĠĠĠĠ Ġvar Ġresponse Data Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Data Ġ= Ġresult Data . replace ( Regex ("\ n "), Ġ"") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrepos Ġ= ĠArrayList < Trend ing Repo Model >() ĊĠĠĠĠĠĠĠ Ġvar Ġsplit With H 3 Ġ= Ġresponse Data . split ("< article ") ĊĠĠĠĠĠĠĠ Ġsplit With H 3 Ġ= Ġsplit With H 3 . sub List ( 1 , Ġsplit With H 3 . size ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġsplit With H 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo Ġ= ĠT rend ing Repo Model () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhtml Ġ= Ġelement ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Repo Base Info ( repo , Ġhtml ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeta Note Content Ġ= Ġparse Content With Note ( html , Ġ" class =\" f 6 Ġtext - gray Ġmt - 2 \"> ", Ġ"</ div >") Ġ+ Ġ" end " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . meta Ġ= Ġparse Repo Label With Tag ( repo , Ġmeta Note Content , ĠTAG S [" meta "] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . star Count Ġ= Ġparse Repo Label With Tag ( repo , Ġmeta Note Content , ĠTAG S [" star Count "] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . fork Count Ġ= Ġparse Repo Label With Tag ( repo , Ġmeta Note Content , ĠTAG S [" fork Count "] !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Repo Lang ( repo , Ġmeta Note Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Repo Contribut ors ( repo , Ġmeta Note Content ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepos . add ( repo ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrepos ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Content With Note ( html Str : ĠString , Ġstart Flag : ĠString , Ġend Flag : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnote Star Ġ= Ġhtml Str . indexOf ( start Flag ) ĊĠĠĠĠĠĠĠ Ġif Ġ( note Star Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Star Ġ+= Ġstart Flag . length ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnote End Ġ= Ġhtml Str . indexOf ( end Flag , Ġnote Star ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġhtml Str . substring ( note Star , Ġnote End ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcontent . trim () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Repo Base Info ( repo : ĠT rend ing Repo Model , Ġhtml Base Info : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġurl Index Ġ= Ġhtml Base Info . indexOf ("< a Ġhref =\" ") Ġ+ Ġ"< a Ġhref =\"" . length ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġhtml Base Info . substring ( url Index , Ġhtml Base Info . indexOf ("\ "> ", Ġurl Index )) ĊĠĠĠĠĠĠĠ Ġrepo . url Ġ= Ġurl ĊĠĠĠĠĠĠĠ Ġrepo . fullName Ġ= Ġurl . substring ( 1 , Ġurl . length ) ĊĠĠĠĠĠĠĠ Ġif Ġ( repo . fullName . indexOf ('/') Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . name Ġ= Ġrepo . fullName . split ('/ ')[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . repos Name Ġ= Ġrepo . fullName . split ('/ ')[ 1 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġdescription Ġ= Ġparse Content With Note ( html Base Info , Ġ"< p Ġclass =\" col - 9 Ġtext - gray Ġmy - 1 Ġpr - 4 \"> ", Ġ"</ p >") ĊĠĠĠĠĠĠĠ Ġif Ġ( description . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreg Ġ= Ġ"< g - emoji .* ?> .+ ?</ g - emoji >" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Ġ= ĠRegex ( reg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtags Ġ= Ġtag . findAll ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( m Ġin Ġtags ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġm . groups [ 0 ]?. value ?. replace ( Regex ("< g - emoji .* ?> "), Ġ"") ?. replace ( Regex ("</ g - emoji > "), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription . replace ( Regex ( m . groups [ 0 ]?. value !! ), Ġmatch !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepo . description Ġ= Ġdescription ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Repo Label With Tag ( repo : ĠT rend ing Repo Model , Ġnote Content : ĠString , Ġtag : ĠMap < String , ĠString >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Flag Ġ= Ġif Ġ( TAGS [" star Count "] Ġ== Ġtag Ġ|| ĠTAG S [" fork Count "] Ġ== Ġtag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// tag [" start "] Ġ+ Ġ" Ġhref =\" /" Ġ+ Ġrepo . fullName Ġ+ Ġtag [" flag "] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag [" start "] Ġ?: Ġerror ("") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag [" start "] Ġ?: Ġerror ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġparse Content With Note ( note Content , Ġstart Flag , Ġtag [" end "] Ġ?: Ġerror ("")) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( content . indexOf ( tag [" flag "] Ġ?: Ġerror ("")) Ġ!= Ġ- 1 Ġ&& Ġ( content . indexOf ( tag [" flag "] Ġ?: Ġerror ("")) Ġ+ Ġ"</ span >". length Ġ<= Ġcontent . length )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmeta Content Ġ= Ġcontent . substring ( content . indexOf ( tag [" flag "] Ġ?: Ġerror ("")) Ġ+ Ġ( tag [" flag "] Ġ?: Ġerror (" ")). length , Ġcontent . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Content . trim () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . trim () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Repo Lang ( repo : ĠT rend ing Repo Model , Ġmeta Note Content : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġparse Content With Note ( meta Note Content , Ġ" programming Language \"> ", Ġ"</ span >") ĊĠĠĠĠĠĠĠ Ġrepo . language Ġ= Ġcontent . trim () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Repo Contribut ors ( repo : ĠT rend ing Repo Model , Ġhtml Contribut ors String : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhtml Contribut ors Ġ= Ġparse Content With Note ( html Contribut ors String , Ġ" Built Ġby ", Ġ"</ a >") ĊĠĠĠĠĠĠĠ Ġval Ġsplit W it Sem icolon Ġ= Ġhtml Contribut ors . split ("\" ") ĊĠĠĠĠĠĠĠ Ġif Ġ( split W it Sem icolon . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . contributors Ġ= Ġarray ListOf ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepo . contributors Url Ġ= Ġsplit W it Sem icolon [ 1 ] ĊĠĠĠĠĠĠĠ Ġval Ġcontributors Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( element Ġin Ġsplit W it Sem icolon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . indexOf (" http ") Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontributors . add ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepo . contributors Ġ= Ġcontributors ĊĠĠĠ Ġ} Ċ Ċ }