Procházet zdrojové kódy

Do not ignore multiple KeyValue* queries

Johannes Hofmann před 7 roky
rodič
revize
d559aca03f
1 změnil soubory, kde provedl 18 přidání a 2 odebrání
  1. 18
    2
      src/config.rs

+ 18
- 2
src/config.rs Zobrazit soubor

@@ -439,10 +439,26 @@ impl Config {
439 439
                 QueryArgs::ValuePattern(pattern.to_string())
440 440
             ),
441 441
             (&None, Some(keyval), None) => Some(
442
-                QueryArgs::KeyValue(keyval.0.to_string(), keyval.1.to_string())
442
+                if self.keyval.len() == 1 {
443
+                    QueryArgs::KeyValue(keyval.0.to_string(), keyval.1.to_string())
444
+                } else {
445
+                    QueryArgs::Intersection(
446
+                        self.keyval.iter()
447
+                            .map(|(k, v)| QueryArgs::KeyValue(k.to_string(), v.to_string()))
448
+                            .collect()
449
+                    )
450
+                }
443 451
             ),
444 452
             (&None, None, Some(keyvalregex)) => Some(
445
-                QueryArgs::KeyValueRegex(keyvalregex.0.to_string(), keyvalregex.1.to_string())
453
+                if self.keyvalregex.len() == 1 {
454
+                    QueryArgs::KeyValueRegex(keyvalregex.0.to_string(), keyvalregex.1.to_string())
455
+                } else {
456
+                    QueryArgs::Intersection(
457
+                        self.keyvalregex.iter()
458
+                            .map(|(k, v)| QueryArgs::KeyValueRegex(k.to_string(), v.to_string()))
459
+                            .collect()
460
+                    )
461
+                }
446 462
             ),
447 463
             (pattern_opt, _, _) => {
448 464
                 let mut vec = vec![];