docs: maintain readme and command docs (#733)

* docs: maintain readme and command docs

* docs: update inline images

* test: update snapshot

* test: update baseline

* test: update baseline
This commit is contained in:
Myriad-Dreamin 2024-10-26 22:47:12 +08:00 committed by GitHub
parent 81ebc8a635
commit 2c38695b6f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
35 changed files with 402 additions and 159 deletions

View file

@ -102,14 +102,14 @@ pub fn completion(args: ShellCompletionArgs) -> anyhow::Result<()> {
Ok(())
}
/// The main entry point for the LSP server.
/// The main entry point for the language server.
pub fn lsp_main(args: LspArgs) -> anyhow::Result<()> {
let pairs = LONG_VERSION.trim().split('\n');
let pairs = pairs
.map(|e| e.splitn(2, ":").map(|e| e.trim()).collect::<Vec<_>>())
.collect::<Vec<_>>();
log::info!("tinymist LSP version information: {pairs:?}");
log::info!("starting LSP server: {args:#?}");
log::info!("tinymist version information: {pairs:?}");
log::info!("starting Language server: {args:#?}");
let is_replay = !args.mirror.replay.is_empty();
with_stdio_transport(args.mirror.clone(), |conn| {
@ -126,7 +126,7 @@ pub fn lsp_main(args: LspArgs) -> anyhow::Result<()> {
.start(conn.receiver, is_replay)
})?;
log::info!("LSP server did shut down");
log::info!("language server did shut down");
Ok(())
}

View file

@ -1,4 +1,4 @@
//! tinymist LSP server
//! tinymist's language server
use std::collections::HashMap;
use std::path::{Path, PathBuf};

View file

@ -291,10 +291,27 @@ impl TypliteWorker {
}
fn render(&mut self, node: &SyntaxNode, inline: bool) -> Result<Value> {
let color = "#c0caf5";
let dark = self.render_inner(node, true)?;
let light = self.render_inner(node, false)?;
if inline {
Ok(Value::Content(eco_format!(
r#"<picture><source media="(prefers-color-scheme: dark)" srcset="data:image/svg+xml;base64,{dark}"><img style="vertical-align: -0.35em" alt="typst-block" src="data:image/svg+xml;base64,{light}"/></picture>"#
)))
} else {
Ok(Value::Content(eco_format!(
r#"<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="data:image/svg+xml;base64,{dark}"><img alt="typst-block" src="data:image/svg+xml;base64,{light}"/></picture></p>"#
)))
}
}
fn render_inner(&mut self, node: &SyntaxNode, is_dark: bool) -> Result<String> {
let color = if is_dark {
r##"#set text(rgb("#c0caf5"))"##
} else {
""
};
let main = Bytes::from(eco_format!(
r##"#set page(width: auto, height: auto, margin: (y: 0.45em, rest: 0em));#set text(rgb("{color}"))
r##"#set page(width: auto, height: auto, margin: (y: 0.45em, rest: 0em), fill: rgb("#ffffff00"));{color}
{}"##,
node.clone().into_text()
).as_bytes().to_owned());
@ -305,6 +322,7 @@ impl TypliteWorker {
entry: Some(entry),
inputs: None,
});
world.source_db.take_state();
world.map_shadow_by_id(main_id, main).unwrap();
let document = typst::compile(&world)
@ -312,17 +330,7 @@ impl TypliteWorker {
.map_err(|e| format!("compiling math node: {e:?}"))?;
let svg_payload = typst_svg::svg_merged(&document, Abs::zero());
let base64 = base64::engine::general_purpose::STANDARD.encode(svg_payload);
if inline {
Ok(Value::Content(eco_format!(
r#"<img style="vertical-align: -0.35em" src="data:image/svg+xml;base64,{base64}" alt="typst-block" />"#
)))
} else {
Ok(Value::Content(eco_format!(
r#"<p align="center"><img src="data:image/svg+xml;base64,{base64}" alt="typst-block" /></p>"#
)))
}
Ok(base64::engine::general_purpose::STANDARD.encode(svg_payload))
}
fn char(arg: char) -> Result<Value> {

View file

@ -24,7 +24,7 @@ fn conv_(s: &str, for_docs: bool) -> EcoString {
EntryState::new_rooted(cwd.as_path().into(), Some(main.id())),
font_resolver.unwrap(),
Default::default(),
Default::default()
Default::default(),
)
.unwrap();
universe
@ -36,7 +36,7 @@ fn conv_(s: &str, for_docs: bool) -> EcoString {
let res = converter.convert().unwrap();
static REG: OnceLock<Regex> = OnceLock::new();
let reg = REG.get_or_init(|| Regex::new(r#"data:image/svg\+xml;base64,([^"]+)"#).unwrap());
let res = reg.replace(&res, |_captures: &regex::Captures| {
let res = reg.replace_all(&res, |_captures: &regex::Captures| {
// let hash = _captures.get(1).unwrap().as_str();
// format!(
// "data:image-hash/svg+xml;base64,siphash128:{:x}",
@ -93,7 +93,11 @@ Some inlined raw `a`, ```c b```
$
1/2 + 1/3 = 5/6
$
"###), @r###"<p align="center"><img src="data:image-hash/svg+xml;base64,redacted" alt="typst-block" /></p>"###);
"###), @r###"
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="data:image-hash/svg+xml;base64,redacted"><img alt="typst-block" src="data:image-hash/svg+xml;base64,redacted"/></picture></p>
"###);
}
#[test]

View file

@ -4,8 +4,16 @@ use crate::tests::*;
fn test_math_equation() {
insta::assert_snapshot!(conv(r###"
$integral x dif x$
"###), @r###"<img style="vertical-align: -0.35em" src="data:image-hash/svg+xml;base64,redacted" alt="typst-block" />"###);
"###), @r###"
<picture><source media="(prefers-color-scheme: dark)" srcset="data:image-hash/svg+xml;base64,redacted"><img style="vertical-align: -0.35em" alt="typst-block" src="data:image-hash/svg+xml;base64,redacted"/></picture>
"###);
insta::assert_snapshot!(conv(r###"
$ integral x dif x $
"###), @r###"<p align="center"><img src="data:image-hash/svg+xml;base64,redacted" alt="typst-block" /></p>"###);
"###), @r###"
<p align="center"><picture><source media="(prefers-color-scheme: dark)" srcset="data:image-hash/svg+xml;base64,redacted"><img alt="typst-block" src="data:image-hash/svg+xml;base64,redacted"/></picture></p>
"###);
}