Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Unified Diff: java/org/chromium/distiller/SchemaOrgParserAccessor.java

Issue 1705123002: Add support for Schema.org/Recipe Base URL: https://github.com/chromium/dom-distiller.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: java/org/chromium/distiller/SchemaOrgParserAccessor.java
diff --git a/java/org/chromium/distiller/SchemaOrgParserAccessor.java b/java/org/chromium/distiller/SchemaOrgParserAccessor.java
index e789a41121c21eff406aa6650f58d9bc7e32170b..3359689448da9810cb6f609bfb09adb90b4a914b 100644
--- a/java/org/chromium/distiller/SchemaOrgParserAccessor.java
+++ b/java/org/chromium/distiller/SchemaOrgParserAccessor.java
@@ -9,13 +9,17 @@ import org.chromium.distiller.proto.DomDistillerProtos.TimingInfo;
import com.google.gwt.dom.client.Element;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
/**
* This class instantiates SchemaOrgParser and implements MarkupParser.Accessor interface to provide
* access to properties that SchemaOrgParser has parsed.
*/
public class SchemaOrgParserAccessor implements MarkupParser.Accessor {
+
+ private static Set<SchemaOrgParser.Type> supportedTypes;
private final SchemaOrgParser parser;
/**
@@ -30,6 +34,11 @@ public class SchemaOrgParserAccessor implements MarkupParser.Accessor {
parser = new SchemaOrgParser(root, timingInfo);
}
+ static {
wychen 2016/03/14 22:58:42 static sections tend to have performance issues in
+ supportedTypes = new HashSet<>();
+ supportedTypes.add(SchemaOrgParser.Type.RECIPE);
+ }
+
@Override
public String getTitle() {
String title = "";
@@ -162,4 +171,27 @@ public class SchemaOrgParserAccessor implements MarkupParser.Accessor {
public boolean optOut() {
return false;
}
+
+ /**
+ * Get schema.org parsed content.
+ *
+ * Content is generated when a main entity is identified or
+ * has only one entity item parsed and it is supported
+ *
+ * @return HTML output from the supported item.
+ */
+ @Override
+ public String getStructuredData() {
+ String output = "";
+ SchemaOrgParser.ThingItem entity = parser.getMainEntity();
+ List<SchemaOrgParser.ThingItem> topLevelEntities =
+ parser.getTopLevelEntities();
+ if (entity == null && topLevelEntities.size() == 1) {
+ entity = topLevelEntities.get(0);
+ }
+ if (entity != null && supportedTypes.contains(entity.getType())) {
+ output = entity.generateOutput();
+ }
+ return output;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698