Use yaml instead of json

This commit is contained in:
Zachary Yedidia
2017-02-15 16:58:19 -05:00
parent 3b1e96fcda
commit 33e77466e0
+9 -9
View File
@@ -1,8 +1,8 @@
package highlight package highlight
import ( import (
"encoding/json"
"fmt" "fmt"
"gopkg.in/yaml.v2"
"regexp" "regexp"
) )
@@ -47,8 +47,8 @@ type Region struct {
// ParseDef parses an input syntax file into a highlight Def // ParseDef parses an input syntax file into a highlight Def
// Note that ParseDef may return multiple errors // Note that ParseDef may return multiple errors
func ParseDef(input []byte) (*Def, error) { func ParseDef(input []byte) (*Def, error) {
var rules map[string]interface{} var rules map[interface{}]interface{}
if err := json.Unmarshal(input, &rules); err != nil { if err := yaml.Unmarshal(input, &rules); err != nil {
return nil, err return nil, err
} }
@@ -60,7 +60,7 @@ func ParseDef(input []byte) (*Def, error) {
s.ft = filetype s.ft = filetype
} else if k == "detect" { } else if k == "detect" {
ftdetect := v.(map[string]interface{}) ftdetect := v.(map[interface{}]interface{})
if len(ftdetect) >= 1 { if len(ftdetect) >= 1 {
syntax, err := regexp.Compile(ftdetect["filename"].(string)) syntax, err := regexp.Compile(ftdetect["filename"].(string))
if err != nil { if err != nil {
@@ -96,7 +96,7 @@ func parseRules(input []interface{}, curRegion *Region) (*Rules, error) {
rules := new(Rules) rules := new(Rules)
for _, v := range input { for _, v := range input {
rule := v.(map[string]interface{}) rule := v.(map[interface{}]interface{})
for k, val := range rule { for k, val := range rule {
group := k group := k
@@ -108,10 +108,10 @@ func parseRules(input []interface{}, curRegion *Region) (*Rules, error) {
return nil, err return nil, err
} }
rules.patterns = append(rules.patterns, &Pattern{group, r}) rules.patterns = append(rules.patterns, &Pattern{group.(string), r})
case map[string]interface{}: case map[interface{}]interface{}:
// Region // Region
region, err := parseRegion(group, object, curRegion) region, err := parseRegion(group.(string), object, curRegion)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -125,7 +125,7 @@ func parseRules(input []interface{}, curRegion *Region) (*Rules, error) {
return rules, nil return rules, nil
} }
func parseRegion(group string, regionInfo map[string]interface{}, prevRegion *Region) (*Region, error) { func parseRegion(group string, regionInfo map[interface{}]interface{}, prevRegion *Region) (*Region, error) {
var err error var err error
region := new(Region) region := new(Region)