# Feldolgozási pipeline építése transformokkal

> Regisztrálj több lépést egy név alatt a NEWTRANSFORM()-mal, és futtass végig rajtuk egy értéket sorrendben a TRANSFORM()-mal.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: hu
Content-SHA256: df0b01eaff7edc3695efe3be16fb729f65d9c74f543b6ac512d004e00cf9d1e0
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

A transform lépések elnevezett lánca. A `NEWTRANSFORM(name, fn, [id])` hozzáad egy lépést a `name` lánchoz; a lépések a regisztráció sorrendjében futnak, és mindegyik megkapja az `$` opcióobjektumot és az aktuális értéket. Az értéket a `$.value = ...`-lel változtasd, és a `$.next()` hívásával folytasd a következő lépéssel. A `$.invalid(message)` hibát ad hozzá. A `TRANSFORM(name, value)` elindítja a láncot, és egy promise-t ad vissza a végső értékkel; a promise elutasítódik, ha valamelyik lépés hibát jelentett. Callbackkel helyette `TRANSFORM(name, value, function(err, value) {})`. Lépés nélküli név változatlanul adja vissza az értéket.

Olyan munkához használd, amelyet több helyről bővíteni kell, például egy hozzászólás tisztításához mentés előtt: egy spamszűrő, egy szóközvágó és egy hivatkozás-ellenőrző mind a saját fájljában élhet, és hozzáadható vagy eltávolítható anélkül, hogy a `TRANSFORM()`-ot hívó kódhoz nyúlnál. Az opcionális `id` lehetővé teszi, hogy egy lépést később eltávolíts a `NEWTRANSFORM(name, null, id)`-del.

```js definitions/transforms.js
NEWTRANSFORM('comment', function($, value) {
	$.value = value.trim();
	$.next();
}, 'trim');

NEWTRANSFORM('comment', function($, value) {
	if (/spam/i.test(value))
		$.invalid('Spam is not allowed');
	$.next();
}, 'spam');

NEWTRANSFORM('comment', function($, value) {
	$.value = value.replace(/\s+/g, ' ');
	$.next();
}, 'spaces');
```

```js controllers/comments.js
exports.install = function() {
	ROUTE('POST /comment/ @json', comment);
	ROUTE('DELETE /comment/spaces/', remove_step);
};

async function comment($) {
	try {
		var text = await TRANSFORM('comment', $.body.text);
		$.json({ text: text });
	} catch (err) {
		$.json({ error: true });
	}
}

function remove_step($) {
	NEWTRANSFORM('comment', null, 'spaces');
	$.success();
}
```
