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

Method DoResolve

CodeFormatCore/src/Format/FormatBuilder.cpp:68–290  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

66}
67
68void FormatBuilder::DoResolve(LuaSyntaxNode &syntaxNode, const LuaSyntaxTree &t, FormatResolve &resolve) {
69 if (syntaxNode.IsToken(t)) {
70 if (_state.IsNewLine(syntaxNode, t)) {
71 WriteIndent();
72 auto indentAnalyzer = _state.GetAnalyzer<IndentationAnalyzer>();
73 if (indentAnalyzer) {
74 indentAnalyzer->MarkIndent(syntaxNode, t);
75 }
76 }
77
78 switch (resolve.GetPrevSpaceStrategy()) {
79 case PrevSpaceStrategy::AlignPos: {
80 auto pos = resolve.GetAlign();
81 if (pos > _state.CurrentWidth()) {
82 auto space = pos - _state.CurrentWidth();
83 WriteSpace(space);
84 }
85 break;
86 }
87 case PrevSpaceStrategy::AlignRelativeIndent: {
88 auto relativePos = resolve.GetAlign();
89 auto indentState = _state.GetCurrentIndent();
90 auto pos = relativePos + indentState.SpaceSize + indentState.TabSize * _state.GetStyle().tab_width;
91 if (pos > _state.CurrentWidth()) {
92 auto space = pos - _state.CurrentWidth();
93 WriteSpace(space);
94 }
95 break;
96 }
97 default: {
98 break;
99 }
100 }
101
102 switch (resolve.GetPrevTokenStrategy()) {
103 case PrevTokenStrategy::LeftParentheses: {
104 WriteChar('(');
105 break;
106 }
107 default: {
108 break;
109 }
110 }
111
112 switch (resolve.GetTokenStrategy()) {
113 case TokenStrategy::Origin: {
114 WriteSyntaxNode(syntaxNode, t);
115 break;
116 }
117 case TokenStrategy::StmtEndSemicolon:
118 case TokenStrategy::Remove: {
119 break;
120 }
121 case TokenStrategy::StringSingleQuote: {
122 if (syntaxNode.GetTokenKind(t) == TK_STRING) {
123 auto text = syntaxNode.GetText(t);
124 auto del = '\'';
125 if (text.size() >= 2 && text.front() == '\"' && !string_util::ExistDel(del, text)) {

Callers

nothing calls this directly

Calls 15

IsNewLineMethod · 0.80
MarkIndentMethod · 0.80
GetPrevSpaceStrategyMethod · 0.80
GetAlignMethod · 0.80
GetCurrentIndentMethod · 0.80
GetStyleMethod · 0.80
GetPrevTokenStrategyMethod · 0.80
GetTokenStrategyMethod · 0.80
GetTextMethod · 0.80
frontMethod · 0.80
GetOriginRangeMethod · 0.80
GetTextRangeMethod · 0.80

Tested by

no test coverage detected