Search in sources :

Example 6 with Doclet

use of org.eclipse.n4js.jsdoc.dom.Doclet in project n4js by eclipse.

the class LineTagTest method testLineTagWithRegionAndDescr.

@SuppressWarnings("javadoc")
@Test
public void testLineTagWithRegionAndDescr() {
    String in = "/** foo.\n * @stubLineTagTitle {@region value} tag description. \n */";
    AbstractLineTagDefinition tag = new StubLineTagWithRegionDefinition("stubLineTagTitle");
    DocletParser docletParser = new DocletParser(new TagDictionary<>(Arrays.asList(tag)), new TagDictionary<AbstractInlineTagDefinition>());
    Doclet doclet = docletParser.parse(in);
    LineTag lineTag = doclet.getLineTags().get(0);
    TagValue region = lineTag.getValueByKey(StubLineTagWithRegionDefinition.REGION);
    Text strcturedText = (Text) region.getContents().get(0);
    assertEquals("@region value", strcturedText.getText());
    TagValue vDescription = lineTag.getValueByKey(StubLineTagWithRegionDefinition.DESCR);
    Text tabDescription = (Text) vDescription.getContents().get(0);
    String deString = tabDescription.getText();
    assertEquals("tag description. ", deString);
}
Also used : LineTag(org.eclipse.n4js.jsdoc.dom.LineTag) Doclet(org.eclipse.n4js.jsdoc.dom.Doclet) DocletParser(org.eclipse.n4js.jsdoc.DocletParser) Text(org.eclipse.n4js.jsdoc.dom.Text) TagValue(org.eclipse.n4js.jsdoc.dom.TagValue) Test(org.junit.Test)

Example 7 with Doclet

use of org.eclipse.n4js.jsdoc.dom.Doclet in project n4js by eclipse.

the class DocletParser method parse.

/**
 * @param commentString
 *            Input string that will be parsed. Multiline comment expected.
 * @return Instance of Doclet (not null, but may have no contents).
 */
public Doclet parse(String commentString) {
    JSDocCharScanner scanner = new JSDocCharScanner(commentString);
    // parse main description
    Doclet doclet = parseMainDescription(scanner);
    TagTitleTokenizer tagTitleTokenizer = new TagTitleTokenizer();
    JSDocToken token;
    // TODO error handling
    while (null != (token = tagTitleTokenizer.nextToken(scanner))) {
        ITagDefinition tagDefinition = lineTagDictionary.getDefinition(token.token);
        int lineTagEnd = scanner.findLineTagEnd();
        scanner.fence(lineTagEnd);
        if (tagDefinition != null) {
            TagTitle tagTitle = createTagTitle(token, tagDefinition);
            LineTag tag = (LineTag) tagDefinition.parse(tagTitle, scanner, descriptionParser);
            tag.setRange(token.start, scanner.offset());
            doclet.getLineTags().add(tag);
        }
        scanner.unfence();
        scanner.setNextOffset(lineTagEnd);
    }
    doclet.setEnd(scanner.offset());
    return doclet;
}
Also used : TagTitleTokenizer(org.eclipse.n4js.jsdoc.tokenizers.TagTitleTokenizer) LineTag(org.eclipse.n4js.jsdoc.dom.LineTag) Doclet(org.eclipse.n4js.jsdoc.dom.Doclet) TagTitle(org.eclipse.n4js.jsdoc.dom.TagTitle)

Example 8 with Doclet

use of org.eclipse.n4js.jsdoc.dom.Doclet in project n4js by eclipse.

the class LineTagWithFullMemberReferenceTest method test_fullRef_simpleName.

