From 8d20c39829a9948077f424e64269005ec39a646c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Thu, 27 Aug 2020 23:47:07 +0900 Subject: [PATCH] lexer::parse_name --- css/parser/src/lexer.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/css/parser/src/lexer.rs b/css/parser/src/lexer.rs index 730c47608f735..718d6545132ec 100644 --- a/css/parser/src/lexer.rs +++ b/css/parser/src/lexer.rs @@ -1,6 +1,21 @@ //! https://www.w3.org/TR/selectors-3/#lex -use crate::{Input, PResult}; +use crate::{util::PResultExt, Input, PResult}; +use nom::bytes::complete::take_while1; use swc_css_ast::*; -pub(crate) fn parse_ident(i: Input) -> PResult {} +// pub(crate) fn parse_ident(i: Input) -> PResult {} + +pub(crate) fn parse_name(i: Input) -> PResult { + take_while1(is_name_char)(i).map_from() +} + +/// `[_a-z0-9-]|{nonascii}|{escape}` +fn is_name_char(c: char) -> bool { + match c { + '_' | 'a'..='z' | 'A'..='Z' | '0'..='9' | '-' => true, + // TODO: nonascii + // TODO: escape + _ => false, + } +}