//- 💫 INCLUDES > FUNCTIONS

//- Descriptive variables, available in the global scope

- CURRENT = current.source
- SECTION = current.path[0]
- LANGUAGES = public.models._data.LANGUAGES
- MODELS = public.models._data.MODELS
- CURRENT_MODELS = MODELS[current.source] || []

- MODEL_COUNT = Object.keys(MODELS).map(m => Object.keys(MODELS[m]).length).reduce((a, b) => a + b)
- MODEL_LANG_COUNT = Object.keys(MODELS).length
- LANG_COUNT = Object.keys(LANGUAGES).length

- MODEL_META = public.models._data.MODEL_META
- MODEL_LICENSES = public.models._data.MODEL_LICENSES
- MODEL_BENCHMARKS = public.models._data.MODEL_BENCHMARKS
- EXAMPLE_SENTENCES = public.models._data.EXAMPLE_SENTENCES

- IS_PAGE = (SECTION != "index") && !landing
- IS_MODELS = (SECTION == "models" && LANGUAGES[current.source])
- HAS_MODELS = IS_MODELS && CURRENT_MODELS.length


//- Add prefixes to items of an array (for modifier CSS classes)
    array   - [array] list of class names or options, e.g. ["foot"]
    prefix  - [string] prefix to add to each class, e.g. "c-table__row"
    RETURNS - [array] list of modified class names

-   function prefixArgs(array, prefix) {
-       return array.map(arg => prefix + '--' + arg).join(' ');
-   }


//- Convert API paths (semi-temporary fix for renamed sections)
    path    - [string] link path supplied to +api mixin
    RETURNS - [string] new link path to correct location

-   function convertAPIPath(path) {
-       if (path.startsWith('spacy#') || path.startsWith('displacy#') || path.startsWith('util#')) {
-           var comps = path.split('#');
-           return "top-level#" + comps[0] + '.' + comps[1];
-       }
-       return path;
-   }


//- Get model components from ID. Components can then be looked up in LANGUAGES
    and MODEL_META respectively, to get their human-readable form.
    id      - [string] model ID, e.g. "en_core_web_sm"
    RETURNS - [object] object keyed by components lang, type, genre and size

-   function getModelComponents(id) {
-       var comps = id.split('_');
-       return {'lang': comps[0], 'type': comps[1], 'genre': comps[2], 'size': comps[3]}
-   }


//- Generate GitHub links
    repo     - [string] name of repo owned by explosion
    filepath - [string] logical path to file relative to repository root
    branch   - [string] optional branch, defaults to "master"
    RETURNS  - [string] the correct link to the file on GitHub

-   function gh(repo, filepath, branch) {
-       var branch = ALPHA ? 'develop' : branch
-       return 'https://github.com/' + SOCIAL.github + '/' + (repo || '') + (filepath ? '/blob/' + (branch || 'master') + '/' + filepath : '' );
-   }