# -----------------------------------------------------------------------------
#
#   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.
#
# The messages for the SVG pretty printer.
#
# Author: stephane@hillion.org
# $Id$
# -----------------------------------------------------------------------------

header = \
\n\
\tSVG pretty-printer - (C) Apache Software Foundation      \n\
\t\thttp://xmlgraphics.apache.org/batik\n

syntax = \
Syntax:\n\
\tsvgpp [options] <input file> [<output file>]

options = \
Available Options:

newline.description = \
-newline (cr | cr-lf | lf)\n\
\tSpecifies the type of newline to output. Possible values are:\n\
\tcr (mac), cr-lf (dos), lf (unix - the default).

no-format.description = \
-no-format\n\
\tDisables any formatting. Useful for doctype modifications,\n\
\tnewline conversion, ...

tab-width.description = \
-tab-width <number>\n\
\tSets the tabulation width. The default is 4.

doc-width.description = \
-doc-width <number>\n\
\tSets the document preferred number of columns. The default is 80.

doctype.description = \
-doctype (change | remove)\n\
\tRemoves or changes the DOCTYPE declaration. 'change' is used \n\
\tin conjonction with the '-public-id' and '-system-id' options.

public-id.description = \
-public-id <string>\n\
\tThe value to set to the public ID of the doctype.

system-id.description = \
-system-id <string>\n\
\tThe value to set to the system ID of the doctype.

xml-decl.description = \
-xml-decl <string>\n\
\tThe value to set to the XML declaraction.
