# weekstart

Library to get first day of week.

    getWeekStartByRegion('MAC');   // 0

    getWeekStartByLocale('arq');   // 6

The library is based on the following data from Unicode (especially from Common Locale Data Repository) and from ISO:

- https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/territory_information.html
- https://github.com/unicode-org/cldr-json/blob/main/cldr-json/cldr-core/supplemental/weekData.json
- https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/territory_language_information.html
- https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/language_territory_information.html
- https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/scripts_languages_and_territories.html
- http://www.unicode.org/reports/tr35/tr35.html#Unicode_Language_and_Locale_Identifiers
- https://www.iso.org/iso-3166-country-codes.html

There are 2 variants of the library having identical API:

- `main` - uses base mapping of language code to country code from langRegionMap.
- `full` - uses full mapping of language code to country code from fullLangRegionMap.

langRegionMap contains only main language codes. It is data subset from fullLangRegionMap.

## Table of contents

- Installation
- Usage
- Examples
- API
- Contributing
- License

## Installation ↑

### Node

    npm install weekstart

### Bower

    bower install weekstart

### AMD/UMD, <script>

Use `dist/main.js` or `dist/min/main.js` (minified version). Use `dist/full.js` or `dist/min/full.js` (minified version) when you need full locale data.

## Usage ↑

### ECMAScript 6

    import {getWeekStartByLocale, getWeekStartByRegion} from 'weekstart';

If you need full data:

    import {getWeekStartByLocale, getWeekStartByRegion} from 'weekstart/full';

### Node

    const getWeekStartByLocale = require('weekstart').getWeekStartByLocale;
    const getWeekStartByRegion = require('weekstart').getWeekStartByRegion;

If you need full data:

    const getWeekStartByLocale = require('weekstart/full').getWeekStartByLocale;
    const getWeekStartByRegion = require('weekstart/full').getWeekStartByRegion;

### AMD/UMD

    define(['path/to/dist/main.js'], function(weekstart) {
        const getWeekStartByLocale = weekstart.getWeekStartByLocale;
        const getWeekStartByRegion = weekstart.getWeekStartByRegion;
    });

If you need full data:

    define(['path/to/dist/full.js'], function(weekstart) {
        const getWeekStartByLocale = weekstart.getWeekStartByLocale;
        const getWeekStartByRegion = weekstart.getWeekStartByRegion;
    });

### Bower, <script>

    <!-- Use bower_components/weekstart/dist/main.js and bower_components/weekstart/dist/full.js if the library was installed by Bower -->
    <script type="text/javascript" src="path/to/dist/main.js"></script>
    <script type="text/javascript">
        // weekstart is available via weekstart field of window object
        const getWeekStartByLocale = weekstart.getWeekStartByLocale;
        const getWeekStartByRegion = weekstart.getWeekStartByRegion;
    </script>

If you need full data use `path/to/dist/full.js` instead of `path/to/dist/main.js`.

## Examples ↑

    getWeekStartByRegion('dj');   // 6
    getWeekStartByRegion('No');   // 1
    getWeekStartByRegion('CAN');   // 0
    getWeekStartByRegion(462);   // 5

    getWeekStartByLocale('Jam');   // 0
    getWeekStartByLocale('Fa');   // 6
    getWeekStartByLocale('vi');   // 1
    getWeekStartByLocale('es_MX');   // 0
    getWeekStartByLocale('az-Arab-IRN');   // 6

In the following examples results are given for the function from `full.js`. The same calls for the function from `main.js` will return `1`.

    getWeekStartByLocale('CCP');   // 0
    getWeekStartByLocale('UZ-arab');   // 6

## API ↑

#### getWeekStartByLocale(locale): number

Return first day of week for locale identifier: 0 - Sunday, 1 - Monday, 2 - Tuesday, 3 - Wednesday, 4 - Thursday, 5 - Friday, 6 - Saturday.

#### getWeekStartByRegion(regionCode): number

Return first day of week for country/region code: 0 - Sunday, 1 - Monday, 2 - Tuesday, 3 - Wednesday, 4 - Thursday, 5 - Friday, 6 - Saturday.

See `docs` for details.

## Contributing ↑

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.

## License ↑

Licensed under the MIT license.

#### Search results