Надстройка string.format, чтобы подставлять параметры в стиле string interpolation: {0}, {1}

Здесь обсуждается всё, что касается макросов.
Post Reply
Дмитрий Журко
Posts: 127
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Надстройка string.format, чтобы подставлять параметры в стиле string interpolation: {0}, {1}

Post by Дмитрий Журко »

И не только номера параметров, а некоторая отсебятина, расширяющая возможности форматирования.
Защитить { нужно знаком % -- %{
Для совместимости нумерация параметров от 0. Но для привычного в lua достаточно указать лишний параметр: s:reform("x = {2}; y = {1}", 0, y, x)
Ширину и тип представления параметра можно задать почти как раньше: s:reform("x = {1:+10.4f}", 0, x), и тому подобное.
Предполагаю немного расширить выразительность format().
Пока ввёл:
  1. Если строка шаблон не строка, а что угодно, вернёт "". Сделал так, потому что так проще подставлять шаблон по условию: не надо следить за точностью срабатывания. Как в Keys().
  2. Если указан только номер параметра, то подставится tostring(параметр). Это естественно.
  3. Тип параметра S, который подставит то же, что (1) ПРОПИСНЫМИ.
  4. Если параметр nil, то его формат будет изъят из строки.
  5. Перед номером параметра можно указать ПРИСТАВКУ, выделенную знаком ударения:
    s:reform("Имена{: `0}{, `1}{, `2}.", "Аня", "Ася") выдаст "Имена: Аня, Ася."
    То есть параметра 2 нет, нет и его пунктуации.
Главная часть отлажена, могу развивать. Документацию пока не отработал, так как развитие идёт, ожидаю перемены: центрирование, скобки, кавычки и пр.
Last edited by HaRT on Fri 10 May, 2024 23:22, edited 4 times in total.
Reason: Исправлен заголовок Темы
Shmuel
Posts: 6845
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 532 times

Надстройка string.format, чтобы подставлять параметры в стиле json: {0}, {1}

Post by Shmuel »

Подобная (но не идентичная) функция не так давно появилась в Фаре, называется utf8.reformat.
Дмитрий Журко
Posts: 127
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Надстройка string.format, чтобы подставлять параметры в стиле json: {0}, {1}

Post by Дмитрий Журко »

Shmuel wrote: Fri 10 May, 2024 19:51 Подобная (но не идентичная) функция не так давно появилась в Фаре, называется utf8.reformat.
Большое спасибо, посмотрю. Идентичной не будет хотя бы потому, что я намерен развивать, пока не запрещу себе это дело. Как хорошо, что я решил укоротить имя до длины имени format.
Last edited by Дмитрий Журко on Fri 10 May, 2024 19:55, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10900
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 223 times
Been thanked: 359 times

Надстройка string.format, чтобы подставлять параметры в стиле json: {0}, {1}

Post by HaRT »

Дмитрий Журко wrote: Fri 10 May, 2024 19:41 подставлять параметры в стиле json: {0}, {1}
Непонятно только, при чём тут JSON. Имелось в виду применение в языке JavaScript его template literals для интерполяции строк?
 ! Message from: HaRT
Тема перенесена. Дмитрий Журко, прежде чем создавать тему, полезно ознакомиться с Правилами раздела. Повторное предупреждение.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Дмитрий Журко
Posts: 127
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Надстройка string.format, чтобы подставлять параметры в стиле json: {0}, {1}

Post by Дмитрий Журко »

HaRT wrote: Fri 10 May, 2024 20:18 Непонятно только, при чём тут JSON.
Так в чём именно ваше недовольство? Правила я читал.
User avatar
HaRT
Moderator
Posts: 10900
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 223 times
Been thanked: 359 times

Надстройка string.format, чтобы подставлять параметры в стиле json: {0}, {1}

Post by HaRT »

Дмитрий Журко wrote: Fri 10 May, 2024 23:07 Так в чём именно ваше недовольство?
Моё недовольство как модератора в том, что вы создали тему в нарушение правил того раздела и мне пришлось её переносить.
Дмитрий Журко wrote: Fri 10 May, 2024 23:07 Правила я читал.
Вот этот фрагмент явно невнимательно читали:
John Doe wrote: Wed 03 Apr, 2013 17:33Важно:
Создание новых тем в разделе запрещено.
Наполнение раздела производится модераторами путём переноса подходящих тем из раздела Обсуждение макросов.
От дальнейшего обсуждения этого вопроса тут прошу воздержаться (буду удалять).
Вопрос же про то, каким боком к данной Теме относится упомянутый в её заглавии JSON, по-прежнему ждёт вашего ответа.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Дмитрий Журко
Posts: 127
Joined: Tue 19 Jan, 2021 21:49
Has thanked: 27 times
Been thanked: 1 time

Надстройка string.format, чтобы подставлять параметры в стиле json: {0}, {1}

Post by Дмитрий Журко »

HaRT wrote: Fri 10 May, 2024 23:12 по-прежнему ждёт вашего ответа.
Уже не ждёт. У меня тоже плохой характер.
User avatar
HaRT
Moderator
Posts: 10900
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 223 times
Been thanked: 359 times

Надстройка string.format, чтобы подставлять параметры в стиле json: {0}, {1}

Post by HaRT »

 ! Message from: HaRT
(Ниже выделение моё)
Дмитрий Журко wrote: Fri 10 May, 2024 23:16 У меня тоже плохой характер.
Бан за публичное обсуждение действий модератора и переход на личности. Пока на неделю.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Обсуждение макросов”