@@ -1951,18 +1951,8 @@ AST* AST_parseStmt(AST* ast, char* sStmt) {
19511951 return ast ;
19521952}
19531953
1954- static int32_t _getSpaceNum (char * sLine ) {
1955- uint32_t uSize = strGetSize (sLine );
1956- for (uint32_t i = 0 ; i < uSize ; i ++ ) {
1957- if (sLine [i ] != ' ' ) {
1958- return i ;
1959- }
1960- }
1961- return 0 ;
1962- }
1963-
19641954static int32_t Parser_getPyLineBlockDeepth (char * sLine ) {
1965- int32_t iSpaceNum = _getSpaceNum (sLine );
1955+ int32_t iSpaceNum = strGetIndent (sLine );
19661956 if (0 == iSpaceNum % 4 ) {
19671957 return iSpaceNum / 4 ;
19681958 }
@@ -2403,22 +2393,56 @@ static pika_bool _check_is_multi_assign(char* sArgList) {
24032393 return bRes ;
24042394}
24052395
2406- static Arg * arg_strAddSpaces (Arg * aStrIn , int num ) {
2407- Arg * aRet = aStrIn ;
2408- /* add space */
2409- for (int i = 0 ; i < num ; i ++ ) {
2410- aRet = arg_strAppend (aRet , " " );
2396+ Arg * arg_strAddIndent (Arg * aStrIn , int indent ) {
2397+ if (0 == indent ) {
2398+ return aStrIn ;
24112399 }
2400+ /* add space */
2401+ char * sSpaces = pikaMalloc (indent + 1 );
2402+ pika_platform_memset (sSpaces , ' ' , indent );
2403+ sSpaces [indent ] = '\0' ;
2404+ Arg * aRet = arg_newStr (sSpaces );
2405+ aRet = arg_strAppend (aRet , arg_getStr (aStrIn ));
2406+ pikaFree (sSpaces , indent + 1 );
2407+ arg_deinit (aStrIn );
24122408 return aRet ;
24132409}
24142410
2411+ Arg * arg_strAddIndentMulti (Arg * aStrInMuti , int indent ) {
2412+ if (0 == indent ) {
2413+ return aStrInMuti ;
2414+ }
2415+ char * sStrInMuti = arg_getStr (aStrInMuti );
2416+ char * sLine = NULL ;
2417+ int iLineNum = strGetLineNum (sStrInMuti );
2418+ Arg * aStrOut = arg_newStr ("" );
2419+ Args buffs = {};
2420+ for (int i = 0 ; i < iLineNum ; i ++ ) {
2421+ sLine = strsPopLine (& buffs , & sStrInMuti );
2422+ Arg * aLine = arg_newStr (sLine );
2423+ aLine = arg_strAddIndent (aLine , indent );
2424+ sLine = arg_getStr (aLine );
2425+ aStrOut = arg_strAppend (aStrOut , sLine );
2426+ if (i != iLineNum - 1 ) {
2427+ aStrOut = arg_strAppend (aStrOut , "\n" );
2428+ }
2429+ arg_deinit (aLine );
2430+ }
2431+ strsDeinit (& buffs );
2432+ arg_deinit (aStrInMuti );
2433+ return aStrOut ;
2434+ }
2435+
24152436static char * Suger_multiAssign (Args * out_buffs , char * sLine ) {
24162437#if PIKA_NANO_ENABLE
24172438 return sLine ;
24182439#endif
2440+ if (!strIsContain (sLine , '=' ) || !strIsContain (sLine , ',' )) {
2441+ return sLine ;
2442+ }
24192443 Args buffs = {0 };
24202444 char * sLineOut = sLine ;
2421- int iSpaceNum = _getSpaceNum (sLine );
2445+ int iIndent = strGetIndent (sLine );
24222446 pika_bool bAssign = pika_false ;
24232447 Arg * aStmt = arg_newStr ("" );
24242448 Arg * aOutList = arg_newStr ("" );
@@ -2457,9 +2481,6 @@ static char* Suger_multiAssign(Args* out_buffs, char* sLine) {
24572481 arg_getStr (aStmt ));
24582482
24592483 /* add space */
2460- for (int i = 0 ; i < iSpaceNum ; i ++ ) {
2461- aLineOut = arg_strAppend (aLineOut , " " );
2462- }
24632484 aLineOut = arg_strAppend (aLineOut , sLineItem );
24642485
24652486 sOutList = arg_getStr (aOutList );
@@ -2471,16 +2492,12 @@ static char* Suger_multiAssign(Args* out_buffs, char* sLine) {
24712492 char * sLineItem = strsFormat (& buffs , PIKA_LINE_BUFF_SIZE ,
24722493 "%s = $tmp[%d]\n" , item , iOutNum );
24732494 /* add space */
2474- aLineOut = arg_strAddSpaces (aLineOut , iSpaceNum );
24752495 aLineOut = arg_strAppend (aLineOut , sLineItem );
24762496 iOutNum ++ ;
24772497 }
24782498 /* add space */
2479- for (int i = 0 ; i < iSpaceNum ; i ++ ) {
2480- aLineOut = arg_strAppend (aLineOut , " " );
2481- }
24822499 aLineOut = arg_strAppend (aLineOut , "del $tmp" );
2483-
2500+ aLineOut = arg_strAddIndentMulti ( aLineOut , iIndent );
24842501 sLineOut = strsCopy (out_buffs , arg_getStr (aLineOut ));
24852502 goto __exit ;
24862503__exit :
0 commit comments