Skip to content

Commit

Permalink
Merge pull request #302 from grantlemons/typst-support
Browse files Browse the repository at this point in the history
feat: Typst Language Support
  • Loading branch information
elijah-potter authored Jan 13, 2025
2 parents 17d2814 + 6a16626 commit 6d8904c
Show file tree
Hide file tree
Showing 34 changed files with 1,242 additions and 119 deletions.
202 changes: 202 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = [ "harper-cli", "harper-core", "harper-ls", "harper-comments", "harper-wasm", "harper-tree-sitter", "harper-html", "harper-literate-haskell"]
members = [ "harper-cli", "harper-core", "harper-ls", "harper-comments", "harper-wasm", "harper-tree-sitter", "harper-html", "harper-literate-haskell", "harper-typst" ]
resolver = "2"

[profile.release]
Expand Down
4 changes: 4 additions & 0 deletions harper-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,8 @@ clap = { version = "4.5.23", features = ["derive"] }
harper-literate-haskell = { path = "../harper-literate-haskell", version = "0.15.0" }
harper-core = { path = "../harper-core", version = "0.15.0" }
harper-comments = { path = "../harper-comments", version = "0.15.0" }
harper-typst = { path = "../harper-typst", version = "0.15.0" }
serde_json = "1.0.133"

[features]
default = []
5 changes: 3 additions & 2 deletions harper-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -169,16 +169,17 @@ fn main() -> anyhow::Result<()> {
fn load_file(file: &Path) -> anyhow::Result<(Document, String)> {
let source = std::fs::read_to_string(file)?;

let mut parser: Box<dyn harper_core::parsers::Parser> =
let parser: Box<dyn harper_core::parsers::Parser> =
match file.extension().map(|v| v.to_str().unwrap()) {
Some("md") => Box::new(Markdown),
Some("lhs") => Box::new(LiterateHaskellParser),
Some("typ") => Box::new(harper_typst::Typst),
_ => Box::new(
CommentParser::new_from_filename(file)
.map(Box::new)
.ok_or(format_err!("Could not detect language ID."))?,
),
};

Ok((Document::new_curated(&source, &mut parser), source))
Ok((Document::new_curated(&source, &parser), source))
}
2 changes: 1 addition & 1 deletion harper-comments/src/comment_parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ impl CommentParser {
}

impl Parser for CommentParser {
fn parse(&mut self, source: &[char]) -> Vec<Token> {
fn parse(&self, source: &[char]) -> Vec<Token> {
self.inner.parse(source)
}
}
6 changes: 2 additions & 4 deletions harper-comments/src/comment_parsers/go.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use super::without_initiators;
pub struct Go;

impl Parser for Go {
fn parse(&mut self, source: &[char]) -> Vec<Token> {
fn parse(&self, source: &[char]) -> Vec<Token> {
let mut actual = without_initiators(source);
let mut actual_source = actual.get_content(source);

Expand All @@ -25,9 +25,7 @@ impl Parser for Go {
actual_source = new_source
}

let mut markdown_parser = Markdown;

let mut new_tokens = markdown_parser.parse(actual_source);
let mut new_tokens = Markdown.parse(actual_source);

new_tokens
.iter_mut()
Expand Down
2 changes: 1 addition & 1 deletion harper-comments/src/comment_parsers/javadoc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ pub struct JavaDoc {
}

impl Parser for JavaDoc {
fn parse(&mut self, source: &[char]) -> Vec<Token> {
fn parse(&self, source: &[char]) -> Vec<Token> {
let actual = without_initiators(source);
let actual_source = actual.get_content(source);

Expand Down
2 changes: 1 addition & 1 deletion harper-comments/src/comment_parsers/jsdoc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use super::without_initiators;
pub struct JsDoc;

impl Parser for JsDoc {
fn parse(&mut self, source: &[char]) -> Vec<Token> {
fn parse(&self, source: &[char]) -> Vec<Token> {
let mut tokens = Vec::new();

let mut chars_traversed = 0;
Expand Down
Loading

0 comments on commit 6d8904c

Please sign in to comment.