{"id":18722730,"url":"https://github.com/kyriets/lzw","last_synced_at":"2025-11-11T05:30:23.856Z","repository":{"id":75130957,"uuid":"253639188","full_name":"KyrietS/lzw","owner":"KyrietS","description":"Implementation of LZW dictionary compression algorithm.","archived":false,"fork":false,"pushed_at":"2021-07-25T00:31:59.000Z","size":210,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-28T12:17:51.911Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KyrietS.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-06T23:29:09.000Z","updated_at":"2021-07-25T00:32:02.000Z","dependencies_parsed_at":"2023-06-05T11:00:08.060Z","dependency_job_id":null,"html_url":"https://github.com/KyrietS/lzw","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyrietS%2Flzw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyrietS%2Flzw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyrietS%2Flzw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KyrietS%2Flzw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KyrietS","download_url":"https://codeload.github.com/KyrietS/lzw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239587244,"owners_count":19663892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T13:42:37.443Z","updated_at":"2025-11-11T05:30:23.810Z","avatar_url":"https://github.com/KyrietS.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"= LZW (Lempel-Ziv-Welch) Dictionary Coding\n\nA simple implementation of compression method known as LZW (Lempel-Ziv-Welch). LZW is a loseless data compression algorithm.\n\n== Usage\n\n\nType `lzw --help` to get help. General usage:\n----\nlzw (--encode|--decode) [-o,-s] source [dest]\n----\n=== Available options\n----\n  -e,--encode                 Encode a file\n  -d,--decode                 Decode a file\n  -h,--help                   Print help message and exit\n  -o,--override               Whether output file should override existing file.\n  -s,--stats                  Print stats during and after encoding process.\n----\nBy default `dest` is set to `{source}.lzw`.\n\n=== Examples\n\n*Encoding file with stats printed out* (`dest` file must not exist)\n----\n./lzw --encode -s file.txt output.lzw\n----\n*Decoding file with progress bar* (`dest file will be overwritten`)\n----\n./lzw -dso output.lzw file2.txt\n----\n\n\n== Project structure\n\nThere are currently 3 projects in this workspace.\n\n\n[%autowidth]\n|===\n^|Project | Description\n\n^.^|LZW_Core\n|Core functionality of LZW coding. All logic is there including file i/o. This project produces [underline]#static library# that is used in _LZW_CLI_ and _LZW_Core_Tests_ as a dependency.\n\n^.^|LZW_CLI\n|Command-Line Interface for _LZW_Core_ functions. This project produces executable program called `lzw` (by default).\n\n^.^|LZW_Core_Tests\n|Collection of unit tests for _LZW_Core_ functionalities. This project produces executable with embeded CLI from Catch2. For more info read https://github.com/catchorg/Catch2/blob/master/docs/command-line.md[official docs].\n|===\n\n=== External libraries\n\n_LZW_Core_ library doesn't have any external dependencies except C++ standard library.\n\n* https://github.com/CLIUtils/CLI11[CLI11] provides command-line arguments parser for _LZW_CLI_.\n* https://github.com/catchorg/Catch2[Catch2] is used in _LZW_Core_Tests_ as a testing framework.\n\n== Building\n\nYou need https://premake.github.io/download.html[Premake5] to easily generate project files (e.g. for Visual Studio, Code::Blocks, Xcode, GNU Make and more)\n\nIn root folder run `premake5` with an argument depending on IDE you want to use. For example, run: `premake5 vs2019` if you want to generate project for Visual Studio 2019.\n\n\n=== Visual Studio (Windows)\nIn root folder run `premak5 vs2019`. Visual Studio solution with projects will be generated. Open `LZW.sln` with Visual Studio. Everything should be configured properly to build, run and test the program.\n\n=== Makefile (Linux)\nIn root folder run `premake5 [--cc=gcc|clang] gmake2`. If `--cc` option is not set, then default C++ compiler will be used. Makefile files structure will be generated. In root folder run `make help` to get available build options. General usage is:\n----\nmake [config=release|debug] [target]\n\nTARGETS:\n    all (default)\n    LZW_CLI\n    LZW_Core\n    LZW_Core_Tests\n----\n\nExecutable binaries are stored in `bin/` folder. Release config is used by default.\n\n*Importnat note:* Because of using `\u003cfilesystem\u003e` standard library in `LZW_CLI` and `LZW_Core_Tests` projects it is necessary to have it installed on your computer. If you generate project for *gcc* then library `stdc\\++fs` is automatically linked via `-l` option. Note that `\u003cfilesystem\u003e` library is available in gcc since version _8.x_. In earlier versions there was `\u003cexperimental/filesystem\u003e`. Since version _9.x_ of gcc it's not necessary to link against `stdc++fs` anymore. *Clang* was not tested.\n\n\n== Tests\n\nProject _LZW_Core_Tests_ contains all the tests for _LZW_Core_. You can build it and run executable `lzw_core_tests` to verify tests.\n\n== License\n\nCopyright © 2020 KyrietS +\nUse of this software is granted under the terms of the MIT License.\n\nSee the link:LICENCE[LICENSE] for the full license text.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyriets%2Flzw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkyriets%2Flzw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkyriets%2Flzw/lists"}