mirror of
https://github.com/joshuadavidthomas/django-template-ast.git
synced 2025-08-04 17:08:00 +00:00
Use borrowed &str instead of String for Lexer
source
This commit is contained in:
parent
dce0745ce4
commit
9d9a886dbc
2 changed files with 12 additions and 8 deletions
14
src/lexer.rs
14
src/lexer.rs
|
@ -2,14 +2,14 @@ use crate::error::LexerError;
|
|||
use crate::scanner::{Scanner, ScannerState};
|
||||
use crate::token::{Token, TokenType, Tokenizer};
|
||||
|
||||
pub struct Lexer {
|
||||
source: String,
|
||||
pub struct Lexer<'a> {
|
||||
source: &'a str,
|
||||
tokens: Vec<Token>,
|
||||
state: ScannerState,
|
||||
}
|
||||
|
||||
impl Lexer {
|
||||
pub fn new(source: String) -> Self {
|
||||
impl<'a> Lexer<'a> {
|
||||
pub fn new(source: &'a str) -> Self {
|
||||
Lexer {
|
||||
source,
|
||||
tokens: Vec::new(),
|
||||
|
@ -202,7 +202,7 @@ impl Lexer {
|
|||
}
|
||||
}
|
||||
|
||||
impl Tokenizer for Lexer {
|
||||
impl<'a> Tokenizer for Lexer<'a> {
|
||||
type Token = Token;
|
||||
type TokenType = TokenType;
|
||||
type Error = LexerError;
|
||||
|
@ -231,7 +231,7 @@ impl Tokenizer for Lexer {
|
|||
}
|
||||
}
|
||||
|
||||
impl Scanner for Lexer {
|
||||
impl<'a> Scanner for Lexer<'a> {
|
||||
type Item = char;
|
||||
|
||||
fn advance(&mut self) -> Self::Item {
|
||||
|
@ -261,7 +261,7 @@ mod tests {
|
|||
use super::*;
|
||||
|
||||
fn tokenize(input: &str) -> Vec<Token> {
|
||||
let mut lexer = Lexer::new(input.to_string());
|
||||
let mut lexer = Lexer::new(input);
|
||||
match lexer.tokenize() {
|
||||
Ok(tokens) => {
|
||||
// Debug print all tokens
|
||||
|
|
|
@ -3,9 +3,13 @@ mod lexer;
|
|||
mod scanner;
|
||||
mod token;
|
||||
|
||||
use lexer::Lexer;
|
||||
use std::error::Error;
|
||||
use token::Tokenizer;
|
||||
|
||||
pub fn compile(_template: &str) -> Result<String, Box<dyn Error>> {
|
||||
pub fn compile(template: &str) -> Result<String, Box<dyn Error>> {
|
||||
let tokens = Lexer::new(template).tokenize()?;
|
||||
println!("{:?}", tokens);
|
||||
todo!("Implement compilation process")
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue