@samatawy/rules-world
v0.1.0
Published
World and geography-oriented function providers for @samatawy/rules, including country metadata and lookup helpers.
Maintainers
Readme
@samatawy/rules-world
World and geography-oriented function providers for @samatawy/rules.
This package is designed as an optional plugin. It keeps geography and country-data helpers outside the core rules engine package while still integrating through the same FunctionFactory.registerProvider(...) API.
It currently exposes 42 country-related functions (2 of which are aliases). Data is available for 250 countries.
To report incorrect data or behaviour, or to request additional features, use the Github issue tracker.
This package can be used by:
- Node.js and browser runtimes
- ESM and CommonJS consumers
Installation
npm install @samatawy/rules @samatawy/rules-world@samatawy/rules is a peer dependency, so your application provides the core engine version.
Usage
import { FunctionFactory, Workspace } from '@samatawy/rules';
import { CommonGeographyFunctionsProvider } from '@samatawy/rules-world';
FunctionFactory.registerProvider(CommonGeographyFunctionsProvider);
const workspace = new Workspace();
workspace.addRule('if country_name("CA") = "Canada" then result.country = true');
workspace.addRule('if country_has_tld("CA", ".ca") then result.local = true');You can also register the provider through the package helper:
import { registerWorldProviders } from '@samatawy/rules-world';
registerWorldProviders();The same package entry works in both Node.js and browser builds, with ESM and CommonJS output generated from the same source.
Included Provider
CommonGeographyFunctionsProvider
Included Data
CountriesCountryCodesCurrencyCodesLanguagesContinentsTimezones
Example Geography Functions
country_codes()country_code(value)country_name(code)official_country_name(code)country_calling_codes(code)country_top_level_domains(code)country_languages(code)country_timezones(code)countries_in_continent(continent)countries_in_subregion(subregion)countries_using_currency(currency)country_has_tld(code, tld)country_has_calling_code(code, callingCode)country_speaks_language(code, language)country_in_timezone(code, timezone)
