Skip to content
This repository has been archived by the owner on Jan 27, 2025. It is now read-only.

Commit

Permalink
Adopt solution by @blackwinter for @ feedback issue
Browse files Browse the repository at this point in the history
  • Loading branch information
fsteeg committed Dec 1, 2020
1 parent d961bde commit e1117dc
Showing 1 changed file with 12 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Deque;
Expand Down Expand Up @@ -91,12 +90,6 @@ public class Metafix implements StreamPipe<StreamReceiver>, NamedValuePipe, Maps
private static final InterceptorFactory NULL_INTERCEPTOR_FACTORY = new NullInterceptorFactory();
private static final Map<String, String> NO_VARS = Collections.emptyMap();

// See https://www.w3.org/TR/json-ld11/#keywords
private static final List<String> JSONLD_KEYWORDS = Arrays.asList(
"@base", "@container", "@context", "@direction", "@graph", "@id", "@import", "@included", "@index", "@json",
"@language", "@list", "@nest", "@none", "@prefix", "@propagate", "@protected", "@reverse", "@set", "@type",
"@value", "@version", "@vocab");

// warning: auxiliary class WildcardRegistry in WildcardDataRegistry.java should not be accessed from outside its own source file
//private final Registry<NamedValueReceiver> dataRegistry = new WildcardRegistry<>();
private final Registry<NamedValueReceiver> dataRegistry = new Registry<NamedValueReceiver>() {
Expand Down Expand Up @@ -372,11 +365,11 @@ else if (fallback != null) {
elseNestedEntityStarted = true;
}

send(currentLiteralName, value, fallback);
send(escapeFeedbackChar(currentLiteralName), value, fallback);
}
}
else {
send(path, value, fallback);
send(escapeFeedbackChar(path), value, fallback);
}
}
}
Expand Down Expand Up @@ -417,9 +410,8 @@ public void receive(final String name, final String value, final NamedValueSourc
throw new IllegalArgumentException(
"encountered literal with name='null'. This indicates a bug in a function or a collector.");
}
final int end = Math.min(name.indexOf(flattener.getEntityMarker()), name.indexOf(FixBuilder.ARRAY_MARKER));
final String firstNameSegment = end == -1 ? name : name.substring(0, end);
if (name.length() != 0 && name.charAt(0) == FEEDBACK_CHAR && !JSONLD_KEYWORDS.contains(firstNameSegment)) {

if (startsWithFeedbackChar(name)) {
dispatch(name, value, null, false);
return;
}
Expand All @@ -436,6 +428,14 @@ public void receive(final String name, final String value, final NamedValueSourc
outputStreamReceiver.literal(unescapedName, value);
}

private boolean startsWithFeedbackChar(final String name) {
return name.length() != 0 && name.charAt(0) == FEEDBACK_CHAR;
}

private String escapeFeedbackChar(final String name) {
return name == null ? null : (startsWithFeedbackChar(name) ? ESCAPE_CHAR : "") + name;
}

@Override
public Map<String, String> getMap(final String mapName) {
return maps.getOrDefault(mapName, Collections.emptyMap());
Expand Down

0 comments on commit e1117dc

Please sign in to comment.