/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 5 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . idl 2 k . dl Ċ Ċ import Ġorg . jetbrains . idl 2 k . urls Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . nodes . Element Ċ import Ġorg . js oup . parser . Tag Ċ import Ġjava . io . File Ċ import Ġjava . net . URL Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġdir Ġ= ĠFile ("../../ idl ") ĊĠĠĠ Ġdir . mkdir s () ĊĊĠĠĠ Ġvar Ġpackage Filter : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġval Ġargs Iterator Ġ= Ġargs . iterator () ĊĠĠĠ Ġwhile Ġ( args Iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarg Ġ= Ġargs Iterator . next () ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( arg ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- package ", Ġ"- pkg ", Ġ"-- package " Ġ-> Ġif Ġ( args Iterator . hasNext ()) Ġpackage Filter Ġ= Ġargs Iterator . next () Ġelse Ġthrow ĠIllegalArgumentException (" argument Ġ$ arg Ġrequires Ġargument ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Argument Ġ$ arg Ġis Ġunknown ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġurls Per Files Ġ= Ġurls . filter Ġ{ Ġpackage Filter Ġ== Ġnull Ġ|| Ġit . second Ġ== Ġpackage Filter Ġ}. groupBy Ġ{ Ġit . second Ġ+ Ġ". idl " Ġ} ĊĊĠĠĠ Ġurls Per Files . forEach Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġe . key ĊĠĠĠĠĠĠĠ Ġval Ġpkg Ġ= Ġe . value . first (). second ĊĊĠĠĠĠĠĠĠ ĠFile ( dir , ĠfileName ). buffered Writer (). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ln (" namespace Ġ$ pkg ; ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ln () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ln () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . value . forEach Ġ{ Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( url ) Ġ= Ġpair ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Loading Ġ$ url ...") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ln ("// ĠDown loaded Ġfrom Ġ$ url ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url . endsWith (". idl ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ln ( URL ( url ). read Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġextract IDL Text ( url , Ġw ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġw . append ln () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġextract IDL Text ( url : ĠString , Ġout : ĠAppend able ) Ġ{ ĊĠĠĠ Ġ// ĠĠĠ Ġval Ġsoup Ġ= ĠJ soup . connect ( url ). validate TL SC ertificates ( false ). ignore Http Errors ( true ). get () ĊĠĠĠ Ġval Ġsoup Ġ= ĠJ soup . parse ( URL ( url ). read Text ()) ĊĠĠĠ Ġfun Ġappend ( it Ġ: ĠElement ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! it . tag (). preserve Whitespace ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġappend ( Element ( Tag . valueOf (" pre "), Ġit . base Uri ()). appendChild ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġit . text () ĊĠĠĠĠĠĠĠ Ġout . append ln ( text ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! text . trim End (). endsWith ("; ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout . append ln ("; ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsoup . select (" pre . idl "). filter Ġ{! it . hasClass (" extract ") }. forEach (:: append ) ĊĠĠĠ Ġsoup . select (" code . idl - code "). forEach (:: append ) ĊĠĠĠ Ġsoup . select (" spec - idl "). forEach (:: append ) Ċ } Ċ