break: remove runtime::Context API

This commit is contained in:
Kogia-sima 2020-07-15 00:02:54 +09:00
parent 2ebb4b290f
commit 670d936def
5 changed files with 17 additions and 32 deletions

View File

@ -74,14 +74,14 @@ impl VisitMut for OptmizerImpl {
fl.body.stmts.remove(0); fl.body.stmts.remove(0);
*fl.body.stmts.last_mut().unwrap() = syn::parse2(quote! { *fl.body.stmts.last_mut().unwrap() = syn::parse2(quote! {
__sf_rt::render_text!(_ctx, #concat); __sf_rt::render_text!(__sf_buf, #concat);
}) })
.unwrap(); .unwrap();
let new_expr = syn::parse2(quote! {{ let new_expr = syn::parse2(quote! {{
__sf_rt::render_text!(_ctx, #sf); __sf_rt::render_text!(__sf_buf, #sf);
#fl; #fl;
unsafe { _ctx.buf.set_len(_ctx.buf.len() - #sf_len); } unsafe { __sf_buf.set_len(__sf_buf.len() - #sf_len); }
}}) }})
.unwrap(); .unwrap();
@ -116,7 +116,7 @@ impl VisitMut for OptmizerImpl {
buffer.push_str(line.trim_start()); buffer.push_str(line.trim_start());
} }
} }
i.mac.tokens = quote! { _ctx, #buffer }; i.mac.tokens = quote! { __sf_buf, #buffer };
return; return;
} }
} }

View File

@ -274,18 +274,16 @@ fn derive_template_impl(tokens: TokenStream) -> Result<TokenStream, syn::Error>
static SIZE_HINT: __sf_rt::SizeHint = __sf_rt::SizeHint::new(); static SIZE_HINT: __sf_rt::SizeHint = __sf_rt::SizeHint::new();
let mut _ctx = __sf_rt::Context { let mut __sf_buf = __sf_rt::Buffer::from(std::mem::take(buf));
buf: __sf_rt::Buffer::from(std::mem::take(buf))
};
let _size_hint = SIZE_HINT.get(); let _size_hint = SIZE_HINT.get();
_ctx.buf.reserve(_size_hint); __sf_buf.reserve(_size_hint);
let #name { #field_names } = self; let #name { #field_names } = self;
include!(#output_file_string); include!(#output_file_string);
SIZE_HINT.update(_ctx.buf.len()); SIZE_HINT.update(__sf_buf.len());
*buf = _ctx.buf.into_string(); *buf = __sf_buf.into_string();
Ok(()) Ok(())
} }
} }

View File

@ -106,7 +106,7 @@ impl SourceBuilder {
fn write_text<'a>(&mut self, token: &Token<'a>) { fn write_text<'a>(&mut self, token: &Token<'a>) {
use std::fmt::Write; use std::fmt::Write;
self.source.push_str("__sf_rt::render_text!(_ctx, "); self.source.push_str("__sf_rt::render_text!(__sf_buf, ");
// write text token with Debug::fmt // write text token with Debug::fmt
write!(self.source, "{:?}", token.as_str()).unwrap(); write!(self.source, "{:?}", token.as_str()).unwrap();
@ -123,7 +123,7 @@ impl SourceBuilder {
self.source.push_str("__sf_rt::"); self.source.push_str("__sf_rt::");
self.source.push_str(method); self.source.push_str(method);
self.source.push_str("!(_ctx, "); self.source.push_str("!(__sf_buf, ");
self.write_token(token); self.write_token(token);
self.source.push_str(");\n"); self.source.push_str(");\n");
} }

View File

@ -1,29 +1,29 @@
#[macro_export] #[macro_export]
#[doc(hidden)] #[doc(hidden)]
macro_rules! render { macro_rules! render {
($ctx:ident, $value:expr) => { ($buf:ident, $value:expr) => {
$crate::runtime::Render::render(&($value), &mut $ctx.buf)? $crate::runtime::Render::render(&($value), &mut $buf)?
}; };
} }
#[macro_export] #[macro_export]
#[doc(hidden)] #[doc(hidden)]
macro_rules! render_escaped { macro_rules! render_escaped {
($ctx:ident, $value:expr) => { ($buf:ident, $value:expr) => {
$crate::runtime::Render::render_escaped(&($value), &mut $ctx.buf)? $crate::runtime::Render::render_escaped(&($value), &mut $buf)?
}; };
} }
#[macro_export] #[macro_export]
#[doc(hidden)] #[doc(hidden)]
macro_rules! render_text { macro_rules! render_text {
($ctx:ident, $value:expr) => { ($buf:ident, $value:expr) => {
$ctx.buf.push_str($value) $buf.push_str($value)
}; };
} }
#[macro_export] #[macro_export]
#[doc(hidden)] #[doc(hidden)]
macro_rules! render_noop { macro_rules! render_noop {
($ctx:ident, $value:expr) => {}; ($buf:ident, $value:expr) => {};
} }

View File

@ -69,19 +69,6 @@ impl From<fmt::Error> for RenderError {
pub type RenderResult = Result<String, RenderError>; pub type RenderResult = Result<String, RenderError>;
#[doc(hidden)]
pub struct Context {
#[doc(hidden)]
pub buf: Buffer,
}
impl Context {
#[inline]
pub fn into_result(self) -> RenderResult {
Ok(self.buf.into_string())
}
}
// #[inline(never)] // #[inline(never)]
// pub fn _instantiate(table: Vec<Vec<usize>>) -> String { // pub fn _instantiate(table: Vec<Vec<usize>>) -> String {
// let mut buffer = Buffer::with_capacity(130000); // let mut buffer = Buffer::with_capacity(130000);