169 похожих чатов

А я тут пытался хакнуть свелт на классовые директивы для

компонентов..., а обнаружил, что наличие спреда меняет генерируемый код и получается что даже

<Component
{...spread}
class="elephant {toggle ? 'dog' : ''}"
/>

перестаёт работать с хэшами, потому что генерируется вот это: https://pastebin.com/09a7gYir

нашёл где генерируется код для спреда: https://github.com/sveltejs/svelte/blob/46a83a50e3ed8f90b188cb152901cc579b189cd2/src/compiler/compile/render_dom/wrappers/InlineComponent/index.ts#L226-L257

и выходит что надо туда вклиниться, проверить является ли аттрибут кодовым словом и докинуть в генерируемый апдейт немного хэша

а с классовыми директивами вообще прикол
для тегов используется classList.(add|remove)
а для компонентов придётся выдумывать свой добавляюще-убирающий велик
еле понял, что можно вот так исходный статичный класс на этапе конструкции компонента запихиваемый в props

но всё это как-то так по-ублюдски выглядит, эхх :)

const class_attr = this.node.attributes.find(a => a.name === 'class');
const initial_class = class_attr ?
class_attr.chunks.map(c => c.data ? c.data.trim() : null).filter(d => d).join(' ') :
'';

suckless подход с патчами на свелт компилер в действии))

4 ответов

5 просмотров

это же компилятор, он меняет код на любое изменение исходников)

Кирилл-Спасибович Автор вопроса
Pavel 🦇 Malyshev
это же компилятор, он меняет код на любое изменени...

не, ну понятно но неожиданно что генератор кода для обработки спредов валяется совсем в другом месте

Кирилл Спасибович
не, ну понятно но неожиданно что генератор кода дл...

видимо это был вариант заставить это работать вместе. спреды появились мягко говоря не сразу

Кирилл-Спасибович Автор вопроса
Pavel 🦇 Malyshev
видимо это был вариант заставить это работать вмес...

но зато методом измени компилер, скомпиль, дифни билды - было получено не мало информации о том что же может пойти не так :)

Похожие вопросы

Обсуждают сегодня

здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
Можно попросить небольшое ревью кода? Тут немнога, я ничего интереснее не придумал, чем написать аналог tree в качестве практики с cmake. https://github.com/hrimov/tree-unix/...
Andrew Hrimov
11
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
кто тебе сказал, что она угроблена? многие только начинают жизнь, после увольнения из Гугла, Майкрософта, Оракла,...
Alex Kom
9
В альтернативе у нас сидеть горбатиться на дядю в галерах, пока не помрешь или пока тебя не заменят более молодым сотрудником, который готов гребсти в два раза дешевле. Вот и ...
Кабан Кабанов
7
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Карта сайта