Skip to content

Commit 46d97bf

Browse files
committed
Add spacing rules for directive block comments and refactor related methods
1 parent e4f0c80 commit 46d97bf

File tree

8 files changed

+224
-178
lines changed

8 files changed

+224
-178
lines changed

src/main/kotlin/org/domaframework/doma/intellij/formatter/block/SqlBlock.kt

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,161 @@ open class SqlBlock(
246246
child2: Block,
247247
): Spacing? = null
248248

249+
/**
250+
* Creates a spacing builder specifically for directive block comments.
251+
*/
252+
protected fun createBlockDirectiveCommentSpacingBuilder(): SqlCustomSpacingBuilder =
253+
SqlCustomSpacingBuilder()
254+
.withSpacing(
255+
SqlTypes.BLOCK_COMMENT_START,
256+
SqlTypes.EL_ID_EXPR,
257+
Spacing.createSpacing(1, 1, 0, true, 0),
258+
).withSpacing(
259+
SqlTypes.BLOCK_COMMENT_START,
260+
SqlTypes.EL_PRIMARY_EXPR,
261+
Spacing.createSpacing(1, 1, 0, true, 0),
262+
).withSpacing(
263+
SqlTypes.BLOCK_COMMENT_START,
264+
SqlTypes.EL_STRING,
265+
Spacing.createSpacing(1, 1, 0, true, 0),
266+
).withSpacing(
267+
SqlTypes.BLOCK_COMMENT_START,
268+
SqlTypes.EL_NUMBER,
269+
Spacing.createSpacing(1, 1, 0, true, 0),
270+
).withSpacing(
271+
SqlTypes.BLOCK_COMMENT_START,
272+
SqlTypes.BOOLEAN,
273+
Spacing.createSpacing(1, 1, 0, true, 0),
274+
).withSpacing(
275+
SqlTypes.BLOCK_COMMENT_START,
276+
SqlTypes.EL_NULL,
277+
Spacing.createSpacing(1, 1, 0, true, 0),
278+
).withSpacing(
279+
SqlTypes.BLOCK_COMMENT_START,
280+
SqlTypes.EL_FIELD_ACCESS_EXPR,
281+
Spacing.createSpacing(1, 1, 0, true, 0),
282+
).withSpacing(
283+
SqlTypes.BLOCK_COMMENT_START,
284+
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
285+
Spacing.createSpacing(1, 1, 0, true, 0),
286+
).withSpacing(
287+
SqlTypes.BLOCK_COMMENT_START,
288+
SqlTypes.HASH,
289+
Spacing.createSpacing(0, 0, 0, true, 0),
290+
).withSpacing(
291+
SqlTypes.HASH,
292+
SqlTypes.EL_ID_EXPR,
293+
Spacing.createSpacing(1, 1, 0, true, 0),
294+
).withSpacing(
295+
SqlTypes.HASH,
296+
SqlTypes.EL_PRIMARY_EXPR,
297+
Spacing.createSpacing(1, 1, 0, true, 0),
298+
).withSpacing(
299+
SqlTypes.HASH,
300+
SqlTypes.EL_STRING,
301+
Spacing.createSpacing(1, 1, 0, true, 0),
302+
).withSpacing(
303+
SqlTypes.HASH,
304+
SqlTypes.EL_NUMBER,
305+
Spacing.createSpacing(1, 1, 0, true, 0),
306+
).withSpacing(
307+
SqlTypes.HASH,
308+
SqlTypes.BOOLEAN,
309+
Spacing.createSpacing(1, 1, 0, true, 0),
310+
).withSpacing(
311+
SqlTypes.HASH,
312+
SqlTypes.EL_NULL,
313+
Spacing.createSpacing(1, 1, 0, true, 0),
314+
).withSpacing(
315+
SqlTypes.HASH,
316+
SqlTypes.EL_FIELD_ACCESS_EXPR,
317+
Spacing.createSpacing(1, 1, 0, true, 0),
318+
).withSpacing(
319+
SqlTypes.HASH,
320+
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
321+
Spacing.createSpacing(1, 1, 0, true, 0),
322+
).withSpacing(
323+
SqlTypes.BLOCK_COMMENT_START,
324+
SqlTypes.CARET,
325+
Spacing.createSpacing(0, 0, 0, true, 0),
326+
).withSpacing(
327+
SqlTypes.CARET,
328+
SqlTypes.EL_ID_EXPR,
329+
Spacing.createSpacing(1, 1, 0, true, 0),
330+
).withSpacing(
331+
SqlTypes.CARET,
332+
SqlTypes.EL_PRIMARY_EXPR,
333+
Spacing.createSpacing(1, 1, 0, true, 0),
334+
).withSpacing(
335+
SqlTypes.CARET,
336+
SqlTypes.EL_STRING,
337+
Spacing.createSpacing(1, 1, 0, true, 0),
338+
).withSpacing(
339+
SqlTypes.CARET,
340+
SqlTypes.EL_NUMBER,
341+
Spacing.createSpacing(1, 1, 0, true, 0),
342+
).withSpacing(
343+
SqlTypes.CARET,
344+
SqlTypes.BOOLEAN,
345+
Spacing.createSpacing(1, 1, 0, true, 0),
346+
).withSpacing(
347+
SqlTypes.CARET,
348+
SqlTypes.EL_NULL,
349+
Spacing.createSpacing(1, 1, 0, true, 0),
350+
).withSpacing(
351+
SqlTypes.CARET,
352+
SqlTypes.EL_FIELD_ACCESS_EXPR,
353+
Spacing.createSpacing(1, 1, 0, true, 0),
354+
).withSpacing(
355+
SqlTypes.CARET,
356+
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
357+
Spacing.createSpacing(1, 1, 0, true, 0),
358+
).withSpacing(
359+
SqlTypes.BLOCK_COMMENT_CONTENT,
360+
SqlTypes.BLOCK_COMMENT_END,
361+
Spacing.createSpacing(0, 0, 0, true, 0),
362+
).withSpacing(
363+
SqlTypes.EL_FIELD_ACCESS_EXPR,
364+
SqlTypes.OTHER,
365+
Spacing.createSpacing(1, 1, 0, false, 0),
366+
).withSpacing(
367+
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
368+
SqlTypes.OTHER,
369+
Spacing.createSpacing(1, 1, 0, false, 0),
370+
).withSpacing(
371+
SqlTypes.EL_ID_EXPR,
372+
SqlTypes.BLOCK_COMMENT_END,
373+
Spacing.createSpacing(1, 1, 0, true, 0),
374+
).withSpacing(
375+
SqlTypes.EL_PRIMARY_EXPR,
376+
SqlTypes.BLOCK_COMMENT_END,
377+
Spacing.createSpacing(1, 1, 0, true, 0),
378+
).withSpacing(
379+
SqlTypes.STRING,
380+
SqlTypes.BLOCK_COMMENT_END,
381+
Spacing.createSpacing(1, 1, 0, true, 0),
382+
).withSpacing(
383+
SqlTypes.EL_NUMBER,
384+
SqlTypes.BLOCK_COMMENT_END,
385+
Spacing.createSpacing(1, 1, 0, true, 0),
386+
).withSpacing(
387+
SqlTypes.EL_NULL,
388+
SqlTypes.BLOCK_COMMENT_END,
389+
Spacing.createSpacing(1, 1, 0, true, 0),
390+
).withSpacing(
391+
SqlTypes.BOOLEAN,
392+
SqlTypes.BLOCK_COMMENT_END,
393+
Spacing.createSpacing(1, 1, 0, true, 0),
394+
).withSpacing(
395+
SqlTypes.EL_FIELD_ACCESS_EXPR,
396+
SqlTypes.BLOCK_COMMENT_END,
397+
Spacing.createSpacing(1, 1, 0, true, 0),
398+
).withSpacing(
399+
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
400+
SqlTypes.BLOCK_COMMENT_END,
401+
Spacing.createSpacing(1, 1, 0, true, 0),
402+
)
403+
249404
/**
250405
* Returns the child indentation for the block.
251406
*

src/main/kotlin/org/domaframework/doma/intellij/formatter/block/SqlFileBlock.kt

Lines changed: 0 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -426,161 +426,6 @@ open class SqlFileBlock(
426426
}
427427
}
428428

429-
/**
430-
* Creates a spacing builder specifically for directive block comments.
431-
*/
432-
protected fun createBlockDirectiveCommentSpacingBuilder(): SqlCustomSpacingBuilder =
433-
SqlCustomSpacingBuilder()
434-
.withSpacing(
435-
SqlTypes.BLOCK_COMMENT_START,
436-
SqlTypes.EL_ID_EXPR,
437-
Spacing.createSpacing(1, 1, 0, true, 0),
438-
).withSpacing(
439-
SqlTypes.BLOCK_COMMENT_START,
440-
SqlTypes.EL_PRIMARY_EXPR,
441-
Spacing.createSpacing(1, 1, 0, true, 0),
442-
).withSpacing(
443-
SqlTypes.BLOCK_COMMENT_START,
444-
SqlTypes.EL_STRING,
445-
Spacing.createSpacing(1, 1, 0, true, 0),
446-
).withSpacing(
447-
SqlTypes.BLOCK_COMMENT_START,
448-
SqlTypes.EL_NUMBER,
449-
Spacing.createSpacing(1, 1, 0, true, 0),
450-
).withSpacing(
451-
SqlTypes.BLOCK_COMMENT_START,
452-
SqlTypes.BOOLEAN,
453-
Spacing.createSpacing(1, 1, 0, true, 0),
454-
).withSpacing(
455-
SqlTypes.BLOCK_COMMENT_START,
456-
SqlTypes.EL_NULL,
457-
Spacing.createSpacing(1, 1, 0, true, 0),
458-
).withSpacing(
459-
SqlTypes.BLOCK_COMMENT_START,
460-
SqlTypes.EL_FIELD_ACCESS_EXPR,
461-
Spacing.createSpacing(1, 1, 0, true, 0),
462-
).withSpacing(
463-
SqlTypes.BLOCK_COMMENT_START,
464-
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
465-
Spacing.createSpacing(1, 1, 0, true, 0),
466-
).withSpacing(
467-
SqlTypes.BLOCK_COMMENT_START,
468-
SqlTypes.HASH,
469-
Spacing.createSpacing(0, 0, 0, true, 0),
470-
).withSpacing(
471-
SqlTypes.HASH,
472-
SqlTypes.EL_ID_EXPR,
473-
Spacing.createSpacing(1, 1, 0, true, 0),
474-
).withSpacing(
475-
SqlTypes.HASH,
476-
SqlTypes.EL_PRIMARY_EXPR,
477-
Spacing.createSpacing(1, 1, 0, true, 0),
478-
).withSpacing(
479-
SqlTypes.HASH,
480-
SqlTypes.EL_STRING,
481-
Spacing.createSpacing(1, 1, 0, true, 0),
482-
).withSpacing(
483-
SqlTypes.HASH,
484-
SqlTypes.EL_NUMBER,
485-
Spacing.createSpacing(1, 1, 0, true, 0),
486-
).withSpacing(
487-
SqlTypes.HASH,
488-
SqlTypes.BOOLEAN,
489-
Spacing.createSpacing(1, 1, 0, true, 0),
490-
).withSpacing(
491-
SqlTypes.HASH,
492-
SqlTypes.EL_NULL,
493-
Spacing.createSpacing(1, 1, 0, true, 0),
494-
).withSpacing(
495-
SqlTypes.HASH,
496-
SqlTypes.EL_FIELD_ACCESS_EXPR,
497-
Spacing.createSpacing(1, 1, 0, true, 0),
498-
).withSpacing(
499-
SqlTypes.HASH,
500-
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
501-
Spacing.createSpacing(1, 1, 0, true, 0),
502-
).withSpacing(
503-
SqlTypes.BLOCK_COMMENT_START,
504-
SqlTypes.CARET,
505-
Spacing.createSpacing(0, 0, 0, true, 0),
506-
).withSpacing(
507-
SqlTypes.CARET,
508-
SqlTypes.EL_ID_EXPR,
509-
Spacing.createSpacing(1, 1, 0, true, 0),
510-
).withSpacing(
511-
SqlTypes.CARET,
512-
SqlTypes.EL_PRIMARY_EXPR,
513-
Spacing.createSpacing(1, 1, 0, true, 0),
514-
).withSpacing(
515-
SqlTypes.CARET,
516-
SqlTypes.EL_STRING,
517-
Spacing.createSpacing(1, 1, 0, true, 0),
518-
).withSpacing(
519-
SqlTypes.CARET,
520-
SqlTypes.EL_NUMBER,
521-
Spacing.createSpacing(1, 1, 0, true, 0),
522-
).withSpacing(
523-
SqlTypes.CARET,
524-
SqlTypes.BOOLEAN,
525-
Spacing.createSpacing(1, 1, 0, true, 0),
526-
).withSpacing(
527-
SqlTypes.CARET,
528-
SqlTypes.EL_NULL,
529-
Spacing.createSpacing(1, 1, 0, true, 0),
530-
).withSpacing(
531-
SqlTypes.CARET,
532-
SqlTypes.EL_FIELD_ACCESS_EXPR,
533-
Spacing.createSpacing(1, 1, 0, true, 0),
534-
).withSpacing(
535-
SqlTypes.CARET,
536-
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
537-
Spacing.createSpacing(1, 1, 0, true, 0),
538-
).withSpacing(
539-
SqlTypes.BLOCK_COMMENT_CONTENT,
540-
SqlTypes.BLOCK_COMMENT_END,
541-
Spacing.createSpacing(0, 0, 0, true, 0),
542-
).withSpacing(
543-
SqlTypes.EL_FIELD_ACCESS_EXPR,
544-
SqlTypes.OTHER,
545-
Spacing.createSpacing(1, 1, 0, false, 0),
546-
).withSpacing(
547-
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
548-
SqlTypes.OTHER,
549-
Spacing.createSpacing(1, 1, 0, false, 0),
550-
).withSpacing(
551-
SqlTypes.EL_ID_EXPR,
552-
SqlTypes.BLOCK_COMMENT_END,
553-
Spacing.createSpacing(1, 1, 0, true, 0),
554-
).withSpacing(
555-
SqlTypes.EL_PRIMARY_EXPR,
556-
SqlTypes.BLOCK_COMMENT_END,
557-
Spacing.createSpacing(1, 1, 0, true, 0),
558-
).withSpacing(
559-
SqlTypes.STRING,
560-
SqlTypes.BLOCK_COMMENT_END,
561-
Spacing.createSpacing(1, 1, 0, true, 0),
562-
).withSpacing(
563-
SqlTypes.EL_NUMBER,
564-
SqlTypes.BLOCK_COMMENT_END,
565-
Spacing.createSpacing(1, 1, 0, true, 0),
566-
).withSpacing(
567-
SqlTypes.EL_NULL,
568-
SqlTypes.BLOCK_COMMENT_END,
569-
Spacing.createSpacing(1, 1, 0, true, 0),
570-
).withSpacing(
571-
SqlTypes.BOOLEAN,
572-
SqlTypes.BLOCK_COMMENT_END,
573-
Spacing.createSpacing(1, 1, 0, true, 0),
574-
).withSpacing(
575-
SqlTypes.EL_FIELD_ACCESS_EXPR,
576-
SqlTypes.BLOCK_COMMENT_END,
577-
Spacing.createSpacing(1, 1, 0, true, 0),
578-
).withSpacing(
579-
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR,
580-
SqlTypes.BLOCK_COMMENT_END,
581-
Spacing.createSpacing(1, 1, 0, true, 0),
582-
)
583-
584429
/**
585430
* Returns the spacing between two child blocks.
586431
*/

