-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlanguage_clojure.go
More file actions
23 lines (18 loc) · 997 Bytes
/
language_clojure.go
File metadata and controls
23 lines (18 loc) · 997 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package flourite
import "regexp"
var clojure = []languagePattern{
{expression: regexp.MustCompile(`^(\s+)?\(ns(\s+)(.*)(\))?$`), patternType: metaModule},
{expression: regexp.MustCompile(`^(\s+)?\(print(ln)?(\s+)(.*)(\))$`), patternType: keywordPrint},
{expression: regexp.MustCompile(`^(\s+)?\((de)?fn(-)?(\s+)(.*)(\))?$`), patternType: keywordFunction},
{expression: regexp.MustCompile(`^(\s+)?\((let|def)(\s+)(.*)(\))?$`), patternType: keywordVariable},
{expression: regexp.MustCompile(`^(\s+)?\((do|if|loop|cond|when|or|and|condp|case)`), patternType: keywordControl},
// collections and sequences
{
expression: regexp.MustCompile(`^(\s+)?\((class|coll\?|seq\?|range|cons|conj|concat|map|filter|reduce)(\s+)(.*)(\))?$`),
patternType: keyword,
},
// threading macro
{expression: regexp.MustCompile(`^(\s+)?\((as)?->(>)?`), patternType: macro},
// modules
{expression: regexp.MustCompile(`^(\s+)?\((use|require|import|:import)(\s+)(.*)(\))?$`), patternType: metaModule},
}