@@ -1304,7 +1304,7 @@ namespace Sass {
13041304 if (l->empty ()) error (" argument `$list` of `" + std::string (sig) + " ` must not be empty" , pstate);
13051305 double index = std::floor (n->value () < 0 ? l->length () + n->value () : n->value () - 1 );
13061306 if (index < 0 || index > l->length () - 1 ) error (" index out of bounds for `" + std::string (sig) + " `" , pstate);
1307- List_Ptr result = SASS_MEMORY_NEW (List, pstate, l->length (), l->separator ());
1307+ List_Ptr result = SASS_MEMORY_NEW (List, pstate, l->length (), l->separator (), false , l-> delimiter () );
13081308 for (size_t i = 0 , L = l->length (); i < L; ++i) {
13091309 result->append (((i == index) ? v : (*l)[i]));
13101310 }
@@ -1330,7 +1330,7 @@ namespace Sass {
13301330 return SASS_MEMORY_NEW (Null, pstate);
13311331 }
13321332
1333- Signature join_sig = " join($list1, $list2, $separator: auto)" ;
1333+ Signature join_sig = " join($list1, $list2, $separator: auto, $bracketed: auto )" ;
13341334 BUILT_IN (join)
13351335 {
13361336 Map_Obj m1 = SASS_MEMORY_CAST (Map, env[" $list1" ]);
@@ -1339,10 +1339,13 @@ namespace Sass {
13391339 List_Obj l2 = SASS_MEMORY_CAST (List, env[" $list2" ]);
13401340 String_Constant_Obj sep = ARG (" $separator" , String_Constant);
13411341 enum Sass_Separator sep_val = (l1 ? l1->separator () : SASS_SPACE);
1342+ Value* bracketed = ARG (" $bracketed" , Value);
1343+ enum Sass_List_Delimiter delimiter = (l1 ? l1->delimiter () : SASS_NO_DELIMITER);
13421344 if (!l1) {
13431345 l1 = SASS_MEMORY_NEW (List, pstate, 1 );
13441346 l1->append (ARG (" $list1" , Expression));
13451347 sep_val = (l2 ? l2->separator () : SASS_SPACE);
1348+ delimiter = (l2 ? l2->delimiter () : SASS_NO_DELIMITER);
13461349 }
13471350 if (!l2) {
13481351 l2 = SASS_MEMORY_NEW (List, pstate, 1 );
@@ -1360,7 +1363,12 @@ namespace Sass {
13601363 if (sep_str == " space" ) sep_val = SASS_SPACE;
13611364 else if (sep_str == " comma" ) sep_val = SASS_COMMA;
13621365 else if (sep_str != " auto" ) error (" argument `$separator` of `" + std::string (sig) + " ` must be `space`, `comma`, or `auto`" , pstate);
1363- List_Obj result = SASS_MEMORY_NEW (List, pstate, len, sep_val);
1366+ String_Constant_Obj bracketed_as_str = SASS_MEMORY_CAST_PTR (String_Constant, bracketed);
1367+ bool bracketed_is_auto = bracketed_as_str && unquote (bracketed_as_str->value ()) == " auto" ;
1368+ if (!bracketed_is_auto) {
1369+ delimiter = bracketed->is_false () ? SASS_NO_DELIMITER : SASS_BRACKETS;
1370+ }
1371+ List_Obj result = SASS_MEMORY_NEW (List, pstate, len, sep_val, false , delimiter);
13641372 result->concat (&l1);
13651373 result->concat (&l2);
13661374 return result.detach ();
@@ -1987,5 +1995,12 @@ namespace Sass {
19871995 return SASS_MEMORY_NEW (String_Quoted, pstate, ss.str ());
19881996 }
19891997
1998+ Signature is_bracketed_sig = " is-bracketed($list)" ;
1999+ BUILT_IN (is_bracketed)
2000+ {
2001+ Value_Obj value = ARG (" $list" , Value);
2002+ List_Obj list = SASS_MEMORY_CAST (List, value);
2003+ return SASS_MEMORY_NEW (Boolean, pstate, list && list->is_bracketed ());
2004+ }
19902005 }
19912006}
0 commit comments