#![no_std]
#[doc(hidden)]
#[macro_use]
pub extern crate alloc;
mod generator;
mod keyword;
mod punct;
mod flexible;
mod binder;
use core::hint::assert_unchecked;
use alloc::string::String;
pub use generator::Generator;
pub use keyword::Keyword;
pub use punct::Punct;
use flexible::{Flexible, FlexibleList};
fn repeat_char(c: char, n: usize) -> String {
unsafe { assert_unchecked((c as u32) < 128) };
c.encode_utf8(&mut [0; 4]).repeat(n)
}
#[macro_export]
macro_rules! f {
($($tt:tt)*) => {
$crate::alloc::format!($($tt)*)
};
}
#[macro_export]
macro_rules! s {
($($tt:tt)*) => {
$crate::f!("\"{}\"", $crate::f!($($tt)*))
};
}