use crate::{parse::builder::GrammarBuilder, types::classes};
pub fn whitespace_char(g: &mut GrammarBuilder) {
crate::choices!(
g,
|g| {
g.class(classes::WHITESPACE);
},
|g| {
g.literal(b"\xC2\x85");
},
|g| {
g.literal(b"\xC2\xA0");
},
|g| {
g.literal(b"\xE1\x9A\x80");
},
|g| {
g.literal(b"\xE2\x80\x80");
}, |g| {
g.literal(b"\xE2\x80\x81");
}, |g| {
g.literal(b"\xE2\x80\x82");
}, |g| {
g.literal(b"\xE2\x80\x83");
}, |g| {
g.literal(b"\xE2\x80\x84");
}, |g| {
g.literal(b"\xE2\x80\x85");
}, |g| {
g.literal(b"\xE2\x80\x86");
}, |g| {
g.literal(b"\xE2\x80\x87");
}, |g| {
g.literal(b"\xE2\x80\x88");
}, |g| {
g.literal(b"\xE2\x80\x89");
}, |g| {
g.literal(b"\xE2\x80\x8A");
}, |g| {
g.literal(b"\xE2\x80\xA8");
},
|g| {
g.literal(b"\xE2\x80\xA9");
},
|g| {
g.literal(b"\xE2\x80\xAF");
},
|g| {
g.literal(b"\xE2\x81\x9F");
},
|g| {
g.literal(b"\xE3\x80\x80");
},
);
}
pub fn whitespace0(g: &mut GrammarBuilder) {
g.zero_or_more(whitespace_char);
}
pub fn whitespace1(g: &mut GrammarBuilder) {
whitespace_char(g);
whitespace0(g);
}
pub fn newline(g: &mut GrammarBuilder) {
crate::choices!(
g,
|g| {
g.literal(b"\r\n");
},
|g| {
g.byte(b'\n');
},
|g| {
g.byte(b'\r');
},
|g| {
g.literal(b"\xC2\x85");
}, |g| {
g.literal(b"\xE2\x80\xA8");
}, |g| {
g.literal(b"\xE2\x80\xA9");
}, );
}