Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Fixes #1958: Verbatim URL field is no longer checked for HTML encoded chars #1970

Merged
merged 3 commits into from
Sep 13, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `#
- Fixed [#1949](https://github.com/JabRef/jabref/issues/1949): Error message directs to the wrong preference tab
- Fixed InvalidBackgroundColor flickering with Ctrl-s and File > Save database
- Fixed loop when pulling changes (shared database) when current selected field has changed
- Fixed [#1958](https://github.com/JabRef/jabref/issues/1958): Verbatim fields are no longer checked for HTML encoded characters by integrity checks

### Removed
- The non-supported feature of being able to define file directories for any extension is removed. Still, it should work for older databases using the legacy `ps` and `pdf` fields, although we strongly encourage using the `file` field.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,25 @@
import net.sf.jabref.logic.integrity.IntegrityCheck.Checker;
import net.sf.jabref.logic.l10n.Localization;
import net.sf.jabref.model.entry.BibEntry;
import net.sf.jabref.model.entry.FieldProperty;
import net.sf.jabref.model.entry.InternalBibtexFields;

public class HTMLCharacterChecker implements Checker {

// Detect any HTML encoded character,
private static final Pattern HTML_CHARACTER_PATTERN = Pattern.compile("&[#\\p{Alnum}]+;");


/**
* Checks, if there are any HTML encoded characters in the fields
* Checks, if there are any HTML encoded characters in nonverbatim fields.
*/
@Override
public List<IntegrityMessage> check(BibEntry entry) {
List<IntegrityMessage> results = new ArrayList<>();
for (Map.Entry<String, String> field : entry.getFieldMap().entrySet()) {
// skip verbatim fields
if (InternalBibtexFields.getFieldProperties(field.getKey()).contains(FieldProperty.VERBATIM)) {
continue;
}

Matcher characterMatcher = HTML_CHARACTER_PATTERN.matcher(field.getValue());
if (characterMatcher.find()) {
results.add(
Expand Down
3 changes: 0 additions & 3 deletions src/main/java/net/sf/jabref/model/entry/FieldName.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
*
*/
public class FieldName {

// Character separating field names that are to be used in sequence as
// fallbacks for a single column (e.g. "author/editor" to use editor where
// author is not set):
Expand Down Expand Up @@ -128,7 +127,6 @@ public class FieldName {
// Map to hold alternative display names
private static final Map<String, String> displayNames = new HashMap<>();


public static String orFields(String... fields) {
return String.join(FieldName.FIELD_SEPARATOR, fields);
}
Expand All @@ -149,7 +147,6 @@ public static String orFields(List<String> fields) {
displayNames.put(FieldName.URL, "URL");
}


/**
* @param field - field to get the display version for
* @return A version of the field name more suitable for display
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,7 @@ public void testHTMLCharacterChecks() {
assertCorrect(createContext("title", "Not a single {HTML} character"));
assertCorrect(createContext("month", "#jan#"));
assertCorrect(createContext("author", "A. Einstein and I. Newton"));
assertCorrect(createContext("url", "http://www.thinkmind.org/index.php?view=article&amp;articleid=cloud_computing_2013_1_20_20130"));
assertWrong(createContext("author", "Lenhard, J&ouml;rg"));
assertWrong(createContext("author", "Lenhard, J&#227;rg"));
assertWrong(createContext("journal", "&Auml;rling Str&ouml;m for &#8211; &#x2031;"));
Expand Down