use of org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileSection in project linuxtools by eclipse.
the class SpecStructureCreator method parseSpecfile.
private void parseSpecfile(DocumentRangeNode root, IDocument doc, IFile file) {
SpecfileParser parser = new SpecfileParser();
// FIXME: error markers do not show
if (file != null) {
FileEditorInput fei = new FileEditorInput(file);
// without it, the compare editor is blank
try {
SpecfileEditor.getSpecfileDocumentProvider().disconnect(fei);
SpecfileEditor.getSpecfileDocumentProvider().connect(fei);
} catch (CoreException e) {
SpecfileLog.logError(e);
}
parser.setErrorHandler(new SpecfileErrorHandler(fei, doc));
parser.setTaskHandler(new SpecfileTaskHandler(fei, doc));
Specfile specfile = parser.parse(doc);
String id = specfile.getName();
// Be a child under parent node of specfileSectionRoot (would be
// rootNode)
SpecNode fileNode = new SpecNode((DocumentRangeNode) root.getParentNode(), 1, id, doc, 0, doc.getLength());
for (SpecfileSection sec : specfile.getSections()) {
try {
addNode(root, doc, sec.getName(), doc.getLineOffset(sec.getLineNumber()), doc.getLineOffset(sec.getSectionEndLine()) - doc.getLineOffset(sec.getLineNumber()), 2);
} catch (BadLocationException e) {
SpecfileLog.logError(e);
}
}
// Be a child under the parent file node
for (SpecfilePackage sPackage : specfile.getPackages().getPackages()) {
try {
SpecNode pNode = addNode(fileNode, doc, sPackage.getPackageName(), doc.getLineOffset(sPackage.getLineNumber()), doc.getLineOffset(sPackage.getSectionEndLine()) - doc.getLineOffset(sPackage.getLineNumber()), 3);
for (SpecfileSection section : sPackage.getSections()) {
addNode(pNode, doc, section.getName(), doc.getLineOffset(section.getLineNumber()), doc.getLineOffset(section.getSectionEndLine()) - doc.getLineOffset(section.getLineNumber()), 4);
}
} catch (BadLocationException e) {
SpecfileLog.logError(e);
}
}
}
}
use of org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileSection in project linuxtools by eclipse.
the class SpecfileLabelProvider method getText.
@Override
public String getText(Object element) {
// $NON-NLS-1$
String str = "";
if (element instanceof SpecfileSection) {
SpecfileSection specfileSection = (SpecfileSection) element;
str = specfileSection.toString();
} else if (element instanceof Specfile) {
str = ((Specfile) element).getName();
} else if (element instanceof SpecfilePackageContainer) {
str = Messages.SpecfileLabelProvider_0;
} else if (element instanceof SpecfilePreamble) {
str = Messages.SpecfileLabelProvider_1;
} else if (element instanceof SpecfileElement) {
SpecfileElement specfileElement = (SpecfileElement) element;
str = specfileElement.getName();
} else if (element instanceof String) {
str = (String) element;
} else if (element instanceof SpecfilePackage) {
str = ((SpecfilePackage) element).getName();
}
return filterMacros(str.trim());
}
use of org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileSection in project linuxtools by eclipse.
the class HeaderRecognitionTest method testGetComplexSectionName5.
@Test
public void testGetComplexSectionName5() {
// FIXME: check for rest of line when -p is implemented
// "blah bleh" should become the actual text of the section
String testText = "%post -n name -p blah bleh";
String[] tokens = testText.split("\\s+");
SpecfileElement element;
newFile(testText);
element = parser.parseLine(testText, specfile, 0);
assertEquals(SpecfileSection.class, element.getClass());
SpecfileSection section = (SpecfileSection) element;
assertEquals(tokens[0].substring(1), section.getName());
assertEquals(tokens[2], section.getPackage().getPackageName());
}
use of org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileSection in project linuxtools by eclipse.
the class HeaderRecognitionTest method testGetComplexSectionName1.
@Test
public void testGetComplexSectionName1() {
String testText = "%post";
SpecfileElement element;
newFile(testText);
element = parser.parseLine(testText, specfile, 0);
assertEquals(SpecfileSection.class, element.getClass());
SpecfileSection section = (SpecfileSection) element;
assertEquals(testText.substring(1), section.getName());
assertNull(section.getPackage());
}
use of org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileSection in project linuxtools by eclipse.
the class HeaderRecognitionTest method testGetComplexSectionName3.
@Test
public void testGetComplexSectionName3() {
String testText = "%post -n name";
String[] tokens = testText.split("\\s+");
SpecfileElement element;
newFile(testText);
element = parser.parseLine(testText, specfile, 0);
assertEquals(SpecfileSection.class, element.getClass());
SpecfileSection section = (SpecfileSection) element;
assertEquals(tokens[0].substring(1), section.getName());
assertEquals(tokens[2], section.getPackage().getPackageName());
}
Aggregations