From c2020b0d7f4fbdc5ac732abd0255a84a3fdaaefd Mon Sep 17 00:00:00 2001 From: gemmaro Date: Sun, 13 Jun 2021 21:48:29 +0900 Subject: [PATCH 1/3] Generalize string types to take as arguments `asciidoctor_rs::parse` and `asciidoctor_rs::parsing::tokenizer::Tokenizer::new` will take the more generic string types as arguments. --- src/lib.rs | 2 +- src/parsing/tokenizer.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index a93f644..6ee35c0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,7 +25,7 @@ pub(crate) mod utils; /// ```rust /// let expression = asciimath_rs::parse("sin(2x) + 3".to_string()); /// ``` -pub fn parse(content: String) -> Expression { +pub fn parse>(content: S) -> Expression { let mut tokenizer = Tokenizer::new(content); let tokens = tokenizer.parse(); let mut tree_parser = TreeParser::new(tokens); diff --git a/src/parsing/tokenizer.rs b/src/parsing/tokenizer.rs index 0cfa27c..3591439 100644 --- a/src/parsing/tokenizer.rs +++ b/src/parsing/tokenizer.rs @@ -19,8 +19,8 @@ pub struct Tokenizer { } impl Tokenizer { - pub fn new(text: String) -> Self { - let mut chars = text.chars().collect::>(); + pub fn new>(text: S) -> Self { + let mut chars = text.as_ref().chars().collect::>(); chars.push('\n'); Self { ctm: CharTapeMachine::new(chars), From be1a65ef5cbc1af7ccec857d2bf921af7baf388f Mon Sep 17 00:00:00 2001 From: trivernis Date: Sun, 13 Jun 2021 15:29:08 +0200 Subject: [PATCH 2/3] Add doc-comments with examples to public functions Signed-off-by: trivernis --- src/lib.rs | 2 +- src/parsing/tokenizer.rs | 10 ++++++++++ src/parsing/tree_parser.rs | 16 ++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 6ee35c0..0280b44 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -22,7 +22,7 @@ pub(crate) mod utils; /// /// Example: /// -/// ```rust +/// ``` /// let expression = asciimath_rs::parse("sin(2x) + 3".to_string()); /// ``` pub fn parse>(content: S) -> Expression { diff --git a/src/parsing/tokenizer.rs b/src/parsing/tokenizer.rs index 3591439..c4e2e16 100644 --- a/src/parsing/tokenizer.rs +++ b/src/parsing/tokenizer.rs @@ -19,6 +19,15 @@ pub struct Tokenizer { } impl Tokenizer { + /// Creates a new AsciiMath tokenizer with a given input string. + /// After creation the parse method can be used to parse a list of tokens + /// Example: + /// ``` + /// use asciimath_rs::parsing::tokenizer::Tokenizer; + /// + /// let mut tokenizer = Tokenizer::new("2^(2-i)"); + /// let tokens = tokenizer.parse(); + /// ``` pub fn new>(text: S) -> Self { let mut chars = text.as_ref().chars().collect::>(); chars.push('\n'); @@ -27,6 +36,7 @@ impl Tokenizer { } } + /// Parses the input string passed on creation of the tokenizer into a list of tokens pub fn parse(&mut self) -> Vec { let mut tokens = Vec::::new(); self.ctm.seek_whitespace(); diff --git a/src/parsing/tree_parser.rs b/src/parsing/tree_parser.rs index 5058ac2..82abc47 100644 --- a/src/parsing/tree_parser.rs +++ b/src/parsing/tree_parser.rs @@ -17,6 +17,21 @@ pub struct TreeParser { } impl TreeParser { + /// Creates a new TreeParser that takes tokens parsed by the Tokenizer. The parse method + /// can be used to create the Expression tree. + /// Example: + /// ``` + /// use asciimath_rs::parsing::tokenizer::Tokenizer; + /// use asciimath_rs::parsing::tree_parser::TreeParser; + /// + /// // use the tokenizer to create a list of tokens + /// let mut tokenizer = Tokenizer::new("2*2"); + /// let tokens = tokenizer.parse(); + /// + /// // use the tree parser to build the expression tree + /// let mut tree_parser = TreeParser::new(tokens); + /// tree_parser.parse(); + /// ``` pub fn new(tokens: Vec) -> Self { Self { tokens, @@ -25,6 +40,7 @@ impl TreeParser { } } + /// Creates an expression tree out of the tokens passed to the TreeParser on creation pub fn parse(&mut self) -> Expression { self.remove_whitespace(); self.parse_expression() From 8888f9612769ac616b476bbde6a651654a767ce4 Mon Sep 17 00:00:00 2001 From: trivernis Date: Sun, 13 Jun 2021 15:29:32 +0200 Subject: [PATCH 3/3] Increment version Signed-off-by: trivernis --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 6b3d19e..e2f93e9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ name = "asciimath-rs" description = "AsciiMath parser" repository = "https://github.com/trivernis/asciimath-rs" -version = "0.6.0" +version = "0.6.1" authors = ["trivernis "] edition = "2018" readme = "README.md"