| 88 | } |
| 89 | |
| 90 | void AlignAnalyzer::Query(FormatState &f, LuaSyntaxNode syntaxNode, const LuaSyntaxTree &t, FormatResolve &resolve) { |
| 91 | if (_startNodeToGroupIndex.count(syntaxNode.GetIndex())) { |
| 92 | auto alignGroupIndex = _startNodeToGroupIndex[syntaxNode.GetIndex()]; |
| 93 | auto &alignGroup = _alignGroup[alignGroupIndex]; |
| 94 | if (!alignGroup.Resolve) { |
| 95 | ResolveAlignGroup(f, alignGroupIndex, alignGroup, t); |
| 96 | alignGroup.Resolve = true; |
| 97 | } |
| 98 | } |
| 99 | |
| 100 | auto it = _resolveGroupIndex.find(syntaxNode.GetIndex()); |
| 101 | if (it != _resolveGroupIndex.end()) { |
| 102 | auto alignGroupIndex = it->second; |
| 103 | auto &alignGroup = _alignGroup[alignGroupIndex]; |
| 104 | switch (alignGroup.Strategy) { |
| 105 | case AlignStrategy::Normal: |
| 106 | case AlignStrategy::AlignToEqWhenExtraSpace: |
| 107 | case AlignStrategy::AlignToEqAlways: { |
| 108 | resolve.SetRelativeIndentAlign(alignGroup.AlignPos); |
| 109 | break; |
| 110 | } |
| 111 | case AlignStrategy::AlignToFirst: { |
| 112 | resolve.SetIndent(alignGroup.AlignPos, IndentStrategy::Absolute); |
| 113 | break; |
| 114 | } |
| 115 | case AlignStrategy::AlignComment: { |
| 116 | resolve.SetAlign(alignGroup.AlignPos); |
| 117 | break; |
| 118 | } |
| 119 | default: { |
| 120 | break; |
| 121 | } |
| 122 | } |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | void AlignAnalyzer::PushAlignGroup(AlignStrategy strategy, std::vector<std::size_t> &data) { |
| 127 | auto pos = _alignGroup.size(); |