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

org.sweble.wikitext.lazy.parser.Signature.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.
 */

/*!
 *
 * Signature
 * ---------
 *
 *   Grammar:
 *     - '~~~' '~'*
 *
 *   AST node:
 *     Name        : Signature
 *     Extends     : LeafNode
 *     Constructor : tildeCount
 *     NodeType    : org.sweble.wikitext.lazy.AstNodeTypes.NT_SIGNATURE
 *
 *     Properties:
 *       tildeCount : int
 *
 */

module org.sweble.wikitext.lazy.parser.Signature;

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




// -- Signature ----------------------------------------------------------------

AstNode Signature =
    "~~" yyValue:SignatureChoice
  / "~~"
    {
      yyValue = new Text("~~");
    }
;

private inline AstNode SignatureChoice =
    count:( "~~~" / "~~" / "~" ) w:TooManyTildesWarning?
    {
      int tildes = 2 + count.length();

      yyValue = new Signature(tildes);

      if (w != null)
      {
        fileOddSyntaxWarning(
            yyValue,
            makeSpan(yyStart - 2, w._1),
            WS_INFO,
            "Signatures consist only of 3 to 5 tildes.");
      }

      if (isGatherRtData())
        addRtData(yyValue, joinRt(StringUtils.strrep('~', tildes)));
    }
  / &{ isWarningsEnabled() } SignatureAutoCorrect
;

private inline AstNode SignatureAutoCorrect =
  &{ isWarningLevelEnabled(WS_NONE) }
  {
    yyValue = new Text("~~");

    fileLooksLikeWarning(
        yyValue,
        makeSpan(yyStart - 2, yyStart),
        WS_NONE,
        "Signature",
        "a signature consists of at least 3 tildes");
  }
;

private transient Tuple1 TooManyTildesWarning =
  &{ isWarningLevelEnabled(WS_NONE) } &'~'+
  {
    yyValue = Tuple.from(new Integer(yyRepetition1));
  }
;




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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy