package com.opensymphony.module.sitemesh.html.rules;
import com.opensymphony.module.sitemesh.html.BlockExtractingRule;
import com.opensymphony.module.sitemesh.html.Tag;
/**
* Extracts the extra properties saved in HTML from MS Office applications (Word and Excel),
* such as Author, Company, Version, etc.
*
* @author Joe Walnes
*/
public class MSOfficeDocumentPropertiesRule extends BlockExtractingRule {
private final PageBuilder page;
private boolean inDocumentProperties;
public MSOfficeDocumentPropertiesRule(PageBuilder page) {
super(true);
this.page = page;
}
public boolean shouldProcess(String name) {
return (inDocumentProperties && name.startsWith("o:")) || name.equals("o:documentproperties");
}
public void process(Tag tag) {
if (tag.getName().equals("o:DocumentProperties")) {
inDocumentProperties = (tag.getType() == Tag.OPEN);
} else {
super.process(tag);
}
}
protected void start(Tag tag) {
}
protected void end(Tag tag) {
String name = tag.getName().substring(2);
page.addProperty("office.DocumentProperties." + name, getCurrentBufferContent());
}
}