| 1 | function! Pl#Match#Add(pat, expr) " {{{ |
| 2 | return [a:pat, a:expr] |
| 3 | endfunction " }}} |
| 4 | function! Pl#Match#Any(...) " {{{ |
| 5 | let matches = [] |
| 6 | |
| 7 | for match_name in a:000 |
| 8 | if empty(match_name) |
| 9 | " Skip empty match parameters |
| 10 | continue |
| 11 | endif |
| 12 | |
| 13 | if has_key(g:Powerline#Matches#matches, match_name) |
| 14 | call add(matches, g:Powerline#Matches#matches[match_name]) |
| 15 | endif |
| 16 | |
| 17 | unlet! match_name |
| 18 | endfor |
| 19 | |
| 20 | return ['match', 'any', matches] |
| 21 | endfunction " }}} |
| 22 | function! Pl#Match#Validate(theme) " {{{ |
| 23 | let match = a:theme.matches[1] |
| 24 | |
| 25 | if match == 'none' |
| 26 | return 0 |
| 27 | elseif match == 'any' |
| 28 | let matches = a:theme.matches[2] |
| 29 | |
| 30 | if ! len(matches) |
| 31 | " Empty match array matches everything |
| 32 | return 1 |
| 33 | endif |
| 34 | |
| 35 | for [eval, re] in matches |
| 36 | if match(eval(eval), '\v'. re) != -1 |
| 37 | return 1 |
| 38 | endif |
| 39 | endfor |
| 40 | |
| 41 | return 0 |
| 42 | endif |
| 43 | endfunction " }}} |