src/main/kotlin/org/domaframework/doma/intellij/formatter/block/comment/SqlElBlockCommentBlock.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,16 @@ open class SqlElBlockCommentBlock(
102102
->
103103
SqlOperationBlock(child, context)
104104

105+
SqlTypes.EL_EQ_EXPR, SqlTypes.EL_NE_EXPR, SqlTypes.EL_GE_EXPR, SqlTypes.EL_GT_EXPR, SqlTypes.EL_LE_EXPR, SqlTypes.EL_LT_EXPR,
106+
SqlTypes.EL_AND_EXPR, SqlTypes.EL_OR_EXPR, SqlTypes.EL_NOT_EXPR,
107+
SqlTypes.EL_ADD_EXPR, SqlTypes.EL_SUBTRACT_EXPR, SqlTypes.EL_MULTIPLY_EXPR, SqlTypes.EL_DIVIDE_EXPR, SqlTypes.EL_MOD_EXPR,
108+
->
109+
SqlElBlockCommentBlock(
110+
child,
111+
context,
112+
createBlockDirectiveCommentSpacingBuilder(),
113+
)
114+
105115
SqlTypes.EL_FIELD_ACCESS_EXPR ->
106116
SqlElFieldAccessBlock(
107117
child,

src/main/kotlin/org/domaframework/doma/intellij/formatter/block/comment/SqlElConditionLoopCommentBlock.kt

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,8 @@ import org.domaframework.doma.intellij.common.util.StringUtil
2626
import org.domaframework.doma.intellij.common.util.TypeUtil
2727
import org.domaframework.doma.intellij.extension.expr.isConditionOrLoopDirective
2828
import org.domaframework.doma.intellij.formatter.block.SqlBlock
29-
import org.domaframework.doma.intellij.formatter.block.SqlOperationBlock
3029
import org.domaframework.doma.intellij.formatter.block.SqlRightPatternBlock
3130
import org.domaframework.doma.intellij.formatter.block.SqlUnknownBlock
32-
import org.domaframework.doma.intellij.formatter.block.expr.SqlElFieldAccessBlock
33-
import org.domaframework.doma.intellij.formatter.block.expr.SqlElFunctionCallBlock
34-
import org.domaframework.doma.intellij.formatter.block.expr.SqlElStaticFieldAccessBlock
3531
import org.domaframework.doma.intellij.formatter.block.group.column.SqlColumnRawGroupBlock
3632
import org.domaframework.doma.intellij.formatter.block.group.keyword.SqlKeywordGroupBlock
3733
import org.domaframework.doma.intellij.formatter.block.group.keyword.create.SqlCreateKeywordGroupBlock
@@ -159,27 +155,11 @@ class SqlElConditionLoopCommentBlock(
159155

160156
override fun getBlock(child: ASTNode): SqlBlock =
161157
when (child.elementType) {
162-
SqlTypes.GE, SqlTypes.LE, SqlTypes.GT, SqlTypes.LT, SqlTypes.EL_EQ, SqlTypes.EL_NE,
163-
SqlTypes.PLUS, SqlTypes.MINUS, SqlTypes.ASTERISK, SqlTypes.SLASH, SqlTypes.AT_SIGN,
164-
->
165-
SqlOperationBlock(child, context)
166-
167-
SqlTypes.EL_FIELD_ACCESS_EXPR ->
168-
SqlElFieldAccessBlock(
169-
child,
170-
context,
171-
)
172-
173-
SqlTypes.EL_STATIC_FIELD_ACCESS_EXPR ->
174-
SqlElStaticFieldAccessBlock(
175-
child,
176-
context,
177-
)
178-
179-
SqlTypes.EL_FUNCTION_CALL_EXPR ->
180-
SqlElFunctionCallBlock(
158+
SqlTypes.EL_IF_DIRECTIVE, SqlTypes.EL_ELSEIF_DIRECTIVE, SqlTypes.EL_FOR_DIRECTIVE ->
159+
SqlElBlockCommentBlock(
181160
child,
182161
context,
162+
createBlockDirectiveCommentSpacingBuilder(),
183163
)
184164

185165
else -> SqlUnknownBlock(child, context)

0 commit comments

Comments
 (0)