/*
* $Id$
*
* SARL is an general-purpose agent programming language.
* More details on http://www.sarl.io
*
* Copyright (C) 2014-2017 the original authors or authors.
*
* 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.
*/
package io.sarl.lang.mwe2.codebuilder.config;
import com.google.inject.Injector;
import org.eclipse.xtext.util.Strings;
import org.eclipse.xtext.xbase.lib.Pure;
import org.eclipse.xtext.xtext.generator.IGuiceAwareGeneratorComponent;
/**
* A component for configuring the CodeBuilderFragment2.
*
* @author $Author: sgalland$
* @version $FullVersion$
* @mavengroupid $GroupId$
* @mavenartifactid $ArtifactId$
*/
@SuppressWarnings("checkstyle:methodcount")
public class ExpressionConfig implements IGuiceAwareGeneratorComponent {
/** Default regular expression that is matching an expression in the grammar.
*/
private static final String EXPRESSION_GRAMMAR_PATTERN = "^XExpression$"; //$NON-NLS-1$
/** Default regular expression that is matching a block expression in the grammar.
*/
private static final String BLOCK_EXPRESSION_GRAMMAR_PATTERN = "^XBlockExpression$"; //$NON-NLS-1$
/** Default regular expression that is matching the typename of a field that is containing an expression.
*/
private static final String EXPRESSION_FIELD_TYPENAME_PATTERN = "Field$"; //$NON-NLS-1$
/** Default keyword for declaring a field.
*/
private static final String DEFAULT_FIELD_DECLARATION_KEYWORD = "var"; //$NON-NLS-1$
/** Default keyword for declaring the container of a field.
*/
private static final String DEFAULT_FIELD_CONTAINER_DECLARATION_KEYWORD = "class"; //$NON-NLS-1$
/** Default keyword for declaring a block member.
*/
private static final String DEFAULT_BLOCK_MEMBER_DECLARATION_KEYWORD = "def"; //$NON-NLS-1$
/** Default keyword for declaring the container of a block member.
*/
private static final String DEFAULT_BLOCK_MEMBER_CONTAINER_DECLARATION_KEYWORD = DEFAULT_FIELD_CONTAINER_DECLARATION_KEYWORD;
private String expressionFieldTypenamePattern = EXPRESSION_FIELD_TYPENAME_PATTERN;
private String expressionGrammarPattern = EXPRESSION_GRAMMAR_PATTERN;
private String blockExpressionGrammarPattern = BLOCK_EXPRESSION_GRAMMAR_PATTERN;
private String fieldDeclarationKeyword = DEFAULT_FIELD_DECLARATION_KEYWORD;
private String fieldContainerDeclarationKeyword = DEFAULT_FIELD_CONTAINER_DECLARATION_KEYWORD;
private String blockMemberDeclarationKeyword = DEFAULT_BLOCK_MEMBER_DECLARATION_KEYWORD;
private String blockMemberContainerDeclarationKeyword = DEFAULT_BLOCK_MEMBER_CONTAINER_DECLARATION_KEYWORD;
/** Set the regular expression that is matching the typename of a field that is containing an expression.
*
* @param pattern the pattern for the type.
*/
public void setExpressionFieldTypenamePattern(String pattern) {
if (!Strings.isEmpty(pattern)) {
this.expressionFieldTypenamePattern = pattern;
}
}
/** Replies the regular expression that is matching the typename of a field that is containing an expression.
*
* @return the pattern for typenames.
*/
@Pure
public String getExpressionFieldTypenamePattern() {
return this.expressionFieldTypenamePattern;
}
/** Set the pattern that is matching an expression in the grammar.
*
* @param pattern the pattern for an expression.
*/
public void setExpressionGrammarPattern(String pattern) {
if (!Strings.isEmpty(pattern)) {
this.expressionGrammarPattern = pattern;
}
}
/** Replies the pattern that is matching an expression in the grammar.
*
* @return the pattern for an expression.
*/
@Pure
public String getExpressionGrammarPattern() {
return this.expressionGrammarPattern;
}
@Override
public void initialize(Injector injector) {
injector.injectMembers(this);
}
/** Set the pattern that is matching a block expression in the grammar.
*
* @param pattern the pattern for a block expression.
*/
public void setBlockExpressionGrammarPattern(String pattern) {
if (!Strings.isEmpty(pattern)) {
this.blockExpressionGrammarPattern = pattern;
}
}
/** Replies the pattern that is matching a block expression in the grammar.
*
* @return the pattern for a block expression.
*/
@Pure
public String getBlockExpressionGrammarPattern() {
return this.blockExpressionGrammarPattern;
}
/** Set the keyword for declaring a field.
*
* @param keyword the keyword.
*/
public void setFieldDeclarationKeyword(String keyword) {
if (!Strings.isEmpty(keyword)) {
this.fieldDeclarationKeyword = keyword;
}
}
/** Replies the keyword for declaring a field.
*
* @return the keyword.
*/
public String getFieldDeclarationKeyword() {
return this.fieldDeclarationKeyword;
}
/** Set the keyword for declaring the container of a field.
*
* @param keyword the keyword.
*/
public void setFieldContainerDeclarationKeyword(String keyword) {
if (!Strings.isEmpty(keyword)) {
this.fieldContainerDeclarationKeyword = keyword;
}
}
/** Replies the keyword for declaring the container of a field.
*
* @return the keyword.
*/
public String getFieldContainerDeclarationKeyword() {
return this.fieldContainerDeclarationKeyword;
}
/** Set the keyword for declaring a block member.
*
* @param keyword the keyword.
*/
public void setBlockMemberDeclarationKeyword(String keyword) {
if (!Strings.isEmpty(keyword)) {
this.blockMemberDeclarationKeyword = keyword;
}
}
/** Replies the keyword for declaring a block member.
*
* @return the keyword.
*/
public String getBlockMemberDeclarationKeyword() {
return this.blockMemberDeclarationKeyword;
}
/** Set the keyword for declaring the container of a block member.
*
* @param keyword the keyword.
*/
public void setBlockMemberContainerDeclarationKeyword(String keyword) {
if (!Strings.isEmpty(keyword)) {
this.blockMemberContainerDeclarationKeyword = keyword;
}
}
/** Replies the keyword for declaring the container of a block member.
*
* @return the keyword.
*/
public String getBlockMemberContainerDeclarationKeyword() {
return this.blockMemberContainerDeclarationKeyword;
}
}