CatgirlIntelligenceAgency/code/libraries/big-string
Viktor Lofgren 1d34224416 (refac) Remove src/main from all source code paths.
Look, this will make the git history look funny, but trimming unnecessary depth from the source tree is a very necessary sanity-preserving measure when dealing with a super-modularized codebase like this one.

While it makes the project configuration a bit less conventional, it will save you several clicks every time you jump between modules.  Which you'll do a lot, because it's *modul*ar.  The src/main/java convention makes a lot of sense for a non-modular project though.  This ain't that.
2024-02-23 16:13:40 +01:00
..
java/nu/marginalia/bigstring (refac) Remove src/main from all source code paths. 2024-02-23 16:13:40 +01:00
test/nu/marginalia/bigstring (refac) Remove src/main from all source code paths. 2024-02-23 16:13:40 +01:00
build.gradle (refac) Remove src/main from all source code paths. 2024-02-23 16:13:40 +01:00
readme.md (controller) Improve the storage interface 2023-07-21 19:56:16 +02:00

Big String

Microlibrary that offers string compression. This is useful when having to load tens of thousands of HTML documents in memory during conversion. XML has been described as the opposite of a compression scheme, and as a result, HTML compresses ridiculously well.

Configuration

If the Java property 'bigstring.disabled' is set to true, the BigString class will not compress strings.

Demo

List<BigString> manyBigStrings = new ArrayList<>();

for (var file : files) {
    // BigString.encode may or may not compress the string 
    // depeneding on its size
    manyBigStrings.add(BigString.encode(readFile(file)));
}

for (var bs : manyBigStrings) {
    String decompressedString = bs.decompress();
    byte[] bytes = bs.getBytes();
    int len = bs.getLength();
}