lib-ruby-parser 3.0.5

Ruby parser
Documentation
#[cfg(feature = "lib-ruby-parser-nodes")]
extern crate lib_ruby_parser_nodes;

#[cfg(feature = "lib-ruby-parser-nodes")]
mod comment;
#[cfg(feature = "lib-ruby-parser-nodes")]
mod get_loc_fn;
#[cfg(feature = "lib-ruby-parser-nodes")]
mod messages;
#[cfg(feature = "lib-ruby-parser-nodes")]
mod node_enum;
#[cfg(feature = "lib-ruby-parser-nodes")]
mod node_file;
#[cfg(feature = "lib-ruby-parser-nodes")]
mod node_mod;
#[cfg(feature = "lib-ruby-parser-nodes")]
mod reserved_words;
#[cfg(feature = "lib-ruby-parser-nodes")]
mod visitor;

#[cfg(feature = "lib-ruby-parser-nodes")]
pub(crate) fn generate_nodes() {
    use get_loc_fn::GetLocFn;
    use messages::Messages;
    use node_enum::NodeEnum;
    use node_file::NodeFile;
    use node_mod::NodeMod;
    use reserved_words::ReservedWordsList;
    use visitor::Visitor;

    let nodes = lib_ruby_parser_nodes::nodes();
    let messages = lib_ruby_parser_nodes::messages();

    std::fs::create_dir_all("src/nodes/types").unwrap();

    for node in nodes.iter() {
        NodeFile::new(node).write();
    }

    NodeMod::new(&nodes).write();
    NodeEnum::new(&nodes).write();
    Visitor::new(&nodes).write();
    GetLocFn::new(&nodes).write();
    ReservedWordsList::new().write();
    Messages::new(&messages).write();
}

#[cfg(not(feature = "lib-ruby-parser-nodes"))]
pub(crate) fn generate_nodes() {
    println!("Skipping generating node-based Rust source files")
}