# --------------------------------------------------------------------------#
# Licensed to the Apache Software Foundation (ASF) under one or more        #
# contributor license agreements.  See the NOTICE file distributed with     #
# this work for additional information regarding copyright ownership.       #
# The ASF licenses this file to you under the Apache License, Version 2.0   #
# (the "License"); you may not use this file except in compliance with      #
# the License.  You may obtain a copy of the License at                     #
#                                                                           #
# http://www.apache.org/licenses/LICENSE-2.0                                #
#                                                                           #
# Unless required by applicable law or agreed to in writing, software       #
# distributed under the License is distributed on an "AS IS" BASIS,         #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  #
# See the License for the specific language governing permissions and       #
# limitations under the License.                                            #
# --------------------------------------------------------------------------#

# ----------------------- #
#      Main Configs       #
# ----------------------- #

project: mydoc_designers
audience: designers
product: doc
platform: all
version: all
output: web
destination: ../_site
topnav_title: Apache Quarks Documentation
homepage_title: Apache Quarks Documentation
site_title: Apache Quarks Documentation
project_folder: docs
company_name: Apache Quarks
footer_image_location: ../../common_images/company_logo.png
github_editme_path: apache/incubator-quarks-website/blob/master/site
disqus_shortname: idrbwjekyll
# variables

sidebar_tagline: Quarks
sidebar_version: Version 0.3.0
theme_file: theme-blue.css

# the algolia entries here are experimental only.

#gems:
#  - algoliasearch-jekyll
#algolia:
#  application_id: 'HXUBJERYYB'
#  index_name:     'documentation_theme_jekyll_designers'
port: 4009

exclude:
  - _site
  - _drafts
  - configs/
  - doc/mydoc_writers*
# these settings should work, but they don't seem to apply the right highlighting

#highlighter: rouge
#markdown: kramdown
#kramdown:
#  input: GFM
#  auto_ids: true
#  hard_wrap: false
#  syntax_highlighter: rouge



collections:
  tooltips:
    output: false

defaults:
  -
    scope:
      path: ""
      type: "pages"
    values:
      layout: "page"
      comments: true
      search: true
  -
    scope:
      path: ""
      type: "tooltips"
    values:
      layout: "page"
      comments: true
      search: true
      tooltip: true

url: http://quarks.incubator.apache.org
baseurl:
title: Apache Quarks
description: Quarks is an open source community for accelerating analytics at the edge.

# ----------------------- #
#    Jekyll & Plugins     #
# ----------------------- #

# Build settings
markdown: redcarpet
permalink: pygments

redcarpet:
  extensions: ["no_intra_emphasis", "fenced_code_blocks", "tables", "with_toc_data"]


# ----------------------- #
#   3rd Party Settings    #
# ----------------------- #

social:
  - title: twitter
    url: https://twitter.com/QuarksEdge
  - title: github
    url: https://github.com/quarks-edge/quarks/
  - title: stack-overflow
    url: http://stackoverflow.com/questions/ask?tags=quarks

detach:  false
port:    4000
host:    127.0.0.1

#Base URLs
sourceurl: https://github.com/apache/incubator-quarks
projurl: http://quarks.incubator.apache.org
docsurl: http://quarks.incubator.apache.org/javadoc
