case文の整形不備を修正
@@ -17,6 +17,8 @@ | ||
17 | 17 | var tab = ""; |
18 | 18 | // 括弧の未完回数 |
19 | 19 | var parenthesis = 0; |
20 | +// CASE句の未完回数 | |
21 | +var caseCount = 0; | |
20 | 22 | // BETWEEN句の発生フラグ |
21 | 23 | var betweenFlg = false; |
22 | 24 | // UNION句の発生フラグ |
@@ -59,6 +61,7 @@ | ||
59 | 61 | endNo = 0; |
60 | 62 | tab = ""; |
61 | 63 | parenthesis = 0; |
64 | + caseCount = 0; | |
62 | 65 | betweenFlg = false; |
63 | 66 | unionFlg = false; |
64 | 67 | } |
@@ -199,6 +202,8 @@ | ||
199 | 202 | wkSql = wkSql.replace(/ or\(/g, " or ("); |
200 | 203 | wkSql = wkSql.replace(/ and\(/g, " and ("); |
201 | 204 | |
205 | + //console.log(wkSql); | |
206 | + | |
202 | 207 | // SELECT |
203 | 208 | if (wkSql.match(/^select /i) != null || wkSql.match(/^with .*select /i) != null) { |
204 | 209 |
@@ -932,6 +937,7 @@ | ||
932 | 937 | formatSql += wkAdd; |
933 | 938 | wkAdd = ""; |
934 | 939 | tab = tab.concat("\t"); |
940 | + caseCount++; | |
935 | 941 | |
936 | 942 | } else if (wkAdd.match(/ when | else /i) != null) { |
937 | 943 |
@@ -938,12 +944,13 @@ | ||
938 | 944 | formatSql += wkAdd.substring(0, wkAdd.length - 6) + "\n\t" + tab + wkAdd.slice(-6); |
939 | 945 | wkAdd = ""; |
940 | 946 | |
941 | - } else if (wkAdd.match(/ end |^end |\tend | end\r| end\n| end | end\(/i) != null) { | |
947 | + } else if (caseCount > 0 && wkAdd.match(/ end|^end|\tend/i) != null) { | |
942 | 948 | |
943 | - var len = wkAdd.match(/^end /i) != null ? -4 : -5; | |
949 | + var len = wkAdd.match(/^end/i) != null ? -3 : -4; | |
944 | 950 | formatSql += wkAdd.substring(0, wkAdd.length + len) + "\n\t" + tab + wkAdd.slice(len); |
945 | 951 | wkAdd = ""; |
946 | 952 | tab = tab.replace("\t", ""); |
953 | + caseCount--; | |
947 | 954 | } |
948 | 955 | |
949 | 956 | return formatSql; |