]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graph.compiler/src/org/simantics/graph/compiler/internal/parsing/SourceSplitter.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.graph.compiler / src / org / simantics / graph / compiler / internal / parsing / SourceSplitter.java
index 3f00c5b47f8c27e71a0d09b9ec6abb7eaab7b277..55be461784d3d13cdf79f7c9b306c4f768da32bf 100644 (file)
-package org.simantics.graph.compiler.internal.parsing;\r
-\r
-import java.io.InputStream;\r
-import java.nio.charset.Charset;\r
-import java.util.ArrayList;\r
-\r
-import org.simantics.databoard.util.StreamUtil;\r
-\r
-public class SourceSplitter {\r
-       \r
-       public static class SplitPoint {\r
-               public final int characterId;\r
-               public final int lineId;\r
-               \r
-               public SplitPoint(int characterId, int lineId) {\r
-                       this.characterId = characterId;\r
-                       this.lineId = lineId;\r
-               }\r
-       }\r
-       \r
-       public static ArrayList<SplitPoint> split(String source, int minSplit) {\r
-               int length = source.length();\r
-               int inPar = 0;\r
-               int lineId = 0;\r
-               int lastSplit = 0;\r
-               ArrayList<SplitPoint> result = new ArrayList<SplitPoint>();\r
-               result.add(new SplitPoint(0, 0));\r
-               loop: for(int i=0;i<length;++i) {\r
-                       char c = source.charAt(i);\r
-\r
-                       switch(c) {\r
-                       case '/':\r
-                               ++i;\r
-                               c = source.charAt(i);\r
-                               if(c == '/') {\r
-                                       do {\r
-                                               ++i;\r
-                                               if(i == length)\r
-                                                       break loop;\r
-                                       } while(source.charAt(i) != '\n');\r
-                                       --i;\r
-                               }\r
-                               else if(c == '*') {\r
-                                       ++i;\r
-                                       if(source.charAt(i) == '\n')\r
-                                               ++lineId;\r
-                                       do {\r
-                                               ++i;\r
-                                               if(i >= length)\r
-                                                       break loop;\r
-                                               c = source.charAt(i);\r
-                                               if(c == '\n')\r
-                                                       ++lineId;\r
-                                       } while(c != '/' || source.charAt(i-1) != '*');\r
-                               }\r
-                               break;\r
-                       case '<':\r
-                               ++i;\r
-                               c = source.charAt(i);\r
-                               if(c != 'h') {\r
-                                       if(c == '\n')\r
-                                               ++lineId;\r
-                                       break;\r
-                               }\r
-                               do {\r
-                                       ++i;\r
-                                       if(i == length)\r
-                                               break loop;\r
-                                       c = source.charAt(i);\r
-                                       if(c == '\n') {\r
-                                               ++lineId;\r
-                                               break;\r
-                                       }\r
-                               } while(c != '>');\r
-                               break;\r
-                       case '"':\r
-                               ++i;\r
-                               if(i == length)\r
-                                       break loop;\r
-                               c = source.charAt(i);\r
-                               if(c == '"') {\r
-                                       ++i;\r
-                                       if(i == length)\r
-                                               break loop;\r
-                                       c = source.charAt(i);\r
-                                       if(c == '"') {\r
-                                               while(true) {\r
-                                                       ++i;\r
-                                                       if(i >= length)\r
-                                                               break;\r
-                                                       c = source.charAt(i);\r
-                                                       if(c == '\n')\r
-                                                               ++lineId;\r
-                                                       else if(c == '"' && i < length-2 && source.charAt(i+1) == '"' && source.charAt(i+2) == '"') {\r
-                                                               i+=2;\r
-                                                               break;                  \r
-                                                       }\r
-                                               }\r
-                                       }\r
-                                       else\r
-                                               --i;\r
-                               }\r
-                               else {\r
-                                       while(true) {\r
-                                               ++i;\r
-                                               if(i >= length)\r
-                                                       break;\r
-                                               c = source.charAt(i);\r
-                                               if(c == '"')\r
-                                                       break;\r
-                                               else if(c == '\\')\r
-                                                       ++i;                    \r
-                                               else if(c == '\n') {\r
-                                                       ++lineId;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                               }\r
-                               break;\r
-                       case '[':\r
-                       case '{':\r
-                       case '(':\r
-                               ++inPar;\r
-                               break;\r
-                       case ']':\r
-                       case '}':\r
-                       case ')':\r
-                               --inPar;\r
-                               break;\r
-                       case '\n':\r
-                               ++lineId;\r
-                               ++i;\r
-                               if(i == length)\r
-                                       break;\r
-                               c = source.charAt(i);\r
-                               if(c == '\r') {\r
-                                       ++i;\r
-                                       if(i == length)\r
-                                               break;\r
-                                       c = source.charAt(i);\r
-                               }\r
-                               if(c == '\n') {\r
-                                       --i;\r
-                                       break;\r
-                               }\r
-                               /*System.out.println();\r
-                               System.out.print(lineId + "# ");\r
-                               System.out.print(c);\r
-                               */\r
-                               if(i > lastSplit + minSplit && inPar == 0 && ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) {\r
-                                       result.add(new SplitPoint(i, lineId));\r
-                                       lastSplit = i;\r
-                               }\r
-                               else\r
-                                       --i;\r
-                               break;\r
-                       case '\r':\r
-                               break;\r
-                       default:\r
-                               //System.out.print(c);\r
-                       }\r
-               }\r
-               result.add(new SplitPoint(length, lineId));\r
-               return result;\r
-       }\r
-       \r
-       public static void main(String[] args) throws Exception {               \r
-               InputStream stream = SourceSplitter.class.getResourceAsStream("Layer0Deprecated.pgraph");\r
-               String source = StreamUtil.readString(stream, Charset.forName("UTF-8"));\r
-               stream.close();\r
-               \r
-               ArrayList<SplitPoint> sps = split(source, 1000); \r
-               for(int i=1;i<sps.size();++i) {\r
-                       SplitPoint begin = sps.get(i-1);\r
-                       SplitPoint end = sps.get(i);\r
-                       System.out.println("-- " + begin.lineId + ":" + end.lineId);\r
-                       System.out.print(source.subSequence(begin.characterId, end.characterId));\r
-               }\r
-       }\r
-       \r
-}\r
+package org.simantics.graph.compiler.internal.parsing;
+
+import java.io.InputStream;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+
+import org.simantics.databoard.util.StreamUtil;
+
+public class SourceSplitter {
+       
+       public static class SplitPoint {
+               public final int characterId;
+               public final int lineId;
+               
+               public SplitPoint(int characterId, int lineId) {
+                       this.characterId = characterId;
+                       this.lineId = lineId;
+               }
+       }
+       
+       public static ArrayList<SplitPoint> split(String source, int minSplit) {
+               int length = source.length();
+               int inPar = 0;
+               int lineId = 0;
+               int lastSplit = 0;
+               ArrayList<SplitPoint> result = new ArrayList<SplitPoint>();
+               result.add(new SplitPoint(0, 0));
+               loop: for(int i=0;i<length;++i) {
+                       char c = source.charAt(i);
+
+                       switch(c) {
+                       case '/':
+                               ++i;
+                               c = source.charAt(i);
+                               if(c == '/') {
+                                       do {
+                                               ++i;
+                                               if(i == length)
+                                                       break loop;
+                                       } while(source.charAt(i) != '\n');
+                                       --i;
+                               }
+                               else if(c == '*') {
+                                       ++i;
+                                       if(source.charAt(i) == '\n')
+                                               ++lineId;
+                                       do {
+                                               ++i;
+                                               if(i >= length)
+                                                       break loop;
+                                               c = source.charAt(i);
+                                               if(c == '\n')
+                                                       ++lineId;
+                                       } while(c != '/' || source.charAt(i-1) != '*');
+                               }
+                               break;
+                       case '<':
+                               ++i;
+                               c = source.charAt(i);
+                               if(c != 'h') {
+                                       if(c == '\n')
+                                               ++lineId;
+                                       break;
+                               }
+                               do {
+                                       ++i;
+                                       if(i == length)
+                                               break loop;
+                                       c = source.charAt(i);
+                                       if(c == '\n') {
+                                               ++lineId;
+                                               break;
+                                       }
+                               } while(c != '>');
+                               break;
+                       case '"':
+                               ++i;
+                               if(i == length)
+                                       break loop;
+                               c = source.charAt(i);
+                               if(c == '"') {
+                                       ++i;
+                                       if(i == length)
+                                               break loop;
+                                       c = source.charAt(i);
+                                       if(c == '"') {
+                                               while(true) {
+                                                       ++i;
+                                                       if(i >= length)
+                                                               break;
+                                                       c = source.charAt(i);
+                                                       if(c == '\n')
+                                                               ++lineId;
+                                                       else if(c == '"' && i < length-2 && source.charAt(i+1) == '"' && source.charAt(i+2) == '"') {
+                                                               i+=2;
+                                                               break;                  
+                                                       }
+                                               }
+                                       }
+                                       else
+                                               --i;
+                               }
+                               else {
+                                       while(true) {
+                                               ++i;
+                                               if(i >= length)
+                                                       break;
+                                               c = source.charAt(i);
+                                               if(c == '"')
+                                                       break;
+                                               else if(c == '\\')
+                                                       ++i;                    
+                                               else if(c == '\n') {
+                                                       ++lineId;
+                                                       break;
+                                               }
+                                       }
+                               }
+                               break;
+                       case '[':
+                       case '{':
+                       case '(':
+                               ++inPar;
+                               break;
+                       case ']':
+                       case '}':
+                       case ')':
+                               --inPar;
+                               break;
+                       case '\n':
+                               ++lineId;
+                               ++i;
+                               if(i == length)
+                                       break;
+                               c = source.charAt(i);
+                               if(c == '\r') {
+                                       ++i;
+                                       if(i == length)
+                                               break;
+                                       c = source.charAt(i);
+                               }
+                               if(c == '\n') {
+                                       --i;
+                                       break;
+                               }
+                               /*System.out.println();
+                               System.out.print(lineId + "# ");
+                               System.out.print(c);
+                               */
+                               if(i > lastSplit + minSplit && inPar == 0 && ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) {
+                                       result.add(new SplitPoint(i, lineId));
+                                       lastSplit = i;
+                               }
+                               else
+                                       --i;
+                               break;
+                       case '\r':
+                               break;
+                       default:
+                               //System.out.print(c);
+                       }
+               }
+               result.add(new SplitPoint(length, lineId));
+               return result;
+       }
+       
+       public static void main(String[] args) throws Exception {               
+               InputStream stream = SourceSplitter.class.getResourceAsStream("Layer0Deprecated.pgraph");
+               String source = StreamUtil.readString(stream, Charset.forName("UTF-8"));
+               stream.close();
+               
+               ArrayList<SplitPoint> sps = split(source, 1000); 
+               for(int i=1;i<sps.size();++i) {
+                       SplitPoint begin = sps.get(i-1);
+                       SplitPoint end = sps.get(i);
+                       System.out.println("-- " + begin.lineId + ":" + end.lineId);
+                       System.out.print(source.subSequence(begin.characterId, end.characterId));
+               }
+       }
+       
+}