break: remove runtime::Context API
This commit is contained in:
parent
2ebb4b290f
commit
670d936def
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) => {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue