# Copyright 2015 The Crashpad Authors. All rights reserved.
#
# Licensed 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.

[miscellaneous]
# AsciiDoc uses \r\n by default.
newline=\n

# The default AsciiDoc lang-en.conf uses docdate and doctime for the
# last-updated line in footer-text. These attributes are taken from the file’s
# mtime and cannot be overridden. For a git-based project, the date of the last
# revision is desirable, so change this to use git_date, an attribute that can
# be computed and passed in by the script that runs AsciiDoc. For man pages, use
# the mansource and manversion attributes instead of the hard-coded “Version”
# string and revnumber attribute, so that the version will appear as “Crashpad
# 0.7.0” as it does in “man” output.
ifdef::basebackend-html[]
[footer-text]
ifdef::doctype-manpage[]
{mansource=Version} {manversion={revnumber}}{basebackend-xhtml11?<br />}{basebackend-xhtml11=<br>}
endif::doctype-manpage[]
ifndef::doctype-manpage[]
Version {revnumber}{basebackend-xhtml11?<br />}{basebackend-xhtml11=<br>}
endif::doctype-manpage[]
Last updated {git_date}
endif::basebackend-html[]

# The man_link macro was inspired by git’s linkgit macro. See
# https://github.com/git/git/blob/master/Documentation/asciidoc.conf.
ifdef::doctype-manpage[]

[macros]
(?su)[\\]?(?P<name>man_link):(?P<target>\S*?)\[(?P<attrlist>.*?)\]=

ifdef::backend-docbook[]
[man_link-inlinemacro]
{0%{target}}
{0#<citerefentry>}
{0#<refentrytitle>{target}</refentrytitle><manvolnum>{0}</manvolnum>}
{0#</citerefentry>}
endif::backend-docbook[]

ifdef::basebackend-html[]
[man_link-inlinemacro]
<a href="{target}.html">{target}{0?({0})}</a>
endif::basebackend-html[]

endif::doctype-manpage[]
