Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
J
jetbrains-plugin
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
JastAdd
jetbrains-plugin
Merge requests
!2
Feature/autoformat
Code
Review changes
Check out branch
Download
Patches
Plain diff
Merged
Feature/autoformat
feature/autoformat
into
develop
Overview
1
Commits
7
Pipelines
8
Changes
3
Merged
Johannes Mey
requested to merge
feature/autoformat
into
develop
3 years ago
Overview
1
Commits
7
Pipelines
8
Changes
3
Expand
resolves
#2 (closed)
Edited
3 years ago
by
Johannes Mey
0
0
Merge request reports
Viewing commit
32d35778
Prev
Next
Show latest version
3 files
+
143
−
0
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
Files
3
Search (e.g. *.vue) (Ctrl+P)
32d35778
initial version of auto formatter
· 32d35778
Johannes Mey
authored
3 years ago
src/main/java/org/jastadd/tooling/aspect/AspectBlock.java
0 → 100644
+
112
−
0
Options
package
org.jastadd.tooling.aspect
;
import
com.intellij.formatting.*
;
import
com.intellij.lang.ASTNode
;
import
com.intellij.openapi.util.TextRange
;
import
com.intellij.psi.TokenType
;
import
com.intellij.psi.codeStyle.CodeStyleSettings
;
import
com.intellij.psi.formatter.common.AbstractBlock
;
import
com.intellij.psi.formatter.common.InjectedLanguageBlockBuilder
;
import
com.intellij.psi.formatter.java.LeafBlock
;
import
org.jastadd.tooling.aspect.psi.JastAddAspectAspectBody
;
import
org.jastadd.tooling.aspect.psi.JastAddAspectAspectBodyDeclaration
;
import
org.jastadd.tooling.aspect.psi.JastAddAspectBlock
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
AspectBlock
extends
AbstractBlock
{
private
final
SpacingBuilder
spacingBuilder
;
private
final
InjectedLanguageBlockBuilder
myInjectedBlockBuilder
;
protected
AspectBlock
(
@NotNull
ASTNode
node
,
@Nullable
Wrap
wrap
,
@Nullable
Alignment
alignment
,
SpacingBuilder
spacingBuilder
)
{
super
(
node
,
wrap
,
alignment
);
this
.
spacingBuilder
=
spacingBuilder
;
myInjectedBlockBuilder
=
new
JavaBlockInjectedBlockBuilder
();
}
@Override
protected
List
<
Block
>
buildChildren
()
{
List
<
Block
>
blocks
=
new
ArrayList
<>();
if
(
myNode
.
getPsi
()
instanceof
JastAddAspectBlock
)
{
myInjectedBlockBuilder
.
addInjectedBlocks
(
blocks
,
myNode
,
Wrap
.
createWrap
(
WrapType
.
NONE
,
false
),
null
,
Indent
.
getIndent
(
Indent
.
Type
.
NONE
,
false
,
true
));
}
else
{
ASTNode
child
=
myNode
.
getFirstChildNode
();
while
(
child
!=
null
)
{
if
(
child
.
getElementType
()
!=
TokenType
.
WHITE_SPACE
)
{
Block
block
=
new
AspectBlock
(
child
,
Wrap
.
createWrap
(
WrapType
.
NORMAL
,
false
),
null
,
spacingBuilder
);
blocks
.
add
(
block
);
}
child
=
child
.
getTreeNext
();
}
}
return
blocks
;
}
@Override
public
Indent
getIndent
()
{
if
(
myNode
.
getPsi
()
instanceof
JastAddAspectAspectBodyDeclaration
)
{
return
Indent
.
getNormalIndent
();
}
else
if
(
myNode
.
getPsi
()
instanceof
JastAddAspectAspectBody
)
{
return
Indent
.
getAbsoluteNoneIndent
();
}
else
{
return
Indent
.
getNoneIndent
();
}
}
@Nullable
@Override
public
Spacing
getSpacing
(
@Nullable
Block
child1
,
@NotNull
Block
child2
)
{
return
spacingBuilder
.
getSpacing
(
this
,
child1
,
child2
);
}
@Override
public
boolean
isLeaf
()
{
return
myNode
.
getFirstChildNode
()
==
null
;
}
private
static
class
AroundBlockBlock
extends
LeafBlock
{
private
final
TextRange
myRange
;
AroundBlockBlock
(
ASTNode
node
,
Wrap
wrap
,
Alignment
alignment
,
Indent
indent
,
TextRange
range
)
{
super
(
node
,
wrap
,
alignment
,
indent
);
myRange
=
range
;
}
@NotNull
@Override
public
TextRange
getTextRange
()
{
return
myRange
;
}
}
private
static
class
JavaBlockInjectedBlockBuilder
extends
InjectedLanguageBlockBuilder
{
@Override
public
CodeStyleSettings
getSettings
()
{
return
CodeStyleSettings
.
getDefaults
();
}
@Override
public
boolean
canProcessFragment
(
String
text
,
ASTNode
injectionHost
)
{
return
true
;
}
@Override
public
Block
createBlockBeforeInjection
(
ASTNode
node
,
Wrap
wrap
,
Alignment
alignment
,
Indent
indent
,
TextRange
range
)
{
return
new
AroundBlockBlock
(
node
,
wrap
,
alignment
,
indent
,
range
);
}
@Override
public
Block
createBlockAfterInjection
(
ASTNode
node
,
Wrap
wrap
,
Alignment
alignment
,
Indent
indent
,
TextRange
range
)
{
return
new
AroundBlockBlock
(
node
,
wrap
,
alignment
,
Indent
.
getNoneIndent
(),
range
);
}
}
}
Loading