/* * Copyright 2013 Martin Kouba * * 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 org.trimou.engine.segment; import java.util.List; import org.trimou.annotations.Internal; import org.trimou.engine.context.ExecutionContext; /** * Either defines a section to be extended/overrided, or an extending/defining * section. * * @author Martin Kouba */ @Internal public class ExtendSectionSegment extends AbstractSectionSegment { public ExtendSectionSegment(String text, Origin origin, List<Segment> segments) { super(text, origin, segments); } @Override public SegmentType getType() { return SegmentType.EXTEND_SECTION; } @Override public Appendable execute(Appendable appendable, ExecutionContext context) { ExtendSectionSegment defining = (ExtendSectionSegment) context .getDefiningSection(getText()); if (defining != null) { return defining.executeNoDefiningLookup(appendable, context); } else { return super.execute(appendable, context); } } protected Appendable executeNoDefiningLookup(Appendable appendable, ExecutionContext context) { return super.execute(appendable, context); } }