1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/silis-MarkupJS

 / Детали:

Повторное использование кода для элементов Element и Elements, сокращение размера файла.

Предстоит сделать
Владелец
Создано  
08.05.2025

Переиспользование кода для Element и Elements, сокращение размера файла```
switch ((typeof(arg0.prototype || arg0))[0]) {
case "o": // объект
switch ((typeof arg0)[0]) {
case "o": // объект
if (arg0 instanceof Binding) {
// Если это объект Binding, уведомляем о изменении модели
var element = new Text(arg0.value || "");
target.appendChild(element);
arg0.add((val) => { element.textContent = val; });
} else if (Array.isArray(arg0)) {
if (args.length >= 2) {
for (var i = 0; i < arg0.length; i++) {
if (i > 0) {
var argi = args[i];
if (argi instanceof Binding) {
// Если это объект Binding, уведомляем о изменении модели
var element = new Text(argi.value || "");
target.appendChild(element);
argi.add((val) => { element.textContent = val; });
} else {
if (argi instanceof Elements) {
target.appendChild(argi);
} else {
target.appendChild(new Text(argi));
}
}
}
target.appendChild(new Text(arg0[i]));
}
} else {
arg0.forEach(item => {
switch ((typeof item)[0]) {
case "s":
case "n":
item = new Text(item);
break;
default:
if (item.parent) item = item.clone();
break;
}
target.appendChild(item);
});
}
} else {
if (args.length >= 2) {
target.attributes = {};
}
}
}
}
}
}

                             extend(target.attributes, args[i]);
                         }
                     } else {
                         target.attributes = arg0;
                     }
                 }
                 return proxy;
             case "f": // функция (скрипт)
                 target.appendChild(new Script(arg0));
                 return proxy;
         }
         break;
     case "s": // строка
     case "n": // число
         target.appendChild(new Text(arg0));
         return proxy;
     case "f": // функция (Element, Elements)
         if (arg0 instanceof Element) {
             if (arg0.parent) arg0 = arg0.clone();
             target.appendChild(arg0);
         }```javascript
return proxy;
} else if (arg0 instanceof Elements) {
	arg0.children.forEach(item => {
		if (item.parent) {
			item = item.clone();
		}
		target.appendChild(item);
		
		if (args.length >= 2) {
			for (var i = 1; i < args.length; i++) {
				extend(item.attributes, args[i]);
			}
		}
	});
	return proxy;
} else {
	throw `Unsupported: ${typeof arg0}`;
}

Комментарий (0)

GitLife Service Account Задача создана
GitLife Service Account добавлено
 
优化
label.
Развернуть журнал операций

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/silis-MarkupJS.git
git@api.gitlife.ru:oschina-mirror/silis-MarkupJS.git
oschina-mirror
silis-MarkupJS
silis-MarkupJS