/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . android . build . gradle . internal . matcher Ċ Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Path Matcher Ċ import Ġjava . util . regex . Matcher Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* ĠImplementation Ġof Ġ[ Path Matcher ] Ġthat Ġcan Ġhandle Ġfile Ġpath Ġw ih Ġa Ġstatic Ġprefix Ġand Ġfile Ġname Ġwith Ċ Ġ* Ġan Ġextension Ġ: Ċ Ġ* Ċ Ġ* Ġ/ META - INF / services /\ *. xml Ċ Ġ* Ċ Ġ*/ Ċ open Ġclass ĠFile Extension With Prefix Path Matcher ( val Ġmatcher : ĠMatcher ) Ġ: ĠPath Matcher Ġ{ ĊĊĠĠĠ Ġval Ġprefix : ĠString ĊĠĠĠ Ġval Ġextension : ĠString ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! matcher . matches ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" matcher Ġ$ matcher Ġdoes Ġnot Ġmatch Ġthis Ġfactory ") ĊĠĠĠĠĠĠĠ Ġprefix = Ġmatcher . group ( 1 ) ĊĠĠĠĠĠĠĠ Ġextension = Ġif Ġ( matcher . group Count () Ġ> Ġ 1 ) Ġmatcher . group ( 2 ) Ġelse Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpattern : ĠPattern = ĠPattern . compile (" (/ [^ * {}] */) \\ * \\. ([^ */ {} ]*) ") ĊĠĠĠĠĠĠĠ Ġfun Ġfactory () = Ġobject : ĠG lob Path Matcher Factory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild ( glob : ĠMatcher )= ĠFile Extension With Prefix Path Matcher ( glob ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpattern () Ġ= Ġpattern ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmatches ( p 0 : ĠPath ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath AsString Ġ= Ġp 0 ?. toString ()?. replace ( File . separator Char , Ġ'/') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġpath AsString . startsWith ( prefix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġpath AsString . indexOf ('/', Ġprefix . length ) Ġ== Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġpath AsString . endsWith ( extension ) ĊĠĠĠ Ġ} Ċ }