Struct yaml_peg::Node [−][src]
Expand description
Parser node, includes line number, column number, type assertion and anchor.
This type will ignore additional members when comparison and hashing.
use std::collections::HashSet; use yaml_peg::Node; let mut s = HashSet::new(); s.insert(Node::new("a".into()).pos(0)); s.insert(Node::new("a".into()).pos(1)); s.insert(Node::new("a".into()).pos(2)); assert_eq!(s.len(), 1);
There is a convenient macro node!
to create nodes literally.
Nodes can be indexing by usize
or &str
,
but it will always return self if the index is not contained.
use yaml_peg::node; let n = node!(null); assert_eq!(n["a"][0]["bc"], n);
There are as_*
methods provide Result<T, u64>
returns with node position,
default options can be created by Result::unwrap_or
,
additional error message can be attach by Result::map_err
,
and the optional Option
can be return by Result::ok
,
which shown as following example:
use yaml_peg::node; fn main() -> Result<(), (&'static str, u64)> { let n = node!({ node!("title") => node!(12.) }); let n = n.get(&["title"]).map_err(|p| ("missing \"title\"", p))?; assert_eq!( Err(("title", 0)), n.as_str().map_err(|p| ("title", p)) ); assert_eq!( Option::<&str>::None, n.as_str().ok() ); Ok(()) }
For default value on map type, Node::get
method has a shorten method Node::get_default
to combining
transform function and default function as well.
Fields
pos: u64
Document position
ty: String
Type assertion
anchor: String
Anchor reference
yaml: Yaml
YAML data
Implementations
Convert to boolean.
use yaml_peg::{node}; assert!(node!(true).as_bool().unwrap());
Convert to integer.
use yaml_peg::node; assert_eq!(60, node!(60).as_int().unwrap());
Convert to float.
use yaml_peg::node; assert_eq!(20.06, node!(20.06).as_float().unwrap());
Convert to number.
use yaml_peg::node; assert_eq!(60, node!(60).as_number().unwrap()); assert_eq!(20.06, node!(20.06).as_number().unwrap());
Convert to string pointer.
This method allows null, it represented as empty string.
You can check them by str::is_empty
.
use yaml_peg::node; assert_eq!("abc", node!("abc").as_str().unwrap()); assert!(node!(null).as_str().unwrap().is_empty());
Convert to string pointer for string, null, bool, int, and float type.
This method is useful when the option mixed with digit values.
use yaml_peg::node; assert_eq!("abc", node!("abc").as_value().unwrap()); assert_eq!("123", node!(123).as_value().unwrap()); assert_eq!("12.04", node!(12.04).as_value().unwrap()); assert_eq!("true", node!(true).as_value().unwrap()); assert_eq!("false", node!(false).as_value().unwrap()); assert!(node!(null).as_value().unwrap().is_empty());
Convert to the string pointer of an anchor.
use yaml_peg::node; assert_eq!("abc", node!(*("abc")).as_anchor().unwrap());
Convert to array.
WARNING: The object ownership will be took.
use yaml_peg::node; assert_eq!( &vec![node!(1), node!(2)], node!([node!(1), node!(2)]).as_array().unwrap() );
Convert to map.
WARNING: The object ownership will be took.
use yaml_peg::node; assert_eq!( &node!(2), node!({node!(1) => node!(2)}).as_map().unwrap().get(&node!(1)).unwrap() );
Convert to map and try to get the value by keys recursivly.
If any key is missing, return Err
with node position.
use yaml_peg::node; assert_eq!( &node!(30.), node!({node!("a") => node!({node!("b") => node!(30.)})}).get(&["a", "b"]).unwrap() );
Same as Node::get
but provide default value if the key is missing.
For this method, a transform method as_*
is required.
- If the value exist, return the value.
- If value is a wrong type, return
Err
with node position. - If the value is not exist, return the default value.
use yaml_peg::{node, Node}; let a = node!({node!("a") => node!({node!("b") => node!("c")})}); assert_eq!( "c", a.get_default(&["a", "b"], "d", Node::as_str).unwrap() ); let b = node!({node!("a") => node!({})}); assert_eq!( "d", b.get_default(&["a", "b"], "d", Node::as_str).unwrap() ); let c = node!({node!("a") => node!({node!("b") => node!(20.)})}); assert_eq!( Err(0), c.get_default(&["a", "b"], "d", Node::as_str) );
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Node
impl UnwindSafe for Node
Blanket Implementations
Mutably borrows from an owned value. Read more