org.sweble.wikitext.lazy.parser.HorizontalRule.rats Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of swc-parser-lazy Show documentation
Show all versions of swc-parser-lazy Show documentation
A parser for MediaWiki's Wikitext.
/**
* 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.
*/
/*!
*
* Horizontal Rule
* ---------------
*
* Grammar:
* - '----' '-'*
*
* AST node:
* Name : HorizontalRule
* Extends : LeafNode
* NodeType : org.sweble.wikitext.lazy.AstNodeTypes.NT_HORIZONTAL_RULE
*
*/
module org.sweble.wikitext.lazy.parser.HorizontalRule;
// -- Horizontal Rule --[ State Aware Memoization ]-----------------------------
noinline transient AstNode HorizontalRule =
^{
StateAwareResult r = (StateAwareResult) pHorizontalRuleMemoized(yyBase);
final LazyParserContext context = getContext();
Result yyResult = r.getResult(context);
if (yyResult == null)
yyResult = r.setResult(context, pHorizontalRuleTransient(yyBase));
if (returnTrue(r))
return yyResult;
}
;
noinline memoized AstNode HorizontalRuleMemoized =
^{
Result yyResult = new StateAwareResult("HorizontalRule", getContext(), pHorizontalRuleTransient(yyBase));
if (returnTrue(yyResult))
return yyResult;
}
;
// -- Horizontal Rule ----------------------------------------------------------
noinline transient AstNode HorizontalRuleTransient =
"---" &{ accept(ParserAtoms.HORIZONTAL_RULE) } yyValue:HorizontalRuleChoice
/ "---"
{
yyValue = new Text("---");
}
;
private inline AstNode HorizontalRuleChoice =
more:'-'+
{
int dashes = 3 + more.size();
yyValue = new HorizontalRule();
if (isGatherRtData())
addRtData(yyValue, joinRt(StringUtils.strrep('-', dashes)));
}
/ &{ isWarningsEnabled() } HorizontalRuleAutoCorrect
;
private inline AstNode HorizontalRuleAutoCorrect =
&{ isWarningLevelEnabled(WS_NONE) }
{
yyValue = new Text("---");
fileLooksLikeWarning(
yyValue,
makeSpan(yyStart - 3, yyStart),
WS_NONE,
"Horizontal Rule",
"a horizontal rule consists of at least 4 dashes");
}
;
// -- End of file -------------------------------------------------------------