@@ -236,38 +236,7 @@ void SpaceAnalyzer::ComplexAnalyze(FormatState &f, const LuaSyntaxTree &t) {
236236 SpaceLeft (leftBrace, t, 1 );
237237 }
238238 } else {
239- switch (f.GetStyle ().space_before_function_call_single_arg ) {
240- case FunctionSingleArgSpace::None: {
241- SpaceLeft (syntaxNode, t, 0 );
242- break ;
243- }
244- case FunctionSingleArgSpace::Always: {
245- SpaceLeft (syntaxNode, t, 1 );
246- break ;
247- }
248- case FunctionSingleArgSpace::OnlyString: {
249- auto firstToken = syntaxNode.GetFirstToken (t);
250- if (firstToken.GetTokenKind (t) == TK_STRING ||
251- firstToken.GetTokenKind (t) == TK_LONG_STRING) {
252- SpaceLeft (syntaxNode, t, 1 );
253- } else {
254- SpaceLeft (syntaxNode, t, 0 );
255- }
256- break ;
257- }
258- case FunctionSingleArgSpace::OnlyTable: {
259- auto firstChild = syntaxNode.GetFirstChild (t);
260- if (firstChild.GetSyntaxKind (t) == LuaSyntaxNodeKind::TableExpression) {
261- SpaceLeft (syntaxNode, t, 1 );
262- } else {
263- SpaceLeft (syntaxNode, t, 0 );
264- }
265- break ;
266- }
267- default : {
268- break ;
269- }
270- }
239+ FunctionCallSingleArgSpace (f, syntaxNode, t);
271240 }
272241 break ;
273242 }
@@ -443,23 +412,69 @@ void SpaceAnalyzer::SpaceIgnore(LuaSyntaxNode n) {
443412 _ignoreSpace.insert (n.GetIndex ());
444413}
445414
446- SpaceAnalyzer::OptionalInt SpaceAnalyzer::GetRightSpace (LuaSyntaxNode n) const {
415+ void SpaceAnalyzer::FunctionCallSingleArgSpace (FormatState &f, LuaSyntaxNode n, const LuaSyntaxTree &t) {
416+ auto firstToken = n.GetFirstToken (t);
417+ if (firstToken.GetTokenKind (t) == TK_STRING ||
418+ firstToken.GetTokenKind (t) == TK_LONG_STRING) {
419+ switch (f.GetStyle ().space_before_function_call_single_arg .string ) {
420+ case FunctionSingleArgSpace::None: {
421+ SpaceLeft (n, t, 0 );
422+ break ;
423+ }
424+ case FunctionSingleArgSpace::Always: {
425+ SpaceLeft (n, t, 1 );
426+ break ;
427+ }
428+ case FunctionSingleArgSpace::Keep: {
429+ SpaceIgnore (n);
430+ break ;
431+ }
432+ default : {
433+ break ;
434+ }
435+ }
436+ } else {
437+ switch (f.GetStyle ().space_before_function_call_single_arg .table ) {
438+ case FunctionSingleArgSpace::None: {
439+ SpaceLeft (n, t, 0 );
440+ break ;
441+ }
442+ case FunctionSingleArgSpace::Always: {
443+ SpaceLeft (n, t, 1 );
444+ break ;
445+ }
446+ case FunctionSingleArgSpace::Keep: {
447+ SpaceIgnore (n);
448+ break ;
449+ }
450+ default : {
451+ break ;
452+ }
453+ }
454+ }
455+ }
456+
457+ std::size_t SpaceAnalyzer::GetRightSpace (LuaSyntaxNode n, bool &hasValue) const {
447458 if (_ignoreSpace.count (n.GetIndex ())) {
448- return OptionalInt ();
459+ hasValue = false ;
460+ return 0 ;
449461 }
450462
451463 auto it = _rightSpaces.find (n.GetIndex ());
452464 if (it == _rightSpaces.end ()) {
453- return OptionalInt ();
465+ hasValue = false ;
466+ return 0 ;
454467 }
455- return OptionalInt (it->second .Value );
468+ hasValue = true ;
469+ return it->second .Value ;
456470}
457471
458472std::size_t
459473SpaceAnalyzer::ProcessSpace (LuaSyntaxNode left, LuaSyntaxNode right, const LuaSyntaxTree &t) {
460- auto rightSpaceOfLeftToken = GetRightSpace (left);
461- if (rightSpaceOfLeftToken.HasValue ) {
462- return rightSpaceOfLeftToken.Value ;
474+ bool hasValue = true ;
475+ auto rightSpaceOfLeftToken = GetRightSpace (left, hasValue);
476+ if (hasValue) {
477+ return rightSpaceOfLeftToken;
463478 }
464479 if (!right.IsNull (t)) {
465480 return t.GetStartOffset (right.GetIndex ()) - t.GetEndOffset (left.GetIndex ()) - 1 ;
0 commit comments