// ĠCopyright Ġ 2 0 0 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġgit 4 idea . ignore Ċ Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vcs . V cs Key Ċ import Ġcom . intellij . openapi . vcs . changes . Ignored FileContent Provider Ċ import Ġcom . intellij . openapi . vcs . changes . Ignored File Provider Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġgit 4 idea . Git V cs Ċ import Ġgit 4 idea . repo . Git Repository Files . GIT IGNORE Ċ import Ġjava . lang . System . line Separator Ċ Ċ open Ġclass ĠGit Ignored FileContent Provider ( private Ġval Ġproject : ĠProject ) Ġ: ĠIgnore d FileContent Provider Ġ{ ĊĊĠ Ġoverride Ġfun Ġget Supported V cs (): ĠV cs Key Ġ= ĠGit V cs . getKey () ĊĊĠ Ġoverride Ġfun Ġget FileName () Ġ= ĠGIT IGNORE ĊĊĠ Ġoverride Ġfun Ġbuild Ignore FileContent ( ignore File Root : ĠVirtual File , Ġignored File Providers : ĠArray < Ignored File Provider >): ĠString Ġ{ ĊĠĠĠ Ġval Ġcontent Ġ= ĠStringBuilder () ĊĠĠĠ Ġval Ġline Separator Ġ= Ġline Separator () ĊĊĠĠĠ Ġfor Ġ( i Ġin Ġignored File Providers . indices ) Ġ{ ĊĠĠĠĠĠ Ġval Ġprovider Ġ= Ġignored File Providers [ i ] ĊĠĠĠĠĠ Ġval Ġignored File Masks Ġ= Ġprovider . get Ignored Files Masks ( project , Ġignore File Root ) ĊĠĠĠĠĠ Ġif Ġ( ignored File Masks . isEmpty ()) Ġcontinue ĊĊĠĠĠĠĠ Ġif Ġ(! content . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent . append ( line Separator ). append ( line Separator ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġdescription Ġ= Ġprovider . masks Group Description ĊĠĠĠĠĠ Ġif Ġ( description . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent . append ( prepend Comment Hash Character IfNeeded ( description )) ĊĠĠĠĠĠĠĠ Ġcontent . append ( line Separator ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcontent . append ( ignored File Masks . join ToString ( line Separator )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġcontent . toString () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġprepend Comment Hash Character IfNeeded ( description : ĠString ): ĠString Ġ= ĊĠĠĠ Ġif Ġ( description . startsWith ("# ")) Ġdescription Ġelse Ġ"# Ġ$ description " Ċ } Ċ