KDocKnownTag: J2K
This commit is contained in:
@@ -76,7 +76,7 @@ CODE_FENCE_END=("```" | "~~~")
|
|||||||
return KDocTokens.LEADING_ASTERISK; }
|
return KDocTokens.LEADING_ASTERISK; }
|
||||||
|
|
||||||
<CONTENTS_BEGINNING> "@"{TAG_NAME} {
|
<CONTENTS_BEGINNING> "@"{TAG_NAME} {
|
||||||
KDocKnownTag tag = KDocKnownTag.findByTagName(zzBuffer.subSequence(zzStartRead, zzMarkedPos));
|
KDocKnownTag tag = KDocKnownTag.Companion.findByTagName(zzBuffer.subSequence(zzStartRead, zzMarkedPos));
|
||||||
yybegin(tag != null && tag.isReferenceRequired() ? TAG_BEGINNING : TAG_TEXT_BEGINNING);
|
yybegin(tag != null && tag.isReferenceRequired() ? TAG_BEGINNING : TAG_TEXT_BEGINNING);
|
||||||
return KDocTokens.TAG_NAME;
|
return KDocTokens.TAG_NAME;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* The following code was generated by JFlex 1.4.3 on 4/28/16 3:03 PM */
|
/* The following code was generated by JFlex 1.4.3 on 4/28/16 4:31 PM */
|
||||||
|
|
||||||
package org.jetbrains.kotlin.kdoc.lexer;
|
package org.jetbrains.kotlin.kdoc.lexer;
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.kdoc.parser.KDocKnownTag;
|
|||||||
/**
|
/**
|
||||||
* This class is a scanner generated by
|
* This class is a scanner generated by
|
||||||
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
|
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
|
||||||
* on 4/28/16 3:03 PM from the specification file
|
* on 4/28/16 4:31 PM from the specification file
|
||||||
* <tt>/Users/yole/jetbrains/kotlin/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex</tt>
|
* <tt>/Users/yole/jetbrains/kotlin/compiler/frontend/src/org/jetbrains/kotlin/kdoc/lexer/KDoc.flex</tt>
|
||||||
*/
|
*/
|
||||||
class _KDocLexer implements FlexLexer {
|
class _KDocLexer implements FlexLexer {
|
||||||
@@ -583,31 +583,25 @@ class _KDocLexer implements FlexLexer {
|
|||||||
return KDocTokens.TEXT;
|
return KDocTokens.TEXT;
|
||||||
}
|
}
|
||||||
case 21: break;
|
case 21: break;
|
||||||
case 13:
|
|
||||||
{ KDocKnownTag tag = KDocKnownTag.findByTagName(zzBuffer.subSequence(zzStartRead, zzMarkedPos));
|
|
||||||
yybegin(tag != null && tag.isReferenceRequired() ? TAG_BEGINNING : TAG_TEXT_BEGINNING);
|
|
||||||
return KDocTokens.TAG_NAME;
|
|
||||||
}
|
|
||||||
case 22: break;
|
|
||||||
case 10:
|
case 10:
|
||||||
{ yybegin(CODE_BLOCK_CONTENTS_BEGINNING);
|
{ yybegin(CODE_BLOCK_CONTENTS_BEGINNING);
|
||||||
return KDocTokens.LEADING_ASTERISK;
|
return KDocTokens.LEADING_ASTERISK;
|
||||||
}
|
}
|
||||||
case 23: break;
|
case 22: break;
|
||||||
case 1:
|
case 1:
|
||||||
{ return TokenType.BAD_CHARACTER;
|
{ return TokenType.BAD_CHARACTER;
|
||||||
}
|
}
|
||||||
case 24: break;
|
case 23: break;
|
||||||
case 14:
|
case 14:
|
||||||
{ yybegin(CONTENTS_BEGINNING);
|
{ yybegin(CONTENTS_BEGINNING);
|
||||||
return KDocTokens.START;
|
return KDocTokens.START;
|
||||||
}
|
}
|
||||||
case 25: break;
|
case 24: break;
|
||||||
case 2:
|
case 2:
|
||||||
{ yybegin(CONTENTS);
|
{ yybegin(CONTENTS);
|
||||||
return KDocTokens.TEXT;
|
return KDocTokens.TEXT;
|
||||||
}
|
}
|
||||||
case 26: break;
|
case 25: break;
|
||||||
case 20:
|
case 20:
|
||||||
// lookahead expression with fixed base length
|
// lookahead expression with fixed base length
|
||||||
zzMarkedPos = zzStartRead + 3;
|
zzMarkedPos = zzStartRead + 3;
|
||||||
@@ -615,32 +609,32 @@ class _KDocLexer implements FlexLexer {
|
|||||||
yybegin(CONTENTS);
|
yybegin(CONTENTS);
|
||||||
return KDocTokens.TEXT;
|
return KDocTokens.TEXT;
|
||||||
}
|
}
|
||||||
case 27: break;
|
case 26: break;
|
||||||
case 19:
|
case 19:
|
||||||
{ yybegin(CONTENTS);
|
{ yybegin(CONTENTS);
|
||||||
return KDocTokens.MARKDOWN_INLINE_LINK;
|
return KDocTokens.MARKDOWN_INLINE_LINK;
|
||||||
}
|
}
|
||||||
case 28: break;
|
case 27: break;
|
||||||
case 5:
|
case 5:
|
||||||
{ yybegin(CONTENTS);
|
{ yybegin(CONTENTS);
|
||||||
return KDocTokens.TEXT;
|
return KDocTokens.TEXT;
|
||||||
}
|
}
|
||||||
case 29: break;
|
case 28: break;
|
||||||
case 12:
|
case 12:
|
||||||
{ yybegin(CONTENTS);
|
{ yybegin(CONTENTS);
|
||||||
return KDocTokens.MARKDOWN_ESCAPED_CHAR;
|
return KDocTokens.MARKDOWN_ESCAPED_CHAR;
|
||||||
}
|
}
|
||||||
case 30: break;
|
case 29: break;
|
||||||
case 16:
|
case 16:
|
||||||
{ yybegin(TAG_TEXT_BEGINNING);
|
{ yybegin(TAG_TEXT_BEGINNING);
|
||||||
return KDocTokens.MARKDOWN_LINK;
|
return KDocTokens.MARKDOWN_LINK;
|
||||||
}
|
}
|
||||||
case 31: break;
|
case 30: break;
|
||||||
case 4:
|
case 4:
|
||||||
{ yybegin(CONTENTS_BEGINNING);
|
{ yybegin(CONTENTS_BEGINNING);
|
||||||
return KDocTokens.LEADING_ASTERISK;
|
return KDocTokens.LEADING_ASTERISK;
|
||||||
}
|
}
|
||||||
case 32: break;
|
case 31: break;
|
||||||
case 9:
|
case 9:
|
||||||
{ if (yytextContainLineBreaks()) {
|
{ if (yytextContainLineBreaks()) {
|
||||||
yybegin(CODE_BLOCK_LINE_BEGINNING);
|
yybegin(CODE_BLOCK_LINE_BEGINNING);
|
||||||
@@ -648,7 +642,7 @@ class _KDocLexer implements FlexLexer {
|
|||||||
}
|
}
|
||||||
return KDocTokens.CODE_BLOCK_TEXT;
|
return KDocTokens.CODE_BLOCK_TEXT;
|
||||||
}
|
}
|
||||||
case 33: break;
|
case 32: break;
|
||||||
case 3:
|
case 3:
|
||||||
{ if (yytextContainLineBreaks()) {
|
{ if (yytextContainLineBreaks()) {
|
||||||
yybegin(LINE_BEGINNING);
|
yybegin(LINE_BEGINNING);
|
||||||
@@ -658,28 +652,34 @@ class _KDocLexer implements FlexLexer {
|
|||||||
return KDocTokens.TEXT; // internal white space
|
return KDocTokens.TEXT; // internal white space
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case 34: break;
|
case 33: break;
|
||||||
case 18:
|
case 18:
|
||||||
// lookahead expression with fixed lookahead length
|
// lookahead expression with fixed lookahead length
|
||||||
yypushback(1);
|
yypushback(1);
|
||||||
{ yybegin(CONTENTS);
|
{ yybegin(CONTENTS);
|
||||||
return KDocTokens.MARKDOWN_LINK;
|
return KDocTokens.MARKDOWN_LINK;
|
||||||
}
|
}
|
||||||
case 35: break;
|
case 34: break;
|
||||||
case 17:
|
case 17:
|
||||||
{ yybegin(CONTENTS);
|
{ yybegin(CONTENTS);
|
||||||
return KDocTokens.MARKDOWN_LINK;
|
return KDocTokens.MARKDOWN_LINK;
|
||||||
}
|
}
|
||||||
case 36: break;
|
case 35: break;
|
||||||
case 11:
|
case 11:
|
||||||
{ if (isLastToken()) return KDocTokens.END;
|
{ if (isLastToken()) return KDocTokens.END;
|
||||||
else return KDocTokens.TEXT;
|
else return KDocTokens.TEXT;
|
||||||
}
|
}
|
||||||
case 37: break;
|
case 36: break;
|
||||||
case 7:
|
case 7:
|
||||||
{ yybegin(TAG_TEXT_BEGINNING);
|
{ yybegin(TAG_TEXT_BEGINNING);
|
||||||
return KDocTokens.MARKDOWN_LINK;
|
return KDocTokens.MARKDOWN_LINK;
|
||||||
}
|
}
|
||||||
|
case 37: break;
|
||||||
|
case 13:
|
||||||
|
{ KDocKnownTag tag = KDocKnownTag.Companion.findByTagName(zzBuffer.subSequence(zzStartRead, zzMarkedPos));
|
||||||
|
yybegin(tag != null && tag.isReferenceRequired() ? TAG_BEGINNING : TAG_TEXT_BEGINNING);
|
||||||
|
return KDocTokens.TAG_NAME;
|
||||||
|
}
|
||||||
case 38: break;
|
case 38: break;
|
||||||
case 6:
|
case 6:
|
||||||
{ if (yytextContainLineBreaks()) {
|
{ if (yytextContainLineBreaks()) {
|
||||||
|
|||||||
@@ -14,11 +14,11 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.kdoc.parser;
|
package org.jetbrains.kotlin.kdoc.parser
|
||||||
|
|
||||||
import com.intellij.openapi.util.text.StringUtil;
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
|
|
||||||
public enum KDocKnownTag {
|
enum class KDocKnownTag private constructor(val isReferenceRequired: Boolean, val isSectionStart: Boolean) {
|
||||||
AUTHOR(false, false),
|
AUTHOR(false, false),
|
||||||
THROWS(true, false),
|
THROWS(true, false),
|
||||||
EXCEPTION(true, false),
|
EXCEPTION(true, false),
|
||||||
@@ -31,31 +31,20 @@ public enum KDocKnownTag {
|
|||||||
SAMPLE(true, false),
|
SAMPLE(true, false),
|
||||||
SUPPRESS(false, false);
|
SUPPRESS(false, false);
|
||||||
|
|
||||||
private final boolean takesReference;
|
|
||||||
private final boolean startsSection;
|
|
||||||
|
|
||||||
KDocKnownTag(boolean takesReference, boolean startsSection) {
|
companion object {
|
||||||
this.takesReference = takesReference;
|
fun findByTagName(tagName: CharSequence): KDocKnownTag? {
|
||||||
this.startsSection = startsSection;
|
var tagName = tagName
|
||||||
}
|
if (StringUtil.startsWith(tagName, "@")) {
|
||||||
|
tagName = tagName.subSequence(1, tagName.length)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return valueOf(tagName.toString().toUpperCase())
|
||||||
|
}
|
||||||
|
catch (ignored: IllegalArgumentException) {
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isReferenceRequired() {
|
return null
|
||||||
return takesReference;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isSectionStart() {
|
|
||||||
return startsSection;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static KDocKnownTag findByTagName(CharSequence tagName) {
|
|
||||||
if (StringUtil.startsWith(tagName, "@")) {
|
|
||||||
tagName = tagName.subSequence(1, tagName.length());
|
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
return valueOf(tagName.toString().toUpperCase());
|
|
||||||
}
|
|
||||||
catch (IllegalArgumentException ignored) {
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class KDocParser implements PsiParser {
|
|||||||
|
|
||||||
private static PsiBuilder.Marker parseTag(PsiBuilder builder, PsiBuilder.Marker currentSectionMarker) {
|
private static PsiBuilder.Marker parseTag(PsiBuilder builder, PsiBuilder.Marker currentSectionMarker) {
|
||||||
String tagName = builder.getTokenText();
|
String tagName = builder.getTokenText();
|
||||||
KDocKnownTag knownTag = KDocKnownTag.findByTagName(tagName);
|
KDocKnownTag knownTag = KDocKnownTag.Companion.findByTagName(tagName);
|
||||||
if (knownTag != null && knownTag.isSectionStart()) {
|
if (knownTag != null && knownTag.isSectionStart()) {
|
||||||
currentSectionMarker.done(KDocElementTypes.KDOC_SECTION);
|
currentSectionMarker.done(KDocElementTypes.KDOC_SECTION);
|
||||||
currentSectionMarker = builder.mark();
|
currentSectionMarker = builder.mark();
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ open class KDocTag(node: ASTNode) : KDocElementImpl(node) {
|
|||||||
|
|
||||||
val knownTag: KDocKnownTag?
|
val knownTag: KDocKnownTag?
|
||||||
get() {
|
get() {
|
||||||
return if (name != null) KDocKnownTag.findByTagName(name) else null
|
return name?.let { KDocKnownTag.findByTagName(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun hasSubject(contentChildren: List<ASTNode>): Boolean {
|
private fun hasSubject(contentChildren: List<ASTNode>): Boolean {
|
||||||
|
|||||||
Reference in New Issue
Block a user