/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* Ġ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 . gradle . gradle 2 k ts . conversion Ċ Ċ import Ġorg . gradle . gradle 2 k ts . ast .* Ċ Ċ val Ġk Map Of Args Ġ= Ġk Invocation Of (" map Of ") Ġ/ ĠK Invocation :: args Ċ Ċ val Ġk ListOf Args Ġ= Ġk Invocation Of (" listOf ") Ġ/ ĠK Invocation :: args Ċ Ċ val Ġk Task Invocation Args Ġ= Ġk Invocation Of (" task ") Ġ/ ĠK Invocation :: args Ċ Ċ val Ġk Complex Task Args Ġ= ĊĠĠĠ Ġ( k Element ( 0 ) Ġ/ Ġk Map Of Args ) Ġ* Ġ( k Element ( 1 ) Ġ/ Ġk String ) Ġ* Ġk Elements ( from Index Ġ= Ġ 2 ) Ċ Ċ val Ġk Last Lambda Ġ= Ġk Last Ġ/ Ġk Lambda Ċ Ċ val Ġtask Delegate From Complex Task Ġ= ĊĠĠĠ Ġk Complex Task Args Ġ/ Ġ{ Ġ( task Properties , Ġtask Name , Ġremaining ) Ġ-> ĊĠĠĠĠĠĠĠ Ġ( k Last Lambda Ġ* Ġk All But Last )( remaining ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġ( lambda , Ġall But Last ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall But Last Ġ+ Ġtask Lambda For ( task Properties , Ġoriginal Body Ġ= Ġlambda . body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ?: Ġremaining Ġ+ Ġtask Lambda For ( task Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġtask Delegate Args Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Delegate ( task Name , Ġtask Delegate Args ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ val Ġtask Delegate From Simple Task Ġ= ĊĠĠĠ Ġ( k Element ( 0 ) Ġ/ Ġk String ) Ġ* Ġk Elements ( from Index Ġ= Ġ 1 ) Ġ/ Ġ{ Ġ( task Name , Ġtask Args ) Ġ-> ĊĠĠĠĠĠĠĠ Ġtask Delegate ( task Name , Ġtask Args ) ĊĠĠĠ Ġ} ĊĊ Ċ val Ġbe aut ify Ġ= ĊĠĠĠ Ġbottom Up Transform ( ĊĠĠĠĠĠĠĠ Ġk Task Invocation Args Ġ/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( task Delegate From Complex Task Ġor Ġtask Delegate From Simple Task )) ĊĊ Ċ val Ġk Task Property Ġ= ĊĠĠĠ Ġk Tuple Ġ/ Ġ(( K In fix :: left Ġ/ Ġk String ) Ġ* Ġ( K In fix :: right Ġ/ Ġ( k ListOf Args Ġor Ġ:: k Node As List ))) Ċ Ċ val Ġtask Property Invocation Ġ= ĊĠĠĠ Ġk Task Property Ġ/ Ġ{ Ġ( task Name , Ġargs ) Ġ-> ĊĠĠĠĠĠĠĠ ĠK Invocation ( K Identifier ( task Name ), Ġargs ) ĊĠĠĠ Ġ} Ċ Ċ fun Ġtask Lambda For ( task Properties : ĠList < K Node >, Ġoriginal Body : ĠK Node ? Ġ= Ġnull ) Ġ= ĊĠĠĠ Ġtask Properties ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġtask Property Invocation ( it ) Ġ?: Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġproperty Inv ocations Ġ-> Ġoriginal Body ?. let Ġ{ Ġproperty Inv ocations Ġ+ Ġit Ġ} Ġ?: Ġproperty Inv ocations Ġ} ĊĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġbody Ġ-> ĠK Lambda ( pack ( body )) Ġ} Ċ Ċ fun Ġtask Delegate ( task Name : ĠString , Ġargs : ĠList < K Node >): ĠK Delegate Ġ= ĊĠĠĠ ĠK Delegate ( K Identifier ( task Name ), Ġif Ġ( args . isEmpty ()) Ġtasks Creating Ġelse ĠK Invocation ( tasks Creating , Ġargs )) Ċ Ċ val Ġtasks Creating Ġ= ĠK Member ( K Identifier (" tasks "), ĠK Identifier (" creating ")) Ċ