Предложение: поддержать открытый расширенный синтаксис spintax

Divisor

Client
Регистрация
26.02.2024
Сообщения
52
Реакции
62
Баллы
18
Плоский спиннинг {a|b|c} давно не развивался. Есть открытый стандарт расширенного spintax (spintax.net): поверх {a|b|c} он добавляет перестановки с настраиваемым разделителем, переменные с переиспользованием, условия по значениюпеременной, согласование множественного числа и включения шаблонов. Это открытая спецификация, а не продукт.

Реализации движка есть для JavaScript, PHP, Python и Object Pascal, все подлицензией MIT, и все держатся на одном общем наборе конформанс-тестов, 168 кейсов на движок.
Из-за общего корпуса порт под .NET/C# делается прямолинейно ипроверяется против тех же тестов. То есть при желании расширенный синтаксис можно поддержать в спиннере нативно или оформить как shared-code/DLL для C#-куба.

Что это даёт пользователям: плоский {a|b|c} остаётся полностью совместимым, он подмножество стандарта. Сверху появляются переменные, которые задаёшь один раз ипереиспользуешь по всему шаблону, перестановки со своим разделителем, условия и корректные формы множественного числа. Шаблон пишется один раз, дешёвой моделью по опубликованному authoring-промпту, дальше крутится локально без затрат накаждый прогон.

Писать шаблоны можно уже сейчас. На сайте выложен полный промпт и agent-skill, под Windows есть отдельный редактор с живым рендером и проверкой синтаксиса.

Я сам пользователь и ничего за это не прошу. В идеале поддержка расширенного синтаксиса появится в продукте.

Всё открыто и бесплатно

Спецификация синтаксиса: https://spintax.net/docs/syntax
Движки и исходники: https://spintax.net/spintax-engines
Редактор с живым рендером (пока только Win и без AI): https://apps.microsoft.com/detail/9mw3ch7b530p


Готов ответить на технические вопросы.
 
Последнее редактирование:
Поддержу. А еще надо XPath 2.0, из той же серии предложение. 2026-й год на дворе, в конце концов!
 
Плоский спиннинг {a|b|c} давно не развивался. Есть открытый стандарт расширенного spintax (spintax.net): поверх {a|b|c} он добавляет перестановки с настраиваемым разделителем, переменные с переиспользованием, условия по значениюпеременной, согласование множественного числа и включения шаблонов. Это открытая спецификация, а не продукт.

Реализации движка есть для JavaScript, PHP, Python и Object Pascal, все подлицензией MIT, и все держатся на одном общем наборе конформанс-тестов, 168 кейсов на движок.
Из-за общего корпуса порт под .NET/C# делается прямолинейно ипроверяется против тех же тестов. То есть при желании расширенный синтаксис можно поддержать в спиннере нативно или оформить как shared-code/DLL для C#-куба.

Что это даёт пользователям: плоский {a|b|c} остаётся полностью совместимым, он подмножество стандарта. Сверху появляются переменные, которые задаёшь один раз ипереиспользуешь по всему шаблону, перестановки со своим разделителем, условия и корректные формы множественного числа. Шаблон пишется один раз, дешёвой моделью по опубликованному authoring-промпту, дальше крутится локально без затрат накаждый прогон.

Писать шаблоны можно уже сейчас. На сайте выложен полный промпт и agent-skill, под Windows есть отдельный редактор с живым рендером и проверкой синтаксиса.

Я сам пользователь и ничего за это не прошу. В идеале поддержка расширенного синтаксиса появится в продукте.

Всё открыто и бесплатно

Спецификация синтаксиса: https://spintax.net/docs/syntax
Движки и исходники: https://spintax.net/spintax-engines
Редактор с живым рендером (пока только Win и без AI): https://apps.microsoft.com/detail/9mw3ch7b530p


Готов ответить на технические вопросы.
Здравствуйте,

Передал ваше предложение команде.
 
  • Оценить
Реакции: Divisor
@Dmitriy_Zenno

Спасибо! Отличный пример, чтобы заставить остальных повайдеров подтянуться. Специально подсчитал, что это дает в цифрах (затратах пользователей на шаблоны).
Т.е. это только казалось, что мелочь! Повесил на главной spintax.net:

1785958430189.png
 
  • Оценить
Реакции: Dmitriy_Zenno
Движок под .NET готов и опубликован

Обещал в первом посте, что порт на .NET/C# делается прямолинейно благодаря общему корпусу...

- пакет NuGet: Spintax.Core 0.1.0 — nuget.org/packages/Spintax.Core (dotnet add package Spintax.Core)
- исходники: github.com/investblog/spintax-dotnet, MIT, ноль зависимостей
- две сборки из одного исходника: netstandard2.0 и net472

Это тот же расширенный синтаксис, что у остальных движков семьи: {a|b} с вложенностью, перестановки [<minsize=2;maxsize=3;sep=", ";lastsep=" и ">…], переменные %name%, #set / #def / #include, условия {?VAR?да|нет}, плюрал {plural %n%: штука|штуки|штук} для ru/uk/be/sr/hr/bs (и двухформный для остальных), экранирование данных, валидация с кодом ошибки и позицией, воспроизводимый рендер по seed.

Чем это проверено. Не своими тестами, а общим корпусом семьи — тем же, что гоняют JS-, PHP-, Python- и Pascal-движки: 258 случаев, все проходят на обоих таргетах, плюс 157 юнит-тестов на каждый. CI открытый, публикация на NuGet через Trusted Publishing.

В ZennoPoster (проверял на 7.9.1.0): две dll из пакета кладутся в Progs\ExternalAssemblies, в проекте одна ссылка из GAC — и кубик «C# код» рендерит:

return Spintax.Core.Engine.Render("{Привет|Здравствуйте}, мир!", new Spintax.Core.RenderOptions { Seed = "demo", Locale = "ru" });

Одна грабля, чтобы вы на неё не наступили: у компилятора кубика нет ссылки на netstandard.dll, поэтому в ZP нужна сборка из lib/net472, а не netstandard2.0 — иначе CS0012 на первом же Dictionary.

Зачем всё это, в цифрах. Прогнал демо-шаблон карточки товара через родной Macros.TextProcessing.Spintax 10 000 раз: 4 287 различных строк в обычном режиме, 9 568 в расширенном — и все 10 000 с необработанными #def, %переменными% и plural в тексте. Родной спин честно перемешивает то, что понимает, и печатает как есть то, чего не понимает. Тот же шаблон через движок даёт 124 416 разных карточек на один товар, посчитано точно, не выборкой.

Дальше — плагин и два готовых шаблона для ZennoPoster (авторинг шаблона через кубик «ИИ Агент» с проверкой движком, и прод по таблице в файлы), это в рамках конкурса; отдельно будет статья с подробностями и граблями.
 
Последнее редактирование:
а какой результат дает сейчас уникализация текста?
Смотри цифры выше. По сравнению с "плоским" {a|b} квадратично. Можно еще руками перестановки в редакторе потюнить. Счетчики и очистка по шинглам есть в редакторе Spintax Studio. Пока собрал его только под Win, но могу скомпилить для MacOs или Linux, если кому-то нужно.
1787484630424.png
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)