/**
* Copyright (c) 2012 Cloudsmith Inc. and other contributors, as listed below.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cloudsmith
*
*/
package org.cloudsmith.geppetto.pp.dsl.formatting;
import com.google.inject.ImplementedBy;
/**
* Formatting advisor for breaks and alignments
*
*/
@ImplementedBy(IBreakAndAlignAdvice.Default.class)
public interface IBreakAndAlignAdvice {
public static class Default implements IBreakAndAlignAdvice {
/**
* @return 20
*/
@Override
public int clusterSize() {
return 20;
}
@Override
public boolean compactCasesWhenPossible() {
return true;
}
/*
* @return false
*/
@Override
public boolean compactResourceWhenPossible() {
return false;
}
/**
* @return OnOverflow
*/
@Override
public WhenToApplyForDefinition definitionParameterListAdvice() {
return WhenToApplyForDefinition.OnOverflow;
}
/**
* @return OnOverflow
*/
@Override
public WhenToApply hashesAdvice() {
return WhenToApply.OnOverflow;
}
/**
* @return false
*/
@Override
public boolean isAlignAssignments() {
return false;
}
/**
* @return true
*/
@Override
public boolean isAlignCases() {
return true;
}
/**
* @return OnOverflow
*/
@Override
public WhenToApply listsAdvice() {
return WhenToApply.OnOverflow;
}
}
public enum WhenToApply {
Always, OnOverflow, Never, ;
}
public enum WhenToApplyForDefinition {
Always, DefaultsPresent, OnOverflow, Never, ;
}
/**
* When aligning, what is the max cluster size (amount of max inserted padding when aligning).
*/
public int clusterSize();
/**
* Should cases be compacted if possible?
*/
public boolean compactCasesWhenPossible();
/**
* Should Resources be compacted if possible?
*/
public boolean compactResourceWhenPossible();
/**
* When to break align definition argument lists (i.e. class and definition parameters)
*/
public WhenToApplyForDefinition definitionParameterListAdvice();
/**
* When to break/align hashes
*/
public WhenToApply hashesAdvice();
/**
* Should assignment expressions be aligned.
*/
public boolean isAlignAssignments();
/**
* If cases should be aligned on ':'
*/
boolean isAlignCases();
/**
* When to break/align lists
*/
public WhenToApply listsAdvice();
}