# 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.

markdown: kramdown
permalink: /blog/:year/:month/:day/:title/
repository: https://github.com/apache/arrow
excerpt_separator: </p>
timezone: America/New_York

kramdown:
  input: GFM
  syntax_highlighter: rouge

include:
  - _static

exclude:
  - Gemfile
  - Gemfile.lock
  - README.md
  - Rakefile
  - node_modules
  - package-lock.json
  - package.json
  - release-announcement-template.md
  - scripts
  - vendor
  - webpack.config.json

collections:
  release:
    output: true

sass:
  style: compressed
  load_paths:
    - node_modules

# The base path where the website is deployed
baseurl:

title: "Apache Arrow"
description: "Apache Arrow is a cross-language development platform for in-memory data. It specifies a standardized language-independent columnar memory format for flat and hierarchical data, organized for efficient analytic operations on modern hardware. It also provides computational libraries and zero-copy streaming messaging and interprocess communication. Languages currently supported include C, C++, C#, Go, Java, JavaScript, MATLAB, Python, R, Ruby, and Rust."
url: https://arrow.apache.org
logo: /img/logo.png
twitter:
  username: ApacheArrow
defaults:
  - scope:
      path: ""
    values:
      image: /img/arrow-logo_horizontal_black-txt_white-bg.png
