MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / Analyze

Method Analyze

CodeFormatCore/src/Format/Analyzer/IndentationAnalyzer.cpp:14–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

12}
13
14void IndentationAnalyzer::Analyze(FormatState &f, const LuaSyntaxTree &t) {
15 for (auto syntaxNode: t.GetSyntaxNodes()) {
16 if (syntaxNode.IsNode(t)) {
17 switch (syntaxNode.GetSyntaxKind(t)) {
18 case LuaSyntaxNodeKind::Block: {
19 AddIndenter(syntaxNode, t);
20 if (f.GetStyle().never_indent_comment_on_if_branch) {
21 NeverIndentCommentOnIfBranch(f, syntaxNode, t);
22 }
23 if (f.GetStyle().allow_non_indented_comments) {
24 AllowNonIndentedComment(f, syntaxNode, t);
25 }
26 break;
27 }
28 case LuaSyntaxNodeKind::ParamList: {
29 AddIndenter(syntaxNode, t, IndentData(IndentType::Standard, f.GetStyle().continuation_indent.before_block));
30 break;
31 }
32 case LuaSyntaxNodeKind::CallExpression: {
33 if (syntaxNode.GetChildToken('(', t).IsToken(t)) {
34 auto exprList = syntaxNode.GetChildSyntaxNode(NodeKind::ExpressionList, t);
35 if (exprList.IsNode(t)) {
36 AnalyzeCallExprList(f, exprList, t);
37 }
38 }
39 break;
40 }
41 case LuaSyntaxNodeKind::ParExpression: {
42 auto expr = syntaxNode.GetChildSyntaxNode(MultiKind::Expression, t);
43 if (expr.IsNode(t) && IsExprShouldIndent(expr, t)) {
44 AddIndenter(expr, t);
45 } else {
46 AddIndenter(expr, t, IndentData(IndentType::WhenNewLine));
47 }
48 }
49 case LuaSyntaxNodeKind::LocalStatement:
50 case LuaSyntaxNodeKind::AssignStatement:
51 case LuaSyntaxNodeKind::ReturnStatement: {
52 auto exprList = syntaxNode.GetChildSyntaxNode(NodeKind::ExpressionList, t);
53 if (exprList.IsNode(t)) {
54 AnalyzeExprList(f, exprList, t);
55 }
56 break;
57 }
58 case LuaSyntaxNodeKind::WhileStatement:
59 case LuaSyntaxNodeKind::RepeatStatement: {
60 auto expr = syntaxNode.GetChildSyntaxNode(MultiKind::Expression, t);
61 if (expr.IsNode(t)) {
62 AddIndenter(expr, t);
63 }
64 break;
65 }
66 case LuaSyntaxNodeKind::IfStatement: {
67 if (!f.GetStyle().never_indent_before_if_condition) {
68 auto exprs = syntaxNode.GetChildSyntaxNodes(MultiKind::Expression, t);
69 for (auto expr: exprs) {
70 AddIndenter(expr, t, IndentData(IndentType::Standard, f.GetStyle().continuation_indent.before_block));
71 }

Callers

nothing calls this directly

Calls 11

IndentDataClass · 0.85
GetSyntaxKindMethod · 0.80
GetStyleMethod · 0.80
GetChildTokenMethod · 0.80
GetChildSyntaxNodeMethod · 0.80
GetChildSyntaxNodesMethod · 0.80
GetChildrenMethod · 0.80
IsNodeMethod · 0.45
IsTokenMethod · 0.45
GetPrevSiblingMethod · 0.45

Tested by

no test coverage detected