/* Ċ Ġ* Ġ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 . kotlin . android . synt hetic . res Ċ Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġorg . jetbrains . kotlin . android . synt hetic . Android Xml Handler Ċ import Ġorg . jetbrains . kotlin . descriptors . Module Descriptor Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjavax . xml . parsers . SAX Parser Ċ import Ġjavax . xml . parsers . SAX Parser Factory Ċ Ċ class ĠCli Android Layout Xml FileManager ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġapplication Package : ĠString , ĊĠĠĠĠĠĠĠ Ġvariants : ĠList < Android Variant > Ċ ) Ġ: ĠAndroid Layout Xml FileManager ( project ) Ġ{ ĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠLOG Ġ= ĠLogger . getInstance ( Cli Android Layout Xml FileManager :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġandroid Module Ġ= ĠAndroid Module ( application Package , Ġvariants ) ĊĊĠĠĠ Ġprivate Ġval Ġs ax Parser : ĠSAX Parser Ġ= Ġinit SAX () ĊĊĠĠĠ Ġoverride Ġfun Ġdo Extract Resources ( files : ĠList < Psi File >, Ġmodule : ĠModule Descriptor ): ĠList < Android Resource > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġarray ListOf < Android Resource >() ĊĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠAndroid Xml Handler Ġ{ Ġid , Ġtag Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources Ġ+= Ġparse Android Resource ( id , Ġtag , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠinputStream Ġ= ĠByteArrayInputStream ( file . virtual File . contents To ByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ax Parser . parse ( inputStream , Ġhandler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . error ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresources ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit SAX (): ĠSAX Parser Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġs ax Factory Ġ= ĠSAX Parser Factory . newInstance () ĊĠĠĠĠĠĠĠ Ġs ax Factory . is Namespace Aware Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġs ax Factory . new SAX Parser () ĊĠĠĠ Ġ} Ċ Ċ } Ċ