package Ġsz ew ek . mc gen . task Ċ Ċ import Ġcom . fasterxml . jackson . jr . st ree . J rs Array Ċ import Ġcom . fasterxml . jackson . jr . st ree . J rs String Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . join All Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . gradle . api . tasks . util . Pattern Filter able Ċ import Ġjava . io . File Ċ Ċ open Ġclass ĠGen Item Block Models Ġ: ĠAbstract Process Task () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfilter ( pf : ĠPattern Filter able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpf . include (" generators /*/ models / item model _ blocks . json ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġoutput Dir Name ( namespace : ĠString ) Ġ= Ġ" assets /$ namespace / models / item " ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Process File ( namespace : ĠString , Ġfile : ĠFile , Ġoutput Dir : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodel Json Ġ= Ġfile . read Json () Ġas ĠJ rs Array ĊĠĠĠĠĠĠĠ Ġmodel Json . elements (). as Sequence (). map Ġ{ Ġe Ġ-> Ġscope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġ( e Ġas ĠJ rs String ). value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠFile ( output Dir , Ġ"$ v . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġf . writer (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson . compose To ( it ). start Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" parent ", Ġ"$ namespace : block /$ v ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. end (). finish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ}. toList (). join All () ĊĠĠĠ Ġ} Ċ }