ladybird/Meta
Timothy Flynn ea78bac36d LibUnicode: Parse and generate per-locale plural rules from the CLDR
Plural rules in the CLDR are of the form:

"cs": {
    "pluralRule-count-one": "i = 1 and v = 0 @integer 1",
    "pluralRule-count-few": "i = 2..4 and v = 0 @integer 2~4",
    "pluralRule-count-many": "v != 0 @decimal 0.0~1.5, 10.0, 100.0 ...",
    "pluralRule-count-other": "@integer 0, 5~19, 100, 1000, 10000 ..."
}

The syntax is described here:
https://unicode.org/reports/tr35/tr35-numbers.html#Plural_rules_syntax

There are up to 2 sets of rules for each locale, a cardinal set and an
ordinal set. The approach here is to generate a C++ function for each
set of rules. Each condition in the rules (e.g. "i = 1 and v = 0") is
transpiled to a C++ if-statement within its function. Then lookup tables
are generated to match locales to their generated functions.

NOTE: -Wno-parentheses-equality is added to the LibUnicodeData compile
flags because the generated plural rules have lots of extra parentheses
(because e.g. we need to selectively negate and combine rules). The code
to generate only exactly the right number of parentheses is quite hairy,
so this just tells the compiler to ignore the extras.
2022-07-08 11:51:54 +02:00
..
Azure Meta+CI: Upgrade to ubuntu-22.04 2022-05-24 06:30:57 -04:00
CMake LibUnicode: Parse and generate per-locale plural rules from the CLDR 2022-07-08 11:51:54 +02:00
HeaderCheck Meta: Remove obsolete HeaderCheck .gitignore 2022-03-24 20:11:39 -07:00
Lagom LibUnicode: Parse and generate per-locale plural rules from the CLDR 2022-07-08 11:51:54 +02:00
Screenshots Meta: Move screenshots into subdir 2022-04-03 13:14:15 +01:00
ShellCompletions/zsh Meta: Add copy-src to commands in ZSH autocomplete script 2022-03-14 22:20:35 +00:00
Websites Everywhere: Use title case for man section titles 2022-02-25 12:06:31 -05:00
analyze-qemu-coverage.sh Meta: Add script to analyze coverage data from an existing disk image 2022-05-02 01:46:18 +02:00
bochsrc Meta: Add SSE3, SMAP and SMEP to our bochsrc 2021-12-28 11:51:50 +01:00
build-image-extlinux.sh Meta: Fix syslinux detection on Arch Linux 2021-07-20 15:12:19 +02:00
build-image-grub.sh Meta: Run 'du' with '--apparent-size', except on macOS 2021-05-16 22:50:46 +01:00
build-image-limine.sh Meta: Bump Limine version to 2.78.2 2022-02-14 11:52:07 +01:00
build-image-qemu.sh Meta: Shellcheck ignore for our expr use (SC2307) 2022-05-24 06:30:57 -04:00
build-manpages-website.sh Meta: Update manpages website build script to handle non-icon images 2022-05-29 10:24:31 +02:00
build-native-partition.sh Meta: Add install-native-partition CMake target installing to a real FS 2022-02-04 12:44:50 +01:00
build-root-filesystem.sh Meta: Don't overwrite newer files when building the root filesystem 2022-07-07 21:49:48 +01:00
check-ak-test-files.sh Meta: Remove unnecessary -i 2021-11-02 12:23:30 +01:00
check-debug-flags.sh Kernel: Support all Intel-defined CPUID feature flags for EAX=1 2022-03-27 18:54:56 +02:00
check-markdown.sh Utilities+Meta: Check icons in markdown-check 2022-02-26 20:05:06 +02:00
check-newlines-at-eof.py LibCodeComprehension: Re-organize code comprehension related code 2022-05-21 18:15:58 +02:00
check-png-sizes.sh Meta: Add a PNG size check to CI and pre-commit checks 2022-06-18 21:58:43 +04:30
check-style.py LibCodeComprehension: Re-organize code comprehension related code 2022-05-21 18:15:58 +02:00
check-symbols.sh Meta: Make check-symbols.sh use the correct build directory 2022-01-15 17:51:40 +01:00
check-syscall-lists.sh Meta: Use grep -E/F, not grep -P 2021-11-02 12:23:30 +01:00
convert-markdown-links.lua Meta: Update manpages website build script to handle non-icon images 2022-05-29 10:24:31 +02:00
debug-kernel.sh Meta: Allow setting a host IP address to bind to 2022-04-20 14:12:34 +02:00
export-argsparser-manpages.sh Meta: Check auto-generated manpages for completeness on CI 2021-11-01 21:12:58 +01:00
extlinux.conf Kernel: Separate framebuffers from bootmode 2021-10-25 23:38:28 +02:00
generate-embedded-resource-assembly.sh Meta: Get building on NixOS (#5005) 2021-01-22 17:44:05 +01:00
generate-libwasm-spec-test.py Meta: Skip wasm tests whose modules cannot be loaded 2022-03-20 10:44:32 +03:30
generate-libwasm-spec-test.sh Meta: Run the Wasm spec tests in CI 2021-05-27 17:28:41 +04:30
grub-ebr.cfg Kernel: Separate framebuffers from bootmode 2021-10-25 23:38:28 +02:00
grub-gpt.cfg Kernel: Separate framebuffers from bootmode 2021-10-25 23:38:28 +02:00
grub-mbr.cfg Kernel: Separate framebuffers from bootmode 2021-10-25 23:38:28 +02:00
install-ports-tree.sh Everywhere: Replace SERENITY_ROOT with SERENITY_SOURCE_DIR 2021-04-20 15:27:52 +02:00
limine.cfg Meta: Add support for the Limine bootloader 2022-02-14 11:52:07 +01:00
lint-ci.sh Meta: Add a PNG size check to CI and pre-commit checks 2022-06-18 21:58:43 +04:30
lint-clang-format.sh LibCodeComprehension: Re-organize code comprehension related code 2022-05-21 18:15:58 +02:00
lint-commit.sh CI: Require a blank line between commit titles and bodies 2022-01-11 23:45:14 +02:00
lint-executable-resources.sh Meta: Add special case for macOS 2021-11-02 12:23:30 +01:00
lint-gml-format.sh Meta+Userland: Run the GML formatter on CI and pre-commit 2022-02-07 18:39:50 +01:00
lint-keymaps.py Everywhere: "file name" => "filename" 2021-04-29 22:16:18 +02:00
lint-missing-resources.sh Meta: Use grep -E/F, not grep -P 2021-11-02 12:23:30 +01:00
lint-ports.py Meta: Add check if AvailablePorts.md is sorted 2022-06-02 23:18:06 +01:00
lint-prettier.sh LibJS: Implement ImportCall and HostImportModuleDynamically 2022-01-22 01:21:18 +00:00
lint-python.sh Meta: Get building on NixOS (#5005) 2021-01-22 17:44:05 +01:00
lint-shell-scripts.sh Base: Add some default completions to shellrc 2022-04-18 19:53:10 +04:30
new-project.sh Meta: Add new-project.sh :^) 2021-08-13 21:12:17 +04:30
refresh-serenity-qtcreator.sh Meta: Make QtCreator aware of all CMake files 2021-09-15 20:21:19 +00:00
run.sh Meta+Documentation: Bump required QEMU version 2022-05-24 06:30:57 -04:00
serenity.sh Meta: Add error message when running serenity.sh as root 2022-05-31 10:14:06 +01:00
serenity_gdb.py Meta: Avoid showing elements in extremely large vectors in gdb 2022-04-01 21:41:41 +01:00
text-to-cpp-string.sh Meta: Use a bash shebang for text-to-cpp-string.sh 2021-01-22 18:41:08 +01:00
tweet-commits.js Meta: Ensure long messages fit in commit tweet 2021-06-18 13:34:17 +01:00