C++ ライブラリ。 Linux と Windows でテストされています。
- WHATWG HTML5 規格の HTML Parser。
- WHATWG Encoding 規格の文字コード変換。
- W3C CSS Selectors Level 4 規格の CSS Selector 。
- WHATWG URL 規格の URL Parser 。
- Tree コンテナ、および、Tree 走査用のイテレータ・アダプタ。
- 動的 TRIE 木。
組み合わせられる部品の集まりであることを念頭にデザインしています。 過度の前提を持ちません。
文書は未整備です。 Doxygen によるリファレンスを参考にしてください。 sample あるいは test ディレクトリで実際の使用例を見てください。
プログラミング言語として C++20 、ビルド・システムに CMake を用います。 テストしている環境は以下の通りです。
- Linux g++9
- Windows11 clang-cl
- Windows11 cl
Windows 用、 Linux 用など、個別の環境用のパッケージは有りません。 ヘッダーファイルと libwordring ライブラリをあなたのプロジェクトへ追加してください。
- あなたのプロジェクトの Git サブモジュールとして libwordring を追加する。
- あなたのプロジェクトの CMakeLists.txt で add_subdirectory("submodules/libwordring") する。
- あなたのプロジェクトの CMakeLists.txt で include_directories("submodules/libwordring/include") する。
- あなたのプロジェクトの CMakeLists.txt で target_link_libraries("libwordring") する。
のが容易です。 ライブラリのビルドは、あなたのプロジェクトのビルド時に、必要に応じて CMake が行います。
Github からサブモジュールを含めてクローンし、 CMake でビルドするだけです。 CMake から要求ライブラリが見える状態が必要です。 要求ライブラリの用意が最も難しいと思います。
ビルド時間のほぼすべてが単体テストをビルドするために費やされます。 時間がかかりすぎる場合は、ルート・ディレクトリの CMakeLists.txt を編集して、 ライブラリ単体をビルドしてください
- C++20
- 出来るだけ新しい CMake
- 出来るだけ新しい Boost
- ICU
- OpenSSL
名前 | 説明 |
---|---|
https://github.com/publicsuffix/list | URLパーサでデータを使用 |
https://github.com/whatwg/encoding | HTML5パーサでデータを使用 |
https://github.com/dwyl/english-words | TRIE用単体テストでデータを使用 |
https://github.com/hingston/japanese | TRIE用単体テストでデータを使用 |
- sudo apt install build-essential cmake ninja-build libboost-all-dev
標準の C++ コンパイラが gcc-8 です。 このコンパイラは、 c++17 への対応が弱いです。 もう少しで Debian 11 bullseye が出荷されると gcc-10 になるので対応を行っていません。 具体的には、 CMakeLists.txt に -lstdc++fs を含めると gcc-8 でビルドできます。
Visualstudio 2019 から WSL 上の Linux コマンドを直接呼び出しビルドすることが出来ます。 しかし、 WSL 上で複数のディストリビューションを切り替えて使う場合は、注意が必要です。 Visualstudio の作業ディレクトリに CMake のキャッシュが残っているからです。 デフォルトのディストリビューションを切り替えた時は、メニューバーの「プロジェクト」から CMake キャッシュを削除してください。 CMake がパッケージを見つけられない理由の大部分は、別のディストリで使ったキャッシュが残っているからです。
Windows 用に CMake プロジェクトをビルドするのはフォルダを開いてボタンを押すだけですが、ライブラリの用意は非常に大変です。 そこで、 VCPKG の利用をお勧めします。
名前 | 説明 |
---|---|
https://wordring.github.io/libwordring/ | 付属文書 |
名前 | 説明 |
---|---|
docs | 文書を格納するフォルダ |
generator | ソース・コード生成プログラムを格納するフォルダ |
include | ヘッダ・ファイルを格納するフォルダ |
lib | ライブラリのソース・コードを格納するフォルダ |
sample | 例を格納するフォルダ |
submodules | githubから取り込む他のモジュールを参照するフォルダ |
test | テスト・コードを格納するフォルダ |
.editorconfig | (Visual studioを含む多くのエディタがサポートする)エディタの設定ファイル |
.gitignore | gitに無視させるファイルとフォルダの設定ファイル |
.gitmodules | サブモジュールの設定ファイル |
CMakeLists.txt | CMakeプロジェクトの設定ファイル |
CMakeSettings.json | Visual studio用のCMake環境設定ファイル |
LICENSE | パブリック・ドメインであることを明示するライセンス・ファイル |
README.md | このファイル |