Find any Swiss canton by its abbreviation, name, or by the zipcode of any Swiss city. (This is a port of php-swiss-cantons)
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
In order to work on this package you should have npm
, yarn
and ava
installed globally.
git clone https://github.com/stefanzweifel/js-swiss-cantons.git
You should install the package with yarn
or npm
in your project.
npm install @stefanzweifel/js-swiss-cantons
There are 3 classes available in this package, with varying precision and tradeoffs:
- CantonManager
- ZipcodeSearch
- ZipcodeSearchSimple
Currently there are two methods available on the CantonManager Class: getByAbbreviation
and getByName
.
import CantonManager from '@stefanzweifel/js-swiss-cantons';
let manager = new CantonManager();
let canton = manager.getByAbbreviation('SH');
let canton = manager.getByName('Schaffhausen');
console.log(
canton.setLanguage('de').getName() // Schaffhausen
);
The ZipcodeSearch class can be used to find cantons by zipcode, be careful, it imports the entire zipcode dataset (~290kb).
import ZipcodeSearch from '@stefanzweifel/js-swiss-cantons/src/ZipcodeSearch';
let search = new ZipcodeSearch();
let location = search.findbyZipcode('1201'); // Search by string
let location = search.findbyZipcode(8001); // Search by number
// Returns an object of the locality:
// {
// "city_name": "Zürich",
// "zipcode": 8001,
// "community_name": "Zürich",
// "canton": "ZH"
// }
You can also retrieve the whole dataset like this:
let locations = search.getDataSet();
The ZipcodeSearchSimple
class can be used to find cantons by zipcode, it imports much less data: 2.9Kb. The tradeoff is that it will find cantons for non-existent zipcodes, such as 5800, for which it will return SO
, even though no city has that zipcode in Switzerland. This is because it searches for a canton in a range of zipcodes. For example, all zipcodes between 8001 and 8109 will return ZH
, after which it will return AG
until 8112. If you want more precision and/or data, use ZipcodeSearch
instead.
import ZipcodeSearchSimple from '@stefanzweifel/js-swiss-cantons/src/ZipcodeSearchSimple';
let search = new ZipcodeSearchSimple();
let location = search.findbyZipcode('1201'); // Search by string
let location = search.findbyZipcode(8001); // Search by number
// Returns a string
// 'GE'
// 'ZH'
End with an example of getting some data out of the system or using it for a little demo
Tests are written with ava.
npm run test
npm update patch | minor | major
npm publish
We use SemVer for versioning. For the versions available, see the tags on this repository.
- Stefan Zweifel - Initial work - stefanzweifel
See also the list of contributors who participated in this project.