package Ġnl . t ude lf t . hyper ion . plugin . git Ċ Ċ import Ġcom . intellij . execution . process . Process OutputType Ċ import Ġcom . intellij . openapi . util . Key Ċ import Ġgit 4 idea . commands . Git Line Handler Listener Ċ Ċ /** Ċ Ġ* ĠLine Ġreader Ġthat Ġparses Ġthe Ġgit Ġbl ame Ġissued Ġby ĠGit Line Tracker Ġto Ċ Ġ* Ġtrack Ġwhich Ġline Ġthe Ġfile Ġis Ġlocated Ġat Ġnow . Ċ Ġ*/ Ċ class ĠOrigin Bl ame Line Reader Ġ: ĠGit Line Handler Listener Ġ{ ĊĠĠĠ Ġvar Ġhas Read Header Ġ= Ġfalse ĊĠĠĠ Ġvar Ġresult : ĠOrigin Bl ame Read Result ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Line Available ( line : ĠString , Ġoutput Type : ĠKey <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( has Read Header ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhas Read Header Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġget Parts ( line , Ġoutput Type ) ĊĠĠĠĠĠĠĠ Ġif Ġ( parts Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresult Ġ= ĠOrigin Bl ame Read Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparts [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparts [ 1 ]. toInt () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVerifies Ġthat Ġthe Ġoutput Type Ġis Ġstdout Ġand Ġsubsequent ly Ġsplits Ġthe Ġgiven Ġline Ġinto Ġparts . ĊĠĠĠĠ Ġ* ĠThe Ġgiven Ġline Ġcorresponds Ġto Ġthe ĠBl ame Ġresult Ġwe Ġhave Ġobtained . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Parts ( line : ĠString , Ġoutput Type : ĠKey < *> ): ĠList < String >? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthis Ġisn 't Ġstdout , Ġit Ġmeans Ġthe Ġresolve Ġfailed . ĊĠĠĠĠĠĠĠ Ġif Ġ(! Process OutputType . is Stdout ( output Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠStd out Ġmeans Ġwe 're Ġok . ĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġline . split (" Ġ") ĊĠĠĠĠĠĠĠ Ġif Ġ( parts . size Ġ!= Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġshould Ġnever Ġhappen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġparts ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠOrigin Bl ame Read Result ( ĊĠĠĠ Ġval Ġlast Seen Commit : ĠString , ĊĠĠĠ Ġval Ġlast Seen Line : ĠInt Ċ ) Ċ