Skip to content

Instantly share code, notes, and snippets.

@movEAX
Created May 19, 2015 21:28
Show Gist options
  • Save movEAX/2efbd42450cfab72f4e6 to your computer and use it in GitHub Desktop.
Save movEAX/2efbd42450cfab72f4e6 to your computer and use it in GitHub Desktop.
XML scheme definition draft
struct Attribute {
name: &str
required: bool
}
let attr: Attr = Default::default();
let nested: Nested = Default::default();
let baseColor = OOXMLObjectBuilder::base()
.def(Attr {name: "auto", ..attr}
.def(Attr {name: "indexed", ..attr}
.def(Attr {name: "rgb", ..attr}
.def(Attr {name: "theme", ..attr}
.def(Attr {name: "tint", ..attr};
OOXMLObjectBuilder::new("fgColor")
.derive(baseColor);
OOXMLObjectBuilder::new("bgColor")
.derive(baseColor);
OOXMLObjectBuilder::new("patternFill")
.def(Attr {name: "patternType", required: true, ..attr}),
.seq(1..1, &["fgColoe", "bgColor"]);
OOXMLObjectBuilder::new("gradientFill")
.def(Attr {name: "type", ..attr})
.def(Attr {name: "degree", ..attr})
.def(Attr {name: "left", ..attr})
.def(Attr {name: "right", ..attr})
.def(Attr {name: "top", ..attr})
.def(Attr {name: "bottom", ..attr});
OOXMLObjectBuilder::new("fill")
.def(Attr {name: "attrA", ..attr})
.def(Attr {name: "attrB", required: true, ..attr})
.choice(1..1, &["patternFill", "gradientFill"]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment