
#!/usr/bin/env ruby
# 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.

# A few helpful tips about the Rules file:
#
# * The string given to #compile and #route are matching patterns for
#   identifiers--not for paths. Therefore, you can’t match on extension.
#
# * The order of rules is important: for each item, only the first matching
#   rule is applied.
#
# * Item identifiers start and end with a slash (e.g. “/about/” for the file
#   “content/about.html”). To select all children, grandchildren, … of an
#   item, use the pattern “/about/*/”; “/about/*” will also select the parent,
#   because “*” matches zero or more characters.

passthrough /\/(bootstrap|css|font|img|js|static|guide|fonts|images|javascripts|stylesheets|subnavs|schema)\/.*/
passthrough '/**/.htaccess'

compile '/docs/**/*' do
  @docs = true
  filter :erb
  layout '/docs.*'
end

compile '/community/**/*' do
  @community = true
  filter :erb
  layout '/community.*'
end

compile '/releases/**/*' do
  @releases = true
  filter :erb
  layout '/releases.*'
end

compile '/**/*' do
  if item.binary?
    # don’t filter binary items
  else
    filter :erb
    layout '/default.*'
  end
end

route '/**/*.html' do
  if item.identifier =~ '/index.*'
    '/index.html'
  else
    item.identifier.without_ext + '.html'
  end
end

layout '/**/*', :erb
