MCPcopy
hub / github.com/apache/casbin / ToText

Method ToText

model/model.go:351–393  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

349)
350
351func (model Model) ToText() string {
352 tokenPatterns := make(map[string]string)
353
354 for _, ptype := range []string{"r", "p"} {
355 for _, token := range model[ptype][ptype].Tokens {
356 tokenPatterns[token] = rPattern.ReplaceAllString(pPattern.ReplaceAllString(token, "p."), "r.")
357 }
358 }
359 if strings.Contains(model["e"]["e"].Value, "p_eft") {
360 tokenPatterns["p_eft"] = "p.eft"
361 }
362 s := strings.Builder{}
363 writeString := func(sec string) {
364 for ptype := range model[sec] {
365 value := model[sec][ptype].Value
366 for tokenPattern, newToken := range tokenPatterns {
367 value = strings.Replace(value, tokenPattern, newToken, -1)
368 }
369 s.WriteString(fmt.Sprintf("%s = %s\n", sec, value))
370 }
371 }
372 s.WriteString("[request_definition]\n")
373 writeString("r")
374 s.WriteString("[policy_definition]\n")
375 writeString("p")
376 if _, ok := model["g"]; ok {
377 s.WriteString("[role_definition]\n")
378 for ptype := range model["g"] {
379 s.WriteString(fmt.Sprintf("%s = %s\n", ptype, model["g"][ptype].Value))
380 }
381 }
382 if _, ok := model["c"]; ok {
383 s.WriteString("[constraint_definition]\n")
384 for ptype := range model["c"] {
385 s.WriteString(fmt.Sprintf("%s = %s\n", ptype, model["c"][ptype].Value))
386 }
387 }
388 s.WriteString("[policy_effect]\n")
389 writeString("e")
390 s.WriteString("[matchers]\n")
391 writeString("m")
392 return s.String()
393}
394
395func (model Model) Copy() Model {
396 newModel := NewModel()

Callers 2

testModelToTextFunction · 0.95

Calls 1

StringMethod · 0.65

Tested by 1

testModelToTextFunction · 0.76