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

#Scalariform formatter preferences
#Wed Apr 20 09:26:25 EDT 2016
alignParameters=true
formatXml=true
preserveDanglingCloseParenthesis=false
spaceInsideBrackets=false
indentWithTabs=false
spaceInsideParentheses=false
multilineScaladocCommentsStartOnFirstLine=false
alignSingleLineCaseStatements=true
compactStringConcatenation=false
placeScaladocAsterisksBeneathSecondAsterisk=false
indentPackageBlocks=true
compactControlReadability=false
spacesWithinPatternBinders=true
alignSingleLineCaseStatements.maxArrowIndent=40
doubleIndentClassDeclaration=false
preserveSpaceBeforeArguments=false
spaceBeforeColon=false
rewriteArrowSymbols=false
indentLocalDefs=false
indentSpaces=2
