chiark / gitweb /
this parses, but want to flatten
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 22 Aug 2020 17:08:06 +0000 (18:08 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 22 Aug 2020 17:08:06 +0000 (18:08 +0100)
demo/test.table.toml
src/bin/otter.rs
src/spec.rs

index d3ecd4c597d53d8c2d3bece3b28455db853b8986..73054787af76fc42b3963cb3c23431eb1ac82456 100644 (file)
@@ -1,9 +1,7 @@
 [[players]]
 nick = "alice"
-access = "fixed"
-token = "kmqAKPwK4TfReFjMor8MJhdRPBcwIBpe"
+access = { deliver = "FixedToken", token = "kmqAKPwK4TfReFjMor8MJhdRPBcwIBpe" }
 
 [[players]]
 nick = "bob"
-access = "fixed"
-token = "ccg9kzoTh758QrVE1xMY7BQWB36dNJTx"
+access = { deliver = "FixedToken", token = "ccg9kzoTh758QrVE1xMY7BQWB36dNJTx" }
index a8e77c10f42f14eecb28660d139a3f1d3ae79844..c51af3bf1251de902222f3bd5b2539f11a436475 100644 (file)
@@ -404,7 +404,8 @@ mod create_table {
 
     setup_table(&mut chan, &spec)?;
 
-    eprintln!("CREATE-TABLE DID SETUP_TABLE NEEDS GAMESPEC"); // xxx
+    eprintln!("CREATE-TABLE DID SETUP_TABLE NEEDS GAMESPEC {:?}",
+              &spec); // xxx
   }
 
   inventory::submit!{Subcommand(
index aed4fb6912497e7b8d5028b870184a17dfcc600e..f203cf717f765373801befe740cb333a3ab40528 100644 (file)
@@ -11,7 +11,6 @@ pub struct TableSpec {
 #[derive(Debug,Serialize,Deserialize)]
 pub struct PlayerSpec {
   pub nick: String,
-  #[serde(flatten)]
   pub access: Option<Box<dyn PlayerAccessSpec>>,
 }
 
@@ -31,7 +30,7 @@ pub struct PiecesSpec {
   pub info : Box<dyn PieceSpec>,
 }
 
-#[typetag::serde(tag="access")]
+#[typetag::serde(tag="deliver")]
 pub trait PlayerAccessSpec : Debug {
   fn token_mgi(&self, _player: PlayerId) -> Option<MgmtGameInstruction> {
     None
@@ -41,14 +40,14 @@ pub trait PlayerAccessSpec : Debug {
 }
 
 #[derive(Debug,Serialize,Deserialize)]
-struct FixedToken(RawToken);
+struct FixedToken { token: RawToken }
 
 #[typetag::serde]
 impl PlayerAccessSpec for FixedToken {
   fn token_mgi(&self, player: PlayerId) -> Option<MgmtGameInstruction> {
     Some(MgmtGameInstruction::SetFixedPlayerAccess {
       player,
-      token: self.0.clone(),
+      token: self.token.clone(),
     })
   }
   #[throws(AE)]