MCPcopy
hub / github.com/micro-editor/micro / ParseDef

Function ParseDef

pkg/highlight/parser.go:229–265  ·  view source on GitHub ↗

ParseDef parses an input syntax file into a highlight Def

(f *File, header *Header)

Source from the content-addressed store, hash-verified

227
228// ParseDef parses an input syntax file into a highlight Def
229func ParseDef(f *File, header *Header) (s *Def, err error) {
230 // This is just so if we have an error, we can exit cleanly and return the parse error to the user
231 defer func() {
232 if r := recover(); r != nil {
233 var ok bool
234 err, ok = r.(error)
235 if !ok {
236 err = fmt.Errorf("pkg: %v", r)
237 }
238 }
239 }()
240
241 src := f.yamlSrc
242
243 s = new(Def)
244 s.Header = header
245
246 for k, v := range src {
247 if k == "rules" {
248 inputRules := v.([]any)
249
250 rules, err := parseRules(inputRules, nil)
251 if err != nil {
252 return nil, err
253 }
254
255 s.rules = rules
256 }
257 }
258
259 if s.rules == nil {
260 // allow empty rules
261 s.rules = &rules{}
262 }
263
264 return s, err
265}
266
267// HasIncludes returns whether this syntax def has any include statements
268func HasIncludes(d *Def) bool {

Callers 4

parseDefFromFileFunction · 0.92
UpdateRulesMethod · 0.92
resolveIncludesInDefFunction · 0.85
resolveIncludesInRegionFunction · 0.85

Calls 1

parseRulesFunction · 0.85

Tested by

no test coverage detected