@SuppressWarnings("javadoc")
@Test
public void test_fullRef_simpleName() {
    String in = "/** foo." + "\n * @testee n4/model/collections/DataSet.DataSet.each" + "\n */";
    AbstractLineTagDefinition tagDef = new LineTagWithFullMemberReference("testee");
    DocletParser docletParser = new DocletParser(new TagDictionary<>(Arrays.asList(tagDef)), new TagDictionary<AbstractInlineTagDefinition>());
    Doclet doclet = docletParser.parse(in);
    LineTag lineTag = doclet.getLineTags().get(0);
    EList<ContentNode> contents = lineTag.getValueByKey(LineTagWithFullElementReference.REF).getContents();
    FullMemberReference ref = (FullMemberReference) contents.get(0);
    assertEquals("n4/model/collections/DataSet", ref.getModuleName());
    assertEquals("DataSet", ref.getTypeName());
    assertEquals("each", ref.getMemberName());
}
Also used : LineTag(org.eclipse.n4js.jsdoc.dom.LineTag) Doclet(org.eclipse.n4js.jsdoc.dom.Doclet) DocletParser(org.eclipse.n4js.jsdoc.DocletParser) ContentNode(org.eclipse.n4js.jsdoc.dom.ContentNode) FullMemberReference(org.eclipse.n4js.jsdoc.dom.FullMemberReference) Test(org.junit.Test)

Example 9 with Doclet

use of org.eclipse.n4js.jsdoc.dom.Doclet in project n4js by eclipse.

the class SimpleN4JSDocTest method assertSameSerializationForm.

/**
 * @param jsdocString
 *            jsDoc string
 */
private void assertSameSerializationForm(String jsdocString) {
    DocletParser docletParser = new N4JSDocletParser();
    Doclet doclet = docletParser.parse(jsdocString);
    String out = JSDocSerializer.toJSDocString(doclet);
    assertEquals(jsdocString, out);
}
Also used : N4JSDocletParser(org.eclipse.n4js.jsdoc.N4JSDocletParser) Doclet(org.eclipse.n4js.jsdoc.dom.Doclet) N4JSDocletParser(org.eclipse.n4js.jsdoc.N4JSDocletParser) DocletParser(org.eclipse.n4js.jsdoc.DocletParser)

Example 10 with Doclet

use of org.eclipse.n4js.jsdoc.dom.Doclet in project n4js by eclipse.

the class SimpleN4JSDocTest method testWhitespaces_IDEBUG_571_b.

@SuppressWarnings("javadoc")
@Test
public void testWhitespaces_IDEBUG_571_b() {
    String in = "/**\n" + " * X\n" + " * \n" + " * @testeeType Y\n" + " */";
    DocletParser docletParser = new N4JSDocletParser();
    Doclet doclet = docletParser.parse(in);
    String descr = ((Text) doclet.getContents().get(0)).getText();
    assertEquals("X", descr);
    assertSameNumberOfLineTags(1, doclet);
}
Also used : N4JSDocletParser(org.eclipse.n4js.jsdoc.N4JSDocletParser) Doclet(org.eclipse.n4js.jsdoc.dom.Doclet) N4JSDocletParser(org.eclipse.n4js.jsdoc.N4JSDocletParser) DocletParser(org.eclipse.n4js.jsdoc.DocletParser) Text(org.eclipse.n4js.jsdoc.dom.Text) Test(org.junit.Test)

Aggregations

Doclet (org.eclipse.n4js.jsdoc.dom.Doclet)28 Test (org.junit.Test)21 LineTag (org.eclipse.n4js.jsdoc.dom.LineTag)14 Text (org.eclipse.n4js.jsdoc.dom.Text)14 DocletParser (org.eclipse.n4js.jsdoc.DocletParser)11 AbstractInlineTagDefinition (org.eclipse.n4js.jsdoc.tags.AbstractInlineTagDefinition)11 ContentNode (org.eclipse.n4js.jsdoc.dom.ContentNode)8 AbstractLineTagDefinition (org.eclipse.n4js.jsdoc.tags.AbstractLineTagDefinition)8 TagValue (org.eclipse.n4js.jsdoc.dom.TagValue)6 N4JSDocletParser (org.eclipse.n4js.jsdoc.N4JSDocletParser)5 FullMemberReference (org.eclipse.n4js.jsdoc.dom.FullMemberReference)4 Composite (org.eclipse.n4js.jsdoc.dom.Composite)3 InlineTag (org.eclipse.n4js.jsdoc.dom.InlineTag)3 ArrayList (java.util.ArrayList)2 EObject (org.eclipse.emf.ecore.EObject)2 TMember (org.eclipse.n4js.ts.types.TMember)2 Optional (java.util.Optional)1 EcoreUtil (org.eclipse.emf.ecore.util.EcoreUtil)1 ITextViewer (org.eclipse.jface.text.ITextViewer)1 CompletionProposal (org.eclipse.jface.text.contentassist.CompletionProposal)1