for _, v := range strings.Split(in, ",") {
keyVal := strings.Split(v, "=")
- key := strings.ToLower(strings.Trim(keyVal[0], " "))
+ key := strings.Trim(keyVal[0], " ")
if len(keyVal) != 2 {
return opts, fmt.Errorf("invalid Highlight option: %s", key)
}
return
}
+ // lowercase all keys
+ for k, v := range m {
+ delete(m, k)
+ m[strings.ToLower(k)] = v
+ }
+
baseLineNumber := 1
if v, ok := m[linosStartKey]; ok {
baseLineNumber = cast.ToInt(v)
if vs, ok := v.(string); ok {
m[k] = vs != "false"
}
-
case hlLinesKey:
if hlRanges, ok := v.([][2]int); ok {
for i := range hlRanges {
c.Assert(cfg.LineNoStart, qt.Equals, 32)
c.Assert(cfg.Hl_Lines, qt.Equals, "3-8 10-20")
})
+
+ c.Run("applyOptionsFromMap", func(c *qt.C) {
+ cfg := DefaultConfig
+ err := applyOptionsFromMap(map[string]any{
+ "noclasses": true,
+ "lineNos": "inline", // mixed case key, should work after normalization
+ "linenostart": 32,
+ "hl_lines": "3-8 10-20",
+ }, &cfg)
+
+ c.Assert(err, qt.IsNil)
+ c.Assert(cfg.NoClasses, qt.Equals, true)
+ c.Assert(cfg.LineNos, qt.Equals, true)
+ c.Assert(cfg.LineNumbersInTable, qt.Equals, false)
+ c.Assert(cfg.LineNoStart, qt.Equals, 32)
+ c.Assert(cfg.Hl_Lines, qt.Equals, "3-8 10-20")
+ })
}