mirror of
https://github.com/tonytins/cstdotnet.git
synced 2025-03-15 22:21:23 +00:00
.NET Parser for The Sims Online's CST format.
The normalizing algorithm has been rewritten to be more efficient and hopefully more reliable. The new algorithm de-constructs each line after converting it to the system's native line ending. Then it searches for the key and returns value. The rewrite also normalizes line endings to match the system's within the entry itself before returning the final output. This should make things more stable and predictable. - Skipping comments is a little buggy. - Multiline parsing with the v2 format is still unpredictable. |
||
---|---|---|
.github | ||
.vscode | ||
CSTNet | ||
CSTNet.Tests | ||
notebooks | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
changelog.md | ||
code_of_conduct.md | ||
CSTNet.sln | ||
CSTNet.sln.licenseheader | ||
LICENSE | ||
README.md |
QuickFennec.CST
Caret-Separated Text (or CST) is a key-value pair format represented by numbers or words as keys and the value is the string enclosed between carets (^) that contains the contents. Any text which is not enclosed with carets is considered a comment and ignored. Neither strings nor comments may use the caret character.
QuickFennec.CST is a library for parsing the CST format.
Usage
#r "nuget:CSTNet,1.0.1"
using System;
using System.IO;
using CSTNet;
var file = File.ReadAllText("example.cst");
var example = CaretSeparatedText.Parse(file, 1);
Console.WriteLine(example);
In production, CST files were used in The Sims Online to provide translations. Each translation was split into their respective directories:
uitext/english.dir/misc/_154_miscstrings.cst
uitext/swedish.dir/misc/_154_miscstrings.cst
QuickFennec.CST only provides the basic parsing functionality.
To-do
- Support for arguments (e.g.
%1
)
Known issues
- Skipping comments is a little buggy.
- Multiline parsing with the v2 format is still unpredictable.
Requirements
Prerequisites
- .NET 5+ or Core 3.1
- .NET Interactive for notebooks
- VSCode Extension (does not require Jupyter)
- nteract (requires Jupyter)
License
I license this project under the MIT license - see LICENSE for details.