Позволяет конструировать строки, используя синтаксис, подобный шаблонным строкам ES6. Однако, ввиду ограничений препроцессора Stylus, необходимо указать через второй параметр объект типа «ассоциативный массив», ключи которого должны ссылаться на имена переменных, указанных в шаблонной строке.
p(buildString("Good morning, ${name}", { name: "Takeshi" }))
Если строка короткая и переменных всего одна-две, то возможно записать
выражение вызова функции
buildString
в одну строку.
p(buildString("Good morning, ${ name }", { name: "Takeshi" }))
Вы можете использовать пробелы внутри фигурных скобок.
p(
buildString(
"In the quaint village of ${ villageName }, nestled amidst the rolling hills of the countryside, lived the " +\
"${ familyName } family. " +\
"Mr. ${ givenName } ${ familyName }, a respected member of the community, was known for his " +\
"kindness and generosity.",
{
villageName: "Willowbrook",
familyName: "Thompson",
givenName: "Jonathan"
}
)
)
В общем случае код будет многострочным.
Будьте осторожны с переносом строки: Stylus не допускает
пробелов после обратный косой черты.
p(buildString("You have ${ messagesCount } message(s)", { messagesCount: 2 }))
Вы можете интерполировать и числовые значения.
// НЕВЕРНЫЙ СИНТАКСИС!!!
p(buildString("Good morning, ${name}", { name }));
К сожалению, Stylus не поддерживает сокращённую
запись для свойств объекта, которая доступна в
ECMAScript-языках начиная с ECMAScript 2015.
Сравнение способов интерполяции строк
Конкатенация строк (нативный способ)
givenName = "Takeshi"
familyName = "Tokugawa"
p("Good morning, " + givenName + " " + familyName)
Sprintf (нативный способ)
givenName = "Takeshi"
familyName = "Tokugawa"
outputString = "Good morning, %s %s" % (unquote(givenName) unquote(familyName))
p(outputString)
buildString
(YDF)
p(
buildString(
"Good morning, ${ givenName } ${ familyName }",
{
givenName: "Takeshi",
familyName: "Tokugawa"
}
)
)