You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2019/02/26 20:09:51 UTC

svn commit: r1854417 - /ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java

Author: seanfinan
Date: Tue Feb 26 20:09:50 2019
New Revision: 1854417

URL: http://svn.apache.org/viewvc?rev=1854417&view=rev
Log:
Handle '=' within quoted parameter values

Modified:
    ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java

Modified: ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java?rev=1854417&r1=1854416&r2=1854417&view=diff
==============================================================================
--- ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java (original)
+++ ctakes/trunk/ctakes-core/src/main/java/org/apache/ctakes/core/pipeline/PiperFileReader.java Tue Feb 26 20:09:50 2019
@@ -55,11 +55,12 @@ final public class PiperFileReader {
 
    static private final Pattern SPACE_PATTERN = Pattern.compile( "\\s+" );
    static private final Pattern KEY_VALUE_PATTERN = Pattern.compile( "=" );
+   static private final Pattern KEY_VALUE_PATTERN_2 = Pattern.compile( "[^\"=]+|(?:\"[^\"]*\")" );
    static private final Pattern COMMA_ARRAY_PATTERN = Pattern.compile( "," );
    static private final Pattern QUOTE_PATTERN = Pattern.compile( "\"" );
-   static private final Pattern QUOTE_VALUE_PATTERN = Pattern.compile( "(?:[^\"=\\s]+)|(?:\"[^\"=\\r\\n]+\")" );
+   static private final Pattern QUOTE_VALUE_PATTERN = Pattern.compile( "(?:[^\"=\\s]+)|(?:\"[^\"\\r\\n]+\")" );
    static private final Pattern NAME_VALUE_PATTERN = Pattern
-         .compile( "[^\"\\s=]+=(?:(?:[^\"=\\s]+)|(?:\"[^\"=\\r\\n]+\"))" );
+         .compile( "[^\"=\\s]+=(?:(?:[^\"=\\s]+)|(?:\"[^\"\\r\\n]+\"))" );
    static private final Pattern VIEWS_PATTERN = Pattern.compile( AE_VIEW_NAMES + "=[^\\s]+" );
 
    private PipelineBuilder _builder;
@@ -367,7 +368,13 @@ final public class PiperFileReader {
       final Object[] keysAndValues = new Object[ pairs.length * 2 ];
       int i = 0;
       for ( String pair : pairs ) {
-         final String[] keyAndValue = KEY_VALUE_PATTERN.split( pair );
+//         final String[] keyAndValue = KEY_VALUE_PATTERN.split( pair );
+         final Matcher kv_matcher = KEY_VALUE_PATTERN_2.matcher( pair );
+         final List<String> kvList = new ArrayList<>();
+         while ( kv_matcher.find() ) {
+            kvList.add( pair.substring( kv_matcher.start(), kv_matcher.end() ) );
+         }
+         final String[] keyAndValue = kvList.toArray( new String[ kvList.size() ] );
          keysAndValues[ i ] = keyAndValue[ 0 ];
          if ( keyAndValue.length == 1 ) {
             keysAndValues[ i + 1 ] = "";
@@ -403,7 +410,13 @@ final public class PiperFileReader {
       final Object[] keysAndValues = new Object[ pairs.length * 2 ];
       int i = 0;
       for ( String pair : pairs ) {
-         final String[] keyAndValue = KEY_VALUE_PATTERN.split( pair );
+//         final String[] keyAndValue = KEY_VALUE_PATTERN.split( pair );
+         final Matcher kv_matcher = KEY_VALUE_PATTERN_2.matcher( pair );
+         final List<String> kvList = new ArrayList<>();
+         while ( kv_matcher.find() ) {
+            kvList.add( pair.substring( kv_matcher.start(), kv_matcher.end() ) );
+         }
+         final String[] keyAndValue = kvList.toArray( new String[ kvList.size() ] );
          keysAndValues[ i ] = keyAndValue[ 0 ];
          if ( keyAndValue.length == 1 ) {
             keysAndValues[ i + 1 ] = "";