diff --git a/Makefile b/Makefile index dcfb5400..29f73bec 100644 --- a/Makefile +++ b/Makefile @@ -59,8 +59,8 @@ unittest: jaeger: # 4317 for OTLP gRPC, 4318 for OTLP HTTP. We currently use gRPC but I forward both ports regardless. # -# These flags didn't help even though they seem like they would: --collector.otlp.grpc.max-message-size=10000000 --collector.queue-size=20000 --collector.num-workers=100 -> docker run -d --rm --name organicdocker -p 4317:4317 -p 4318:4318 -p 16686:16686 -e COLLECTOR_OTLP_ENABLED=true jaegertracing/all-in-one:1.47 --collector.grpc-server.max-message-size=10000000 +# These flags didn't help even though they seem like they would: --collector.queue-size=20000 --collector.num-workers=100 +> docker run -d --rm --name organicdocker -p 4317:4317 -p 4318:4318 -p 16686:16686 -e COLLECTOR_OTLP_ENABLED=true jaegertracing/all-in-one:1.47 --collector.grpc-server.max-message-size=20000000 --collector.otlp.grpc.max-message-size=20000000 .PHONY: jaegerweb jaegerweb: diff --git a/src/main.rs b/src/main.rs index 852f1cc6..7a67894a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,6 +9,7 @@ use organic::compare_document; use organic::emacs_parse_org_document; #[cfg(feature = "compare")] use organic::parser::sexp::sexp_with_padding; +use tracing::span; use crate::init_tracing::init_telemetry; use crate::init_tracing::shutdown_telemetry; @@ -28,12 +29,21 @@ fn main() -> Result<(), Box> { fn main_body() -> Result<(), Box> { init_telemetry()?; - run_compare( - std::env::args() - .nth(1) - .expect("Pass a single file into this script."), - )?; + let compare_result = { + #[cfg(feature = "tracing")] + let span = span!(tracing::Level::DEBUG, "run_compare"); + #[cfg(feature = "tracing")] + let _enter = span.enter(); + + run_compare( + std::env::args() + .nth(1) + .expect("Pass a single file into this script."), + ) + }; + shutdown_telemetry()?; + compare_result?; Ok(()) } diff --git a/src/parser/lesser_block.rs b/src/parser/lesser_block.rs index 3b7c68c6..42a1feb9 100644 --- a/src/parser/lesser_block.rs +++ b/src/parser/lesser_block.rs @@ -200,7 +200,7 @@ pub fn src_block<'r, 's>(context: Context<'r, 's>, input: &'s str) -> Res<&'s st .with_additional_node(ContextElement::ConsumeTrailingWhitespace(true)) .with_additional_node(ContextElement::Context("lesser block")) .with_additional_node(ContextElement::ExitMatcherNode(ExitMatcherNode { - class: ExitClass::Beta, + class: ExitClass::Alpha, exit_matcher: &lesser_block_end_specialized, })); let parameters = match parameters { @@ -238,31 +238,49 @@ fn lesser_block_end( ) -> impl for<'r, 's> Fn(Context<'r, 's>, &'s str) -> Res<&'s str, &'s str> { let current_name_lower = current_name.to_lowercase(); move |context: Context, input: &str| { - start_of_line(context, input)?; - let (remaining, _leading_whitespace) = space0(input)?; - let (remaining, (_begin, _name, _ws)) = tuple(( - tag_no_case("#+end_"), - tag_no_case(current_name_lower.as_str()), - alt((eof, line_ending)), - ))(remaining)?; - let source = get_consumed(input, remaining); - Ok((remaining, source)) + _lesser_block_end(context, input, current_name_lower.as_str()) } } +#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] +fn _lesser_block_end<'r, 's, 'x>( + context: Context<'r, 's>, + input: &'s str, + current_name_lower: &'x str, +) -> Res<&'s str, &'s str> { + start_of_line(context, input)?; + let (remaining, _leading_whitespace) = space0(input)?; + let (remaining, (_begin, _name, _ws)) = tuple(( + tag_no_case("#+end_"), + tag_no_case(current_name_lower), + alt((eof, line_ending)), + ))(remaining)?; + let source = get_consumed(input, remaining); + Ok((remaining, source)) +} + fn lesser_block_begin( current_name: &str, ) -> impl for<'r, 's> Fn(Context<'r, 's>, &'s str) -> Res<&'s str, &'s str> { let current_name_lower = current_name.to_lowercase(); move |context: Context, input: &str| { - start_of_line(context, input)?; - let (remaining, _leading_whitespace) = space0(input)?; - let (remaining, (_begin, name)) = tuple(( - tag_no_case("#+begin_"), - verify(name, |name: &str| { - name.to_lowercase().as_str() == current_name_lower - }), - ))(remaining)?; - Ok((remaining, name)) + _lesser_block_begin(context, input, current_name_lower.as_str()) } } + +#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] +fn _lesser_block_begin<'r, 's, 'x>( + context: Context<'r, 's>, + input: &'s str, + current_name_lower: &'x str, +) -> Res<&'s str, &'s str> { + start_of_line(context, input)?; + let (remaining, _leading_whitespace) = space0(input)?; + let (remaining, (_begin, name)) = tuple(( + tag_no_case("#+begin_"), + verify(name, |name: &str| { + name.to_lowercase().as_str() == current_name_lower + }), + ))(remaining)?; + Ok((remaining, name)) +} diff --git a/src/parser/sexp.rs b/src/parser/sexp.rs index c0188797..1a7aa4cf 100644 --- a/src/parser/sexp.rs +++ b/src/parser/sexp.rs @@ -60,6 +60,10 @@ impl<'s> TextWithProperties<'s> { out.push('\\'); ParseState::Normal } + (ParseState::Escape, '"') => { + out.push('"'); + ParseState::Normal + } _ => todo!(), }; }