Merge pull request #1697 from OpenRefine/issue1696

Clickable URLs in HTML exporter
This commit is contained in:
Antonin Delpeuch 2018-09-05 14:58:44 +01:00 committed by GitHub
commit 07ab7da872
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 0 deletions

View File

@ -33,6 +33,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package com.google.refine.exporters;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.OffsetDateTime;
@ -45,6 +47,7 @@ import java.util.Properties;
import java.util.TimeZone;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.validator.routines.UrlValidator;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@ -226,6 +229,8 @@ abstract public class CustomizableTabularExporterUtilities {
boolean date_omitTime = false;
DateFormat dateFormatter;
String[] urlSchemes = {"http","https", "ftp"};
UrlValidator urlValidator = new UrlValidator(urlSchemes);
Map<String, String> identifierSpaceToUrl = null;
@ -348,6 +353,12 @@ abstract public class CustomizableTabularExporterUtilities {
if (text == null) {
if (value instanceof String) {
text = (String) value;
if(text.contains(":")) {
if(urlValidator.isValid(text)) {
link = text;
}
}
} else if (value instanceof OffsetDateTime) {
text = ((OffsetDateTime) value).format(DateTimeFormatter.ISO_INSTANT);
} else {

View File

@ -184,6 +184,33 @@ public class HtmlExporterTests extends RefineTest {
"</body>\n" +
"</html>\n");
}
@Test
public void exportHtmlTableWithURLs(){
CreateGrid(3,3);
project.rows.get(1).cells.set(1, new Cell("ftp://ftp.ripe.net/ripe/", null));
project.rows.get(2).cells.set(0, new Cell("https://gnu.org/", null));
try {
SUT.export(project, options, engine, writer);
} catch (IOException e) {
Assert.fail();
}
Assert.assertEquals(writer.toString(), "<html>\n" +
"<head>\n" + "<title>" + TEST_PROJECT_NAME + "</title>\n" +
"<meta charset=\"utf-8\" />\n" +
"</head>\n" +
"<body>\n" +
"<table>\n" +
"<tr><th>column0</th><th>column1</th><th>column2</th></tr>\n" +
"<tr><td>row0cell0</td><td>row0cell1</td><td>row0cell2</td></tr>\n" +
"<tr><td>row1cell0</td><td><a href=\"ftp://ftp.ripe.net/ripe/\">ftp://ftp.ripe.net/ripe/</a></td><td>row1cell2</td></tr>\n" +
"<tr><td><a href=\"https://gnu.org/\">https://gnu.org/</a></td><td>row2cell1</td><td>row2cell2</td></tr>\n" +
"</table>\n" +
"</body>\n" +
"</html>\n");
}
//helper methods