Chromium Code Reviews| Index: java/org/chromium/distiller/MarkupGenerator.java |
| diff --git a/java/org/chromium/distiller/MarkupGenerator.java b/java/org/chromium/distiller/MarkupGenerator.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..96ca3c4a91c4e7f2e31c409911ea6cd30e8e91b7 |
| --- /dev/null |
| +++ b/java/org/chromium/distiller/MarkupGenerator.java |
| @@ -0,0 +1,76 @@ |
| +package org.chromium.distiller; |
| + |
| +import java.util.List; |
| + |
| +/** |
| + * This class is used to unify the Markup generation when producing the |
| + * HTML output for Structured Data, reducing the coupling between |
| + * the representation of the data and the Markup generation. |
| + */ |
| +public class MarkupGenerator { |
| + |
| + public static String generateMarkup( |
| + SchemaOrgParser.RecipeItem.Recipe recipe) { |
| + return generateImage(recipe.imageSrc) + |
| + createElement("p", "Author: ", recipe.author) + |
|
wychen
2016/03/14 22:58:42
L10n issues again. It would look weird on non-Engl
|
| + createElement("p", "Creator: ", recipe.creator) + |
| + createElement("p", "Description: ", recipe.description) + |
| + createElement("p", "Serves: ", recipe.recipeYield) + |
| + createElement("p", "Prep time: ", recipe.prepTime) + |
| + createElement("p", "Cook time: ", recipe.cookTime) + |
| + createElement("p", "Total time: ", recipe.totalTime) + |
| + generateList("Ingredients: ", recipe.recipeIngredient, |
| + false) + |
| + generateList("Instructions: <br />", |
| + recipe.recipeInstructions, false); |
| + } |
| + |
| + public static String generateMarkup( |
| + SchemaOrgParser.PersonItem.Person person) { |
| + return createElement("span", person.name); |
| + } |
| + |
| + private static String generateList(String name, List<String> value, |
| + boolean ordered) { |
| + if (value.size() == 1) { |
| + return createElement("p", name, value.get(0)); |
| + } |
| + String output = ""; |
| + for (String s : value) { |
| + output += createElement("li", s); |
| + } |
| + return name + createElement(ordered ? "ol" : "ul", output); |
| + } |
| + |
| + private static String createElement(String tag, String name, |
| + String value) { |
| + String output = ""; |
| + if (!value.isEmpty()) { |
| + output = format(createElement(tag, name + value)); |
| + } |
| + return output; |
| + } |
| + |
| + private static String createElement(String tag, String value) { |
| + return "<" + tag + ">" + value + "</" + tag + ">"; |
| + } |
| + |
| + private static String generateImage(String src) { |
| + String output = ""; |
| + if (!src.isEmpty()) { |
| + output = "<img src='" + src + "' />"; |
| + } |
| + return output; |
| + } |
| + |
| + /** |
| + * Format a string replacing the new line char to |
| + * <br> tag. It also detects when 2 paragraphs are concatenated |
| + * together, splitting them by a <br> tag. |
| + */ |
| + private static String format(String string) { |
| + return string.trim() |
| + .replaceAll("([.])([A-Z]{1}[a-z]+)", "$1<br />$2") |
| + .replaceAll("[\n]+[\\s]*", "<br />"); |
| + } |
| +} |