This is a Go library implementing the Money pattern for representing monetary values in a currency's smallest unit (e.g., cents). It provides precise arithmetic operations (addition, subtraction, multiplication, rounding), allocation and splitting of amounts without floating-point rounding errors, and formatting to human-readable strings with currency symbols and separators. The library includes a comprehensive set of ISO 4217 currency definitions, supports JSON serialization/deserialization with customizable marshal/unmarshal functions, and integrates with database/sql via Scanner and Valuer interfaces for storing monetary values in relational databases. It has no external dependencies beyond the Go standard library, making it lightweight and easy to embed. The architecture is a simple library with clear separation of concerns: a calculator for arithmetic, a formatter for display, a currency registry, and the core Money struct that composes these components.
RESTCountries.NET is a .NET Standard 2.1 library providing offline access to comprehensive country data. It deserializes an embedded JSON dataset (sourced from restcountries.com) into strongly-typed C# models and exposes static query methods for searching by name, code, currency, language, and more. The library requires no network calls at runtime, making it suitable for disconnected or performance-sensitive applications. It includes a full test suite, a benchmark harness, and is distributed via NuGet with automated CI/CD. The architecture is straightforward: a static `RestCountriesService` class loads data on first access and uses LINQ to answer queries. Models cover Country, Currency, Language, Flags, Maps, Translations, and other attributes. The translation support includes 24 languages via ISO 639-3 codes. Overall, it's a well-crafted, single-purpose utility library with professional engineering practices.
This repository is a data engineering pipeline that produces a comprehensive, unified country codes dataset (CSV/JSON) by merging information from multiple authoritative sources: ISO 3166, ISO 4217, UN Statistics, UN Protocol (UNTERM), CLDR, statoids, Geonames, EDGAR, FIFA, and Wikidata. The pipeline is orchestrated via a Makefile that sequentially runs Python scripts to fetch, parse, clean, and join data. The final output contains dozens of columns covering country names in multiple languages, ISO codes, currency codes, dialing codes, and more. The repository is primarily a data transformation project rather than a software application, though it includes sophisticated web scraping and fuzzy matching. The code is modular and well-structured, but reproducibility is hampered by a manual step requiring users to manually download and rename UNSD CSV files. The included GitHub Actions workflow automates monthly updates. Overall, the project is a solid reference data curation effort with moderate complexity.