chiark / gitweb /
wdt: Break out retrieve_log
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 14 Mar 2021 20:33:25 +0000 (20:33 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 14 Mar 2021 20:33:25 +0000 (20:33 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
wdriver/wdriver.rs
wdriver/wdt-simple.rs

index d71024a74bdd89474f69aab4fd2ccc068692dad0..f1f2370841703847c35ee9e8a935f4ac6c760fb5 100644 (file)
@@ -292,6 +292,26 @@ impl<'g> WindowGuard<'g> {
     })()
       .context("convert game position to web page coordinates")?
   }
+
+  #[throws(AE)]
+  pub fn retrieve_log(
+    &self,
+    wanted_pred: &mut dyn FnMut(&str) -> bool)
+    -> Vec<String>
+  {
+    let log = self.find_elements(By::ClassName("logmsg"))?;
+    let log = log.iter()
+      .rev()
+      .map(|e| e.inner_html())
+      .take_while(|h| {
+        h.as_ref().ok()
+          .map(|s: &String| wanted_pred(s))
+          != Some(true)
+      })
+      .collect::<Result<Vec<String>,_>>()?;
+    log
+  }
+
 }
 
 pub type WebCoord = i32;
index 922e64cb946e722cbfd24626bd5383cd642636ee..6f38cd539f92b27a934d56a6a4dfd15db889e38f 100644 (file)
@@ -245,17 +245,8 @@ impl Ctx {
       w.synch()?;
       let p = w.find_piece(pc)?;
       let now = p.posg()?;
-      let log = w.find_elements(By::ClassName("logmsg"))?;
-      let log = log.iter()
-        .rev()
-        .map(|e| e.inner_html())
-        .take_while(|h| {
-          h.as_ref().ok()
-            .map(|s| s.contains("black knight"))
-            != Some(true)
-        })
-        .collect::<Result<Vec<String>,_>>()?;
 
+      let log = w.retrieve_log(&mut |s| s.contains("black knight"))?;
       let held = w.piece_held(&pc)?;
       let client = w.client()?;
       let yes = held.as_ref() == Some(&client);