1515 */
1616package org.domaframework.doma.intellij.formatter
1717
18+ import com.intellij.formatting.FormattingMode
1819import com.intellij.lang.ASTNode
1920import com.intellij.psi.PsiComment
2021import com.intellij.psi.util.PsiTreeUtil
@@ -52,6 +53,8 @@ import org.domaframework.doma.intellij.psi.SqlTypes
5253
5354class SqlBlockUtil (
5455 sqlBlock : SqlBlock ,
56+ private val enableFormat : Boolean ,
57+ private val formatMode : FormattingMode ,
5558) {
5659 val wrap = sqlBlock.wrap
5760 val alignment = sqlBlock.alignment
@@ -69,39 +72,39 @@ class SqlBlockUtil(
6972 when (indentLevel) {
7073 IndentType .JOIN -> {
7174 return if (SqlKeywordUtil .isJoinKeyword(child.text)) {
72- SqlJoinGroupBlock (child, wrap, alignment, spacingBuilder)
75+ SqlJoinGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
7376 } else if (lastGroupBlock is SqlJoinGroupBlock ) {
74- SqlKeywordBlock (child, IndentType .ATTACHED , wrap, alignment, spacingBuilder)
77+ SqlKeywordBlock (child, IndentType .ATTACHED , wrap, alignment, spacingBuilder, enableFormat, formatMode )
7578 } else {
76- SqlJoinGroupBlock (child, wrap, alignment, spacingBuilder)
79+ SqlJoinGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
7780 }
7881 }
7982
8083 IndentType .INLINE_SECOND -> {
81- return SqlInlineSecondGroupBlock (child, wrap, alignment, spacingBuilder)
84+ return SqlInlineSecondGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
8285 }
8386
8487 IndentType .TOP -> {
8588 if (keywordText == " create" ) {
86- return SqlCreateKeywordGroupBlock (child, wrap, alignment, spacingBuilder)
89+ return SqlCreateKeywordGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
8790 }
8891 if (keywordText == " insert" ) {
89- return SqlInsertKeywordGroupBlock (child, wrap, alignment, spacingBuilder)
92+ return SqlInsertKeywordGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
9093 }
9194
92- return SqlKeywordGroupBlock (child, indentLevel, wrap, alignment, spacingBuilder)
95+ return SqlKeywordGroupBlock (child, indentLevel, wrap, alignment, spacingBuilder, enableFormat, formatMode )
9396 }
9497
9598 IndentType .SECOND -> {
9699 return if (keywordText == " set" ) {
97- SqlUpdateKeywordGroupBlock (child, wrap, alignment, spacingBuilder)
100+ SqlUpdateKeywordGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
98101 } else {
99- SqlKeywordGroupBlock (child, indentLevel, wrap, alignment, spacingBuilder)
102+ SqlKeywordGroupBlock (child, indentLevel, wrap, alignment, spacingBuilder, enableFormat, formatMode )
100103 }
101104 }
102105
103106 else -> {
104- return SqlKeywordGroupBlock (child, indentLevel, wrap, alignment, spacingBuilder)
107+ return SqlKeywordGroupBlock (child, indentLevel, wrap, alignment, spacingBuilder, enableFormat, formatMode )
105108 }
106109 }
107110 }
@@ -113,14 +116,14 @@ class SqlBlockUtil(
113116 lastGroupBlock?.getNodeText() ? : " " ,
114117 )
115118 ) {
116- return SqlInlineGroupBlock (child, wrap, alignment, spacingBuilder)
119+ return SqlInlineGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
117120 }
118121 }
119122
120123 IndentType .ATTACHED -> {
121124 if (lastGroupBlock is SqlCreateKeywordGroupBlock ) {
122125 lastGroupBlock.setCreateQueryType(child.text)
123- return SqlKeywordBlock (child, indentLevel, wrap, alignment, spacingBuilder)
126+ return SqlKeywordBlock (child, indentLevel, wrap, alignment, spacingBuilder, enableFormat, formatMode )
124127 }
125128 }
126129
@@ -130,22 +133,22 @@ class SqlBlockUtil(
130133 lastGroupBlock as ? SqlCreateKeywordGroupBlock
131134 ? : lastGroupBlock?.parentBlock as ? SqlCreateKeywordGroupBlock
132135 if (parentCreateBlock != null && parentCreateBlock.createType == CreateQueryType .VIEW ) {
133- return SqlViewGroupBlock (child, wrap, alignment, spacingBuilder)
136+ return SqlViewGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
134137 }
135138 }
136139 }
137140
138- else -> return SqlKeywordBlock (child, indentLevel, wrap, alignment, spacingBuilder)
141+ else -> return SqlKeywordBlock (child, indentLevel, wrap, alignment, spacingBuilder, enableFormat, formatMode )
139142 }
140- return SqlKeywordBlock (child, indentLevel, wrap, alignment, spacingBuilder)
143+ return SqlKeywordBlock (child, indentLevel, wrap, alignment, spacingBuilder, enableFormat, formatMode )
141144 }
142145
143146 fun getSubGroupBlock (
144147 lastGroup : SqlBlock ? ,
145148 child : ASTNode ,
146149 ): SqlBlock {
147150 if (child.treePrev.elementType == SqlTypes .WORD ) {
148- return SqlFunctionParamBlock (child, wrap, alignment, spacingBuilder)
151+ return SqlFunctionParamBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
149152 }
150153
151154 when (lastGroup) {
@@ -154,31 +157,31 @@ class SqlBlockUtil(
154157 lastGroup.childBlocks
155158 .lastOrNull { SqlKeywordUtil .isOptionSqlKeyword(it.getNodeText()) }
156159 if (lastKeyword != null && lastKeyword.getNodeText().lowercase() == " in" ) {
157- return SqlParallelListBlock (child, wrap, alignment, spacingBuilder)
160+ return SqlParallelListBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
158161 }
159162 if (lastGroup is SqlCreateKeywordGroupBlock ) {
160- return SqlColumnDefinitionGroupBlock (child, wrap, alignment, spacingBuilder)
163+ return SqlColumnDefinitionGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
161164 }
162165 if (lastGroup is SqlInsertKeywordGroupBlock ) {
163- return SqlInsertColumnGroupBlock (child, wrap, alignment, spacingBuilder)
166+ return SqlInsertColumnGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
164167 }
165168 if (lastGroup is SqlUpdateKeywordGroupBlock ) {
166169 return if (lastGroup.childBlocks.firstOrNull { it is SqlUpdateColumnGroupBlock } == null ) {
167- SqlUpdateColumnGroupBlock (child, wrap, alignment, spacingBuilder)
170+ SqlUpdateColumnGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
168171 } else if (lastGroup.childBlocks.lastOrNull { it is SqlUpdateColumnGroupBlock } != null ) {
169- SqlUpdateValueGroupBlock (child, wrap, alignment, spacingBuilder)
172+ SqlUpdateValueGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
170173 } else {
171- SqlSubQueryGroupBlock (child, wrap, alignment, spacingBuilder)
174+ SqlSubQueryGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
172175 }
173176 }
174- return SqlSubQueryGroupBlock (child, wrap, alignment, spacingBuilder)
177+ return SqlSubQueryGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
175178 }
176179
177180 is SqlColumnDefinitionRawGroupBlock ->
178- return SqlDataTypeParamBlock (child, wrap, alignment, spacingBuilder)
181+ return SqlDataTypeParamBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
179182
180183 else ->
181- return SqlSubQueryGroupBlock (child, wrap, alignment, spacingBuilder)
184+ return SqlSubQueryGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
182185 }
183186 }
184187
@@ -193,17 +196,19 @@ class SqlBlockUtil(
193196 wrap,
194197 alignment,
195198 spacingBuilder,
199+ enableFormat,
200+ formatMode,
196201 )
197202
198203 is SqlColumnGroupBlock , is SqlKeywordGroupBlock -> {
199204 if (lastGroup.indent.indentLevel == IndentType .SECOND ) {
200- SqlCommaBlock (child, wrap, alignment, spacingBuilder)
205+ SqlCommaBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
201206 } else {
202- SqlColumnGroupBlock (child, wrap, alignment, spacingBuilder)
207+ SqlColumnGroupBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
203208 }
204209 }
205210
206- else -> SqlCommaBlock (child, wrap, alignment, spacingBuilder)
211+ else -> SqlCommaBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
207212 }
208213
209214 fun getWordBlock (
@@ -219,9 +224,11 @@ class SqlBlockUtil(
219224 wrap,
220225 alignment,
221226 spacingBuilder,
227+ enableFormat,
228+ formatMode,
222229 )
223230
224- else -> SqlWordBlock (child, wrap, alignment, spacingBuilder)
231+ else -> SqlWordBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
225232 }
226233 }
227234
@@ -232,6 +239,8 @@ class SqlBlockUtil(
232239 wrap,
233240 alignment,
234241 spacingBuilder,
242+ enableFormat,
243+ formatMode,
235244 )
236245 }
237246
@@ -243,13 +252,15 @@ class SqlBlockUtil(
243252 wrap,
244253 alignment,
245254 spacingBuilder,
255+ enableFormat,
256+ formatMode,
246257 )
247258 } else {
248- SqlWordBlock (child, wrap, alignment, spacingBuilder)
259+ SqlWordBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
249260 }
250261 }
251262
252- else -> SqlWordBlock (child, wrap, alignment, spacingBuilder)
263+ else -> SqlWordBlock (child, wrap, alignment, spacingBuilder, enableFormat, formatMode )
253264 }
254265
255266 fun getBlockCommentBlock (
@@ -262,6 +273,8 @@ class SqlBlockUtil(
262273 wrap,
263274 alignment,
264275 spacingBuilder,
276+ enableFormat,
277+ formatMode,
265278 )
266279 }
267280 if (child.psi is SqlCustomElCommentExpr &&
@@ -273,6 +286,8 @@ class SqlBlockUtil(
273286 alignment,
274287 blockCommentSpacingBuilder,
275288 spacingBuilder,
289+ enableFormat,
290+ formatMode,
276291 )
277292 }
278293 return SqlElBlockCommentBlock (
@@ -281,6 +296,8 @@ class SqlBlockUtil(
281296 alignment,
282297 blockCommentSpacingBuilder,
283298 spacingBuilder,
299+ enableFormat,
300+ formatMode,
284301 )
285302 }
286303}
0 commit comments