libzetta 0.5.0

libzetta is a stable interface for programmatic administration of ZFS
Documentation
//
// Created by intellij-pest on 2019-09-07
// errors
// Author: andoriyu
//

whitespace = _{ " "+ | "\t" }

digit = _{ '0'..'9' }
digits =  { digit ~ (digit | "_")* }
alpha = _{ 'a'..'z' | 'A'..'Z' }
symbol = _{ "!" | "@" | "," | "." | ";" | ":" | "/" | "\'" | "\"" | "(" | ")" | "-"  | "%" }
alpha_num = _{ digit | alpha }
alpha_nums = _{ alpha_num+ }
text = _{ (alpha_num | whitespace |symbol)+ }
path_segment = _{ ("_" | "-" | "."| alpha_num)+ }
snapshot_segment = _{ "@" ~ path_segment}
bookmark_segment = _{ "#" ~ path_segment}
dataset_name = { path_segment ~ ( "/" ~ path_segment)* ~ ( snapshot_segment | bookmark_segment )? }
dataset_type = { "filesystem" | "snapshot" | "volume" | "bookmark" }
dataset_with_type = { dataset_type ~ whitespace ~ dataset_name  }


dataset_not_found = { "cannot open '" ~ dataset_name ~ "': dataset does not exist"}

error = {
    dataset_not_found
}

datasets = { (dataset_name ~ "\n"?)* }
datasets_with_type = { (dataset_with_type ~ "\n"?)* }