As I'm working on some changes to the style model, I decided to look back to the first example of a #csl style I could find; one from 2006.
This was from the initial XSLT implementation; before "macros" and when there was a "relation" attribute.
Coincidentally (in the sense I didn't set out to do this), that version and what I'm working on now share some similarities.
Have had a very interesting back-and-forth on sorting and extended date formatting with Philip Kime from the #biblatex project over the past few days.
https://github.com/bdarcus/csln/issues/64
I've always admired the attention to detail in that project from afar, but it's interesting to compare some of the similarities and differences in design details.
To it's credit, BibLaTeX tends to provide both a lot of low-level power and flexibility, AND easy-to-use interfaces on top.
With latest commits, the functionality of the #rustlang based code is almost equivalent to the the #typescript prototype.
https://github.com/bdarcus/csln/commit/3b36cf5cb596e8379c7a122d325659667304aed6
It renders references with basic templates into a properly-sorted JSON AST, and I've implemented basic disambiguation (such as Doe, 2020c).
And it seems roughly 10x faster than the typescript code.
#typescript #rustlang #cslnext
The last week or so I've tried to figure out the best strategy for integrating code generation in the project, as it's not a lossless process on some of the more complex details.
So I now have three repos:
1. A Typescript one (generates schemas and lossy rust code)
2. A pure Rust one at https://github.com/bdarcus/csln (generates pretty good schemas, extremely quickly, with a lot of flexibility; should be able to generate TS)
3. A hybrid one; Rust-based, but with code generated from 1.
The last week or so I've trying to figure out the best strategy for integrating code generation in the project, as it's not a lossless process on some of the more complex details.
So I now have three repos ATM:
1. A Typescript one (generates schemas and lossy rust code)
2. A pure Rust one at https://github.com/bdarcus/csln (generates pretty good schemas, extremely quickly, with a lot of flexibility; should be able to generate TS)
3. A hybrid one; Rust-based, but with code generated from 1.
The #cslnext #csl project (no, I'm not good with project names, and it's likely temporary) has turned out to be pretty fun.
I switched to using #deno for development a couple of weeks ago, and in the past couple of days finally hit a key milestone:
https://github.com/bdarcus/csl-next/commit/ece85826f4141c06d34de877f3c11b6cbad5225d
Will be tagging v0.1.0 in the coming days, which is just me saying the draft model is solid enough to start building out the processing functionality.