All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sweble.wikitext.lazy.preprocessor.OnlyInclude.rats Maven / Gradle / Ivy

There is a newer version: 3.1.9
Show newest version
/**
 * Copyright 2011 The Open Source Research Group,
 *                University of Erlangen-Nürnberg
 *
 * 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.
 */

/*!
 *
 * Inclusion control
 * -----------------
 *
 *   - ...
 *     Everything between the tags is only processed when the page is viewed
 *     directly.
 *   - ...
 *     Everything between the tags is only processed when the page is included
 *     by another page
 *   - ...
 *     When viewed directly,  tags have no effect, however, when
 *     the page is included by another page, only the content inside
 *     onlyinclude tags will be processed while all other text surroudning
 *     the tags will be ignored.
 *
 * OnlyInclude
 * -----------
 *
 *   Grammar:
 *
 *   AST node:
 *     Name        : OnlyInclude
 *     Extends     : ContentNode
 *     Constructor : "content, elementType"
 *     NodeType    : org.sweble.wikitext.lazy.AstNodeTypes.NT_ONLY_INCLUDE
 *
 *     Properties:
 *       elementType : XmlElementType
 *
 */

module org.sweble.wikitext.lazy.preprocessor.OnlyInclude;

import org.sweble.wikitext.lazy.utils.Whitespace;

import org.sweble.wikitext.lazy.preprocessor.State;
import org.sweble.wikitext.lazy.preprocessor.Redirect;
import org.sweble.wikitext.lazy.preprocessor.Content;




// -- OnlyInclude Content ------------------------------------------------------

NodeList OnlyIncludeContent = tOnlyIncludeContent ;

private transient NodeList tOnlyIncludeContent =
  ignored:Ignored repeat:OnlyIncludeRepeat* last:( KwOnlyIncludeOpen ContentStar )?
  {
    yyValue = new NodeList(ignored, repeat);
    if (last != null)
        yyValue.add(new OnlyInclude(last, XmlElementType.UNCLOSED_ELEMENT));
  }
;

private inline NodeList OnlyIncludeRepeat =
  KwOnlyIncludeOpen content:ContentStar KwOnlyIncludeClose ignored:Ignored
  {
    yyValue = new NodeList(
        new OnlyInclude(content, XmlElementType.UNCLOSED_ELEMENT),
        ignored);
  }
;

private inline Ignored Ignored =
  content:IgnoredString
  {
    yyValue = new Ignored(content);
  }
;

private transient String IgnoredString = ( !KwOnlyIncludeOpen _ )* ;

private inline void KwOnlyIncludeOpen = "" ;

private inline void KwOnlyIncludeClose = "" ;




// -- OnlyInclude Predicate ----------------------------------------------------

void HasOnlyIncludeContent =
  &{ yyState.isParseForInclusion() }
  ( !KwOnlyIncludeOpen  _ )* KwOnlyIncludeOpen
  ( !KwOnlyIncludeClose _ )* KwOnlyIncludeClose
;

inline void ContentStopperOnlyInclude =
  &{ yyState.isHasOnlyInclude() } KwOnlyIncludeClose
;




// -- End of file --------------------------------------------------------------




© 2015 - 2024 Weber Informatics LLC | Privacy Policy