package Ġtech . sk ot . tools . generation . resources Ċ Ċ import Ġcom . squareup . kotlin po et . File Spec Ċ import Ġcom . squareup . kotlin po et . K Modifier Ċ import Ġcom . squareup . kotlin po et . Property Spec Ċ import Ġcom . squareup . kotlin po et . Type Spec Ċ import Ġtech . sk ot . tools . generation . Generator Ċ import Ġtech . sk ot . tools . generation . file Class Builder Ċ import Ġjava . nio . file . Files Ċ import Ġjava . util . stream . Collectors Ċ import Ġkotlin . io . path . name Without Extension Ċ Ċ fun ĠGenerator . generate Fonts () Ġ{ ĊĊĠĠĠ Ġprintln (" fonts Ġ.... ..... ") ĊĠĠĠ Ġprintln (" generate ĠFonts Ġinterface Ġ.... ..... ") ĊĠĠĠ Ġval Ġfonts Directory Ġ= ĊĠĠĠĠĠĠĠ Ġroot Path . resolve ( modules . view ). resolve (" src / android Main / res _ referenced / font ") ĊĊĊĠĠĠ Ġval Ġcolors Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ(! Files . exists ( fonts Directory )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . list ( fonts Directory ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name Without Extension ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. collect ( Collectors . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun ĠString . to Fonts PropertyName () Ġ= Ġthis ĊĊĊĠĠĠ ĠFile Spec . builder ( ĊĠĠĠĠĠĠĠ Ġfonts Interface . packageName , ĊĠĠĠĠĠĠĠ Ġfonts Interface . simple Name ĊĠĠĠ Ġ). add Type ( Type Spec . interface Builder ( fonts Interface . simple Name ) ĊĠĠĠĠĠĠĠ Ġ. add Properties ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty Spec . builder ( it . to Fonts PropertyName (), Ġtech . sk ot . core . view . Font :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ. writeTo ( generated Common Sources ( modules . view contract )) ĊĊĊĠĠĠ Ġprintln (" generate ĠFonts Ġandroid Ġimplementation Ġ.... ..... ") ĊĠĠĠ Ġfonts Impl . file Class Builder ( listOf ( view R )) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Super interface ( fonts Interface ) ĊĠĠĠĠĠĠĠ Ġadd Properties ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty Spec . builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Fonts PropertyName (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtech . sk ot . core . view . Font :: class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Modifier . OVERRIDE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. initializer (" Font ( R . font .${ it . to Android Resource PropertyName () }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. writeTo ( generated Android Sources ( feature Ġ?: Ġmodules . app )) ĊĊĠĠĠ Ġprintln (" generate ĠFonts Ġf ot ĠView ĠAndroid ĠTest Ġ.... ..... ") ĊĠĠĠ Ġfonts Impl . file Class Builder ( listOf ( view R )) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Super interface ( fonts Interface ) ĊĠĠĠĠĠĠĠ Ġadd Properties ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty Spec . builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Fonts PropertyName (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtech . sk ot . core . view . Font :: class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Modifier . OVERRIDE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. initializer (" Font ( R . font .${ it . to Android Resource PropertyName () }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. writeTo ( generated Android Test Sources ( modules . view )) ĊĊĠĠĠ Ġprintln (" generate ĠFonts Ġj vm Ġmock Ġ.... ..... ") ĊĠĠĠ Ġfonts Mock . file Class Builder () Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Super interface ( fonts Interface ) ĊĠĠĠĠĠĠĠ Ġadd Properties ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolors . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProperty Spec . builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Fonts PropertyName (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtech . sk ot . core . view . Font :: class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Modifier . OVERRIDE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. initializer (" Font (\" ${ it . to Fonts PropertyName ()} \" . hashCode ()) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. writeTo ( generated Jvm Test Sources ( feature Ġ?: Ġmodules . view model )) ĊĊ Ċ }