# NOTE:
#      some of the settings in this file get overwritten in later config
#      files like _prod.yml, _dev.yml, and _defaults.yml

# =======
# Site settings
# =======
title:          Apache Cordova
title_suffix:   "Apache Cordova"
url:            "https://cordova.apache.org" # the base hostname & protocol
baseurl:        "" # the subpath of the site, e.g. /blog; NOTE: no trailing slash
rss_path:       /feed.xml
description: >
    Apache Cordova is a set of device APIs that allow a web mobile app
    developer to access native device function from JavaScript.

excerpt_separator: <!--more-->

# the version to which /latest/ points
# NOTE:
#      this value gets overwritten in _version.yml, which is a generated file
latest_docs_version: dev

# the docs version that is shown by default when clicking on docs links on the site
default_linked_docs_version: latest

# the language that serves as the source for the translations
src_language: en

# NOTE:
#      this value _might_ get overwritten on some pages;
#      see _defaults.yml, which is a generated file
language: en

# NOTE:
#      this value gets overwritten in _defaults.yml, which is a generated file
defaults:

# =======
# Build settings
# =======
source:      www
destination: build-dev

# don't erase these files in the output directory
keep_files: [".git", ".svn", "wiki-images", "images", "downloads"]

lsi:  false # don't produce an index for related posts
safe: false # disables plugins

markdown: redcarpet

redcarpet:
    extensions:
        # this enables code blocks denoted by backticks, like in GFM
        # NOTE:
        #      this is turned on by default by Jekyll, but is still
        #      specified explicitly here in case the defaults change
        - fenced_code_blocks

        # this allows code blocks and HTML blocks to
        # not have a leading or trailing newline
        - lax_spacing

        # allows tables
        - tables

        # surrounds highlighted text with <mark>s
        - highlight

highlighter: rouge

kramdown:
    input: GFM
    hard_wrap: false
    syntax_highlighter: rouge

# exclude these directories from the build
exclude:
    - static/css-src

algolia_api_key: "0a916ab198bd93d031aa70611271e42e"

collections:
  - members
