1 unstable release

0.1.0 Feb 18, 2020

#1988 in Parser implementations

Download history 1/week @ 2023-12-14 4/week @ 2024-01-25 12/week @ 2024-02-01 16/week @ 2024-02-08 20/week @ 2024-02-15 34/week @ 2024-02-22 14/week @ 2024-02-29 10/week @ 2024-03-07 7/week @ 2024-03-14

68 downloads per month
Used in 2 crates

MIT license

32KB
362 lines

comment-parser

Build Status Latest Version Docs License

This crate implements a (pull) parser for extracting comments from code in various programming languages.

Usage

Add this to your Cargo.toml:

[dependencies]
comment-parser = "0.1"

Extract Comments from Rust Code

use comment_parser::CommentParser;

let rust = r#"
/* This is
the main
function */
fn main() {
    // println! is a macro
    println!("Hello World"); // Prints "Hello World"
}
"#;

let rules = comment_parser::get_syntax("rust").unwrap();

let parser = CommentParser::new(rust, rules);

for comment in parser {
    println!("{:?}", comment);
}

This will output the following:

BlockComment(_, " This is\nthe main\nfunction ")
LineComment(_, " println! is a macro")
LineComment(_, " Prints \"Hello World\"")

Extract Comments from Python Code

use comment_parser::CommentParser;

let python = r#"
# In Python main is not a function
if __name__ == "__main__":
    # print is a function
    print("Hello World")  # Prints "Hello World"
"#;

let rules = comment_parser::get_syntax("python").unwrap();

let parser = CommentParser::new(python, rules);

for comment in parser {
    println!("{:?}", comment);
}

This will output the following:

LineComment(_, " In Python main is not a function")
LineComment(_, " print is a function")
LineComment(_, " Prints \"Hello World\"")

Dependencies

~57KB