Skip to content

matthew25187/DataStandardizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

65 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Introduction

Data Standardizer provides implementations of various internationally recognised standards in data processing, covering topics ranging from languages to currencies and geographical entities. With strongly-typed enumerations for each standard (where applicable) or other targeted data types, you can represent these elements in your code such that errors with invalid values are minimised.

Supported target platforms include (modern) .Net and .Net Standard. Data Standardizer can be used in modern application software, but is also available as an option for older codebases that are being upgraded more gradually or may remain on older frameworks indefinitely.

πŸ“š Documentation

Full documentation β€” user guides, concepts, and API reference for every package β€” is published at matthew25187.github.io/DataStandardizer.

Supporting the project

If you derive a commercial benefit from use of Data Standardizer or feel it otherwise adds value to your project, you are asked to please consider supporting the project. You can do this by becoming a GitHub sponsor to make a financial contribution. Data Standardizer is maintained and enhanced by @matthew25187 in his personal time and made available for free for all to use.

Getting Started

Installation

Data Standardizer is available as a series of packages from NuGet.org that can be linked to your existing projects. Available packages include:

Package Description
DataStandardizer.Chronology Supports the following standards:
  • TZ Database
  • Unix time
  • DOS date & time
DataStandardizer.Communication Supports the following standards:
  • Recommendation ITU-T E.164, The international public telecommunication numbering plan
DataStandardizer.Core Common types used to implement standards in the other packages. You should not need to link to this package directly.
DataStandardizer.File.CSV Supports the following standards:
  • RFC 4180, Common Format and MIME Type for Comma-Separated Values (CSV) Files
DataStandardizer.Geography Supports the following standards:
  • ISO 3166-1, Codes for the representation of names of countries and their subdivisions – Part 1: Country code
  • ISO 3166-2, Codes for the representation of names of countries and their subdivisions – Part 2: Country subdivision code
  • UN M49, Standard Country or Area Codes for Statistical Use (Series M, No. 49)
DataStandardizer.Language Supports the following standards:
  • ISO 639, Code for the representation of names of languages
    • Part 1: Alpha-2 code
    • Part 2: Alpha-3 code
    • Part 3: Alpha-3 code for comprehensive coverage of languages
    • Part 5: Alpha-3 code for language families and groups
  • ISO 15924, Codes for the representation of names of scripts
DataStandardizer.LanguageTag Supports the following standards:
  • Best Current Practice (BCP) 47 for IETF language tags
DataStandardizer.Money Supports the following standards:
  • ISO 4217, Codes for the representation of currencies and funds
    • Table A.1 – Current currency & funds code list
    • Table A.2 – Current funds codes
    • Table A.3 – List of codes for historic denominations of currencies & funds
  • Money type, as described in Patterns of Enterprise Application Architecture by Martin Fowler

To use a particular standard in your application, find the corresponding package from the above list and add it as a dependency to your project. Instructions for doing so will depend on what development tooling you are using.

See the Get started guide for step-by-step installation and a quickstart.

Software dependencies

Depending on which .Net platform you are targeting, the above packages will also depend on various other system- and third-party packages. They will be included as static dependencies where required and should be automatically resolved, but if you are using a proxy for your package server you may need to make sure these other packages are also available.

Latest releases

Package Release version Release status
DataStandardizer.Chronology DataStandardizer.Chronology package in DataStandardizer@Release feed in Azure Artifacts Build Status
DataStandardizer.Communication DataStandardizer.Communication package in DataStandardizer@Release feed in Azure Artifacts Build Status
DataStandardizer.Core DataStandardizer.Core package in DataStandardizer@Release feed in Azure Artifacts Build Status
DataStandardizer.File.CSV DataStandardizer.File.CSV package in DataStandardizer@Release feed in Azure Artifacts Build Status
DataStandardizer.Geography DataStandardizer.Geography package in DataStandardizer@Release feed in Azure Artifacts Build Status
DataStandardizer.Language DataStandardizer.Language package in DataStandardizer@Release feed in Azure Artifacts Build Status
DataStandardizer.LanguageTag DataStandardizer.LanguageTag package in DataStandardizer@Release feed in Azure Artifacts Build Status
DataStandardizer.Money DataStandardizer.Money package in DataStandardizer@Release feed in Azure Artifacts Build Status

The most recently produced release version (shown above) does not necessarily correspond with the latest package version published to NuGet or any other publically available source.

Build and test

Data Standardizer is open source so you can read, build, and adapt it for your own use. The project does not currently accept third-party code contributions; the instructions below are provided as a convenience for working with your own copy or fork of the repository.

After cloning the repository, you can compile the entire solution from the repository root:

dotnet build DataStandardizer.sln

and run the XUnit-based tests with:

dotnet test DataStandardizer.sln

Per-package solution filter (*.slnf) files let you build or test a single package in isolation. For the full branching strategy, per-package builds, IDE testing, and the PowerShell scripts that regenerate the standard enums, see Build from source in the documentation.

Usage

Though each package contains many types, typically there are only a few you will use directly in your application. See the project documentation for user guides, concepts, and API reference covering each package β€” including built-in CSV reading, writing, and normalization in DataStandardizer.File.CSV.