66import com .intellij .psi .PsiDocumentManager ;
77import com .intellij .psi .PsiElement ;
88import com .intellij .psi .PsiFile ;
9- import com .intellij .psi .TokenType ;
10- import com .intellij .psi .tree .IElementType ;
119import com .intellij .util .IncorrectOperationException ;
10+ import net .seesharpsoft .intellij .plugins .csv .CsvHelper ;
1211import net .seesharpsoft .intellij .plugins .csv .psi .CsvTypes ;
1312import org .jetbrains .annotations .NotNull ;
1413
@@ -32,33 +31,10 @@ public static List<PsiElement> getChildren(PsiElement element) {
3231 }
3332 return children ;
3433 }
35-
36- public static IElementType getElementType (PsiElement element ) {
37- return element == null || element .getNode () == null ? null : element .getNode ().getElementType ();
38- }
3934
40- public static PsiElement getParentFieldElement (PsiElement element ) {
41- if (getElementType (element ) == TokenType .WHITE_SPACE ) {
42- if (getElementType (element .getParent ()) == CsvTypes .FIELD ) {
43- element = element .getParent ();
44- } else if (getElementType (element .getPrevSibling ()) == CsvTypes .FIELD ) {
45- element = element .getPrevSibling ();
46- } else if (getElementType (element .getNextSibling ()) == CsvTypes .FIELD ) {
47- element = element .getNextSibling ();
48- } else {
49- element = null ;
50- }
51- } else {
52- while (element != null && CsvIntentionHelper .getElementType (element ) != CsvTypes .FIELD ) {
53- element = element .getParent ();
54- }
55- }
56- return element ;
57- }
58-
5935 public static PsiElement getPreviousSeparator (PsiElement fieldElement ) {
6036 while (fieldElement != null ) {
61- if (getElementType (fieldElement ) == CsvTypes .COMMA ) {
37+ if (CsvHelper . getElementType (fieldElement ) == CsvTypes .COMMA ) {
6238 break ;
6339 }
6440 fieldElement = fieldElement .getPrevSibling ();
@@ -68,7 +44,7 @@ public static PsiElement getPreviousSeparator(PsiElement fieldElement) {
6844
6945 public static PsiElement getNextSeparator (PsiElement fieldElement ) {
7046 while (fieldElement != null ) {
71- if (getElementType (fieldElement ) == CsvTypes .COMMA ) {
47+ if (CsvHelper . getElementType (fieldElement ) == CsvTypes .COMMA ) {
7248 break ;
7349 }
7450 fieldElement = fieldElement .getNextSibling ();
@@ -78,7 +54,7 @@ public static PsiElement getNextSeparator(PsiElement fieldElement) {
7854
7955 public static PsiElement getPreviousCRLF (PsiElement recordElement ) {
8056 while (recordElement != null ) {
81- if (getElementType (recordElement ) == CsvTypes .CRLF ) {
57+ if (CsvHelper . getElementType (recordElement ) == CsvTypes .CRLF ) {
8258 break ;
8359 }
8460 recordElement = recordElement .getPrevSibling ();
@@ -88,7 +64,7 @@ public static PsiElement getPreviousCRLF(PsiElement recordElement) {
8864
8965 public static PsiElement getNextCRLF (PsiElement recordElement ) {
9066 while (recordElement != null ) {
91- if (getElementType (recordElement ) == CsvTypes .CRLF ) {
67+ if (CsvHelper . getElementType (recordElement ) == CsvTypes .CRLF ) {
9268 break ;
9369 }
9470 recordElement = recordElement .getNextSibling ();
@@ -110,9 +86,9 @@ public static Collection<PsiElement> getAllElements(PsiFile file) {
11086
11187 private static Collection <PsiElement > getAllFields (PsiFile file ) {
11288 return getChildren (file ).parallelStream ()
113- .filter (element -> getElementType (element ) == CsvTypes .RECORD )
89+ .filter (element -> CsvHelper . getElementType (element ) == CsvTypes .RECORD )
11490 .flatMap (record -> getChildren (record ).stream ())
115- .filter (element -> getElementType (element ) == CsvTypes .FIELD )
91+ .filter (element -> CsvHelper . getElementType (element ) == CsvTypes .FIELD )
11692 .collect (Collectors .toList ());
11793 }
11894
@@ -123,15 +99,15 @@ public static void quoteAll(@NotNull Project project, @NotNull PsiFile psiFile)
12399 Collection <PsiElement > fields = getAllFields (psiFile );
124100 PsiElement separator ;
125101 for (PsiElement field : fields ) {
126- if (field .getFirstChild () == null || getElementType (field .getFirstChild ()) != CsvTypes .QUOTE ) {
102+ if (field .getFirstChild () == null || CsvHelper . getElementType (field .getFirstChild ()) != CsvTypes .QUOTE ) {
127103 separator = getPreviousSeparator (field );
128104 if (separator == null ) {
129105 quotePositions .add (field .getParent ().getTextOffset ());
130106 } else {
131107 quotePositions .add (separator .getTextOffset () + separator .getTextLength ());
132108 }
133109 }
134- if (field .getLastChild () == null || getElementType (field .getLastChild ()) != CsvTypes .QUOTE ) {
110+ if (field .getLastChild () == null || CsvHelper . getElementType (field .getLastChild ()) != CsvTypes .QUOTE ) {
135111 separator = getNextSeparator (field );
136112 if (separator == null ) {
137113 quotePositions .add (field .getParent ().getTextOffset () + field .getParent ().getTextLength ());
@@ -153,13 +129,13 @@ public static void unquoteAll(@NotNull Project project, @NotNull PsiFile psiFile
153129 List <Integer > quotePositions = new ArrayList <>();
154130 Collection <PsiElement > fields = getAllFields (psiFile );
155131 for (PsiElement field : fields ) {
156- if (getChildren (field ).stream ().anyMatch (element -> getElementType (element ) == CsvTypes .ESCAPED_TEXT )) {
132+ if (getChildren (field ).stream ().anyMatch (element -> CsvHelper . getElementType (element ) == CsvTypes .ESCAPED_TEXT )) {
157133 continue ;
158134 }
159- if (getElementType (field .getFirstChild ()) == CsvTypes .QUOTE ) {
135+ if (CsvHelper . getElementType (field .getFirstChild ()) == CsvTypes .QUOTE ) {
160136 quotePositions .add (field .getFirstChild ().getTextOffset ());
161137 }
162- if (getElementType (field .getLastChild ()) == CsvTypes .QUOTE ) {
138+ if (CsvHelper . getElementType (field .getLastChild ()) == CsvTypes .QUOTE ) {
163139 quotePositions .add (field .getLastChild ().getTextOffset ());
164140 }
165141 }
@@ -175,7 +151,7 @@ public static void quoteValue(@NotNull Project project, @NotNull PsiElement elem
175151 Document document = PsiDocumentManager .getInstance (project ).getDocument (element .getContainingFile ());
176152 List <Integer > quotePositions = new ArrayList <>();
177153
178- element = getParentFieldElement (element );
154+ element = CsvHelper . getParentFieldElement (element );
179155 int quotePosition = getOpeningQuotePosition (element .getFirstChild (), element .getLastChild ());
180156 if (quotePosition != -1 ) {
181157 quotePositions .add (quotePosition );
@@ -198,11 +174,11 @@ public static void unquoteValue(@NotNull Project project, @NotNull PsiElement el
198174 Document document = PsiDocumentManager .getInstance (project ).getDocument (element .getContainingFile ());
199175 List <Integer > quotePositions = new ArrayList <>();
200176
201- element = getParentFieldElement (element );
202- if (getElementType (element .getFirstChild ()) == CsvTypes .QUOTE ) {
177+ element = CsvHelper . getParentFieldElement (element );
178+ if (CsvHelper . getElementType (element .getFirstChild ()) == CsvTypes .QUOTE ) {
203179 quotePositions .add (element .getFirstChild ().getTextOffset ());
204180 }
205- if (getElementType (element .getLastChild ()) == CsvTypes .QUOTE ) {
181+ if (CsvHelper . getElementType (element .getLastChild ()) == CsvTypes .QUOTE ) {
206182 quotePositions .add (element .getLastChild ().getTextOffset ());
207183 }
208184 String text = removeQuotes (document .getText (), quotePositions );
@@ -235,22 +211,22 @@ public static String removeQuotes(String text, List<Integer> quotePositions) {
235211 }
236212
237213 public static int getOpeningQuotePosition (PsiElement firstFieldElement , PsiElement lastFieldElement ) {
238- if (getElementType (firstFieldElement ) != CsvTypes .QUOTE ) {
214+ if (CsvHelper . getElementType (firstFieldElement ) != CsvTypes .QUOTE ) {
239215 return firstFieldElement .getTextOffset ();
240216 }
241- if (getElementType (lastFieldElement ) == CsvTypes .QUOTE ) {
217+ if (CsvHelper . getElementType (lastFieldElement ) == CsvTypes .QUOTE ) {
242218 return lastFieldElement .getTextOffset ();
243219 }
244220 return -1 ;
245221 }
246222
247223 public static int getOpeningQuotePosition (PsiElement errorElement ) {
248224 PsiElement lastFieldElement = errorElement ;
249- while (getElementType (lastFieldElement ) != CsvTypes .RECORD ) {
225+ while (CsvHelper . getElementType (lastFieldElement ) != CsvTypes .RECORD ) {
250226 lastFieldElement = lastFieldElement .getPrevSibling ();
251227 }
252228 lastFieldElement = lastFieldElement .getLastChild ();
253- if (getElementType (lastFieldElement ) != CsvTypes .FIELD ) {
229+ if (CsvHelper . getElementType (lastFieldElement ) != CsvTypes .FIELD ) {
254230 throw new RuntimeException ("Field element expected" );
255231 }
256232 return getOpeningQuotePosition (lastFieldElement .getFirstChild (), lastFieldElement .getLastChild ());
@@ -260,7 +236,7 @@ public static int getOpeningQuotePosition(PsiElement errorElement) {
260236 public static PsiElement findQuotePositionsUntilSeparator (PsiElement element , List <Integer > quotePositions ) {
261237 PsiElement separatorElement = null ;
262238 while (separatorElement == null && element != null ) {
263- if (getElementType (element ) == CsvTypes .COMMA || getElementType (element ) == CsvTypes .CRLF ) {
239+ if (CsvHelper . getElementType (element ) == CsvTypes .COMMA || CsvHelper . getElementType (element ) == CsvTypes .CRLF ) {
264240 separatorElement = element ;
265241 continue ;
266242 }
0 commit comments