package Ġcom . lon ely bytes . swift lint . completion Ċ Ċ import Ġcom . intellij . code Insight . completion .* Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Builder Ċ import Ġcom . intellij . notification . Notification Ċ import Ġcom . intellij . notification . Notification Type Ċ import Ġcom . intellij . notification . Notifications Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . patterns . Platform Patterns Ċ import Ġcom . intellij . util . Processing Context Ċ import Ġcom . jetbrains . swift . lang . parser . Swift Lazy E ol Comment ElementType Ċ import Ġcom . jetbrains . swift . psi . impl . elementType Ċ import Ġcom . lon ely bytes . swift lint . Configuration Ċ import Ġcom . lon ely bytes . swift lint . Swift Lint Ċ import Ġcom . lon ely bytes . swift lint . Swift Lint Inspection Ċ import Ġjava . io . IOException Ċ Ċ class ĠSwift Lint Completion Contributor Ġ: ĠCompletion Contributor () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġproject : ĠProject ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġrules From Swift Lint : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Project Ġ= Ġproject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Project Ġ?: Ġreturn Ġempty List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSwift Lint () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Swift Lint Rules List ( Swift Lint Inspection . State ( current Project ). project Or Global Swift Lint Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġline Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġline . split ("\\ | ". to Regex ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parts . size Ġ!= Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrule Id Ġ= Ġparts [ 1 ]. trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Opt In Ġ= Ġparts [ 2 ]. trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip Ġheader Ġline ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rule Id Ġ== Ġ" identifier " Ġ&& Ġis Opt In Ġ== Ġ" opt - in ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( rule Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . Bus . notify ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . KEY _ SW IF TL INT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Error ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCan 't Ġget ĠSwift Lint Ġrules ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠException : Ġ${ e . message } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Type . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInterruptedException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠLINE _ COMMENT _ PREFIX Ġ= Ġ"// " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSW IF TL INT _ KEYWORD _ WITH _ COL ON Ġ= Ġ" swift lint :" ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġactions : ĠList < String > Ġ= ĠlistOf (" enable ", Ġ" disable ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmodifiers : ĠList < String > Ġ= ĠlistOf (" next ", Ġ" this ", Ġ" previous ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġactions With Modifiers : ĠList < String > Ġ= Ġactions . flatMap Ġ{ Ġaction Ġ-> Ġmodifiers . map Ġ{ Ġ"$ action :$ it " Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġswift lint Actions : ĠList < String > Ġ= Ġactions . map Ġ{ ĠSW IF TL INT _ KEYWORD _ WITH _ COL ON Ġ+ Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġswift lint Actions With Modifiers : ĠList < String > Ġ= Ġactions With Modifiers . map Ġ{ ĠSW IF TL INT _ KEYWORD _ WITH _ COL ON Ġ+ Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġswift Lint Rules Ids : ĠList < String > Ġ= Ġempty List () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġextend ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompletion Type . BASIC , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Patterns . psi Element (), Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform Patterns . psi Comment (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCompletion Provider < Completion Parameters >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġadd Comp letions ( parameters : ĠCompletion Parameters , Ġcontext : ĠProcessing Context , ĠresultSet : ĠCompletion ResultSet ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġparameters . position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġswift lint Ġsees Ġonly Ġcomments Ġthat Ġstart Ġwith Ġ` // `, Ġ` /// ` Ġwill Ġnot Ġdo Ġ:( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position . parent . elementType Ġ! is ĠSwift Lazy E ol Comment ElementType Ġ&& Ġposition . parent . firstChild . text Ġ== Ġ"// ") Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( swift Lint Rules Ids . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġparameters . original File . project ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswift Lint Rules Ids Ġ= Ġrules From Swift Lint ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Manager . check Canceled () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= ĠresultSet . prefix Matcher . prefix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Before Prefix Ġ= Ġposition . parent . children ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . text Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" Int ellij Ide a Rule zz z ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. trim Start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop Last ( prefix . length ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswift lint Actions With Modifiers . any Ġ{ Ġtext Before Prefix . startsWith ( it ) Ġ} Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswift Lint Rules Ids . map Ġ{ ĠLookup Element Builder . create ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠresultSet . addElement ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswift lint Actions . any Ġ{ Ġtext Before Prefix . startsWith ( it ) Ġ} Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Before Prefix . endsWith (" :" )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifiers . map Ġ{ ĠLookup Element Builder . create ( it ) Ġ}. forEach Ġ{ ĠresultSet . addElement ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( text Before Prefix . endsWith (" Ġ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswift Lint Rules Ids . map Ġ{ ĠLookup Element Builder . create ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠresultSet . addElement ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultSet . addElement ( Lookup Element Builder . create (" all ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Before Prefix . startsWith ( SW IF TL INT _ KEYWORD _ WITH _ COL ON ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions . map Ġ{ ĠLookup Element Builder . create ( it ) Ġ}. forEach Ġ{ ĠresultSet . addElement ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactions With Modifiers . map Ġ{ ĠLookup Element Builder . create ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠresultSet . addElement ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Before Prefix . isEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠresultSet . addElement ( Lookup Element Builder . create ( SW IF TL INT _ KEYWORD _ WITH _ COL ON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswift lint Actions . map Ġ{ ĠLookup Element Builder . create ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠresultSet . addElement ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswift lint Actions With Modifiers . map Ġ{ ĠLookup Element Builder . create ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠresultSet . addElement ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }