Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 🎸 add identifier param (like [graph]) #399

Merged
merged 1 commit into from
Feb 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions docs/plugin-core.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ npm install @ezs/core

Plusieurs instructions permettent de créer des sous flux (sub pipeline), à partir d'un fichier d’instructions ou d'instructions imbriquées. Si elles s'utilisent toutes de la même manière (avec les mêmes paramètres) centaines peuvent apparaître comme similaires mais leur fonctionnement est différent :

- [delegate] : 1 sous flux pour tous les éléments
- [swing] : 1 sous flux pour tous les éléments filtrés selon une condition
- [spaw] : 1 sous flux par élément
- [loop] : 1 sous flux par élément
- [expand] : 1 sous flux pour N éléments (N = size), seul le champ sélectionné est envoyé dans le pipeline
- [combine] : 1 sous flux pour tous les éléments, seul le champ sélectionné est comparé avec le résultat du sous flux
- [singleton] : 1 sous flux pour le premier élément
- [delegate] : 1 sous flux pour tous les éléments
- [swing] : 1 sous flux pour tous les éléments filtrés selon une condition
- [spaw] : 1 sous flux par élément
- [loop] : 1 sous flux par élément
- [expand] : 1 sous flux pour N éléments (N = size), seul le champ sélectionné est envoyé dans le pipeline
- [combine] : 1 sous flux pour tous les éléments, seul le champ sélectionné est comparé avec le résultat du sous flux
- [singleton] : 1 sous flux pour le premier élément

## usage

Expand Down
10 changes: 5 additions & 5 deletions packages/analytics/src/pair.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,9 @@ const pair = (data, feed, ctx) => {
feed.close();
return;
}
let fields = ctx.getParam('path', []);
if (!Array.isArray(fields)) {
fields = [fields];
}
const idt = ctx.getParam('identifier', false);
const weight = idt === false ? 1 : get(data, idt, 1);
const fields = [].concat(ctx.getParam('path', []));

const values = fields
.map((key) => get(data, key))
Expand All @@ -29,7 +28,7 @@ const pair = (data, feed, ctx) => {
const a = values.slice(i + 1).reduce((pre, cur) => pre.concat(cur), []);
if (a.length > 0) {
v.forEach((w) => {
a.forEach((x) => feed.write(core([w, x], 1)));
a.forEach((x) => feed.write(core([w, x], weight)));
});
}
});
Expand Down Expand Up @@ -82,6 +81,7 @@ const pair = (data, feed, ctx) => {
* ```
*
* @name pair
* @param {String} [identifier=false] path to use to set value result field (if not set or not exists, 1 is use as a default value)
* @param {String}
* <ul><li>path of the element who will be use to create the pair</li></ul>
* <ul><li>chemin de l'élément qui vas etre utilisé pour créer le couple</li></ul>
Expand Down
29 changes: 27 additions & 2 deletions packages/analytics/test/network.js
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ describe('network', () => {
});
});

it('pair', (done) => {
it('pair #1', (done) => {
ezs.use(statements);
const res = [];
from([
Expand All @@ -232,7 +232,7 @@ describe('network', () => {
});
});

it('pair', (done) => {
it('pair #2', (done) => {
ezs.use(statements);
const res = [];
from([
Expand All @@ -254,4 +254,29 @@ describe('network', () => {
done();
});
});

it('pair #3', (done) => {
ezs.use(statements);
const res = [];
from([
{ i: 'doc#1', a: ['x', 'b', 'z'], b: 'A' },
{ i: 'doc#2', a: ['t', 'b', 'z'], b: 'B' },
{ i: 'doc#3', a: ['t', 'c', 'z'], b: 'C' },
{ i: 'doc#4', a: ['y', 'd', 'z'], b: 'D' },
{ i: 'doc#5', a: ['x', 'b', 'z'], b: 'E' },
])
.pipe(ezs('pair', { path: ['a', 'b'], identifier: 'i' }))
.on('data', (chunk) => {
assert(typeof chunk === 'object');
res.push(chunk);
})
.on('end', () => {
assert.equal(15, res.length);
assert.equal('doc#1', res[0].value);
done();
});
});



});
14 changes: 7 additions & 7 deletions packages/core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ npm install @ezs/core

Plusieurs instructions permettent de créer des sous flux (sub pipeline), à partir d'un fichier d’instructions ou d'instructions imbriquées. Si elles s'utilisent toutes de la même manière (avec les mêmes paramètres) centaines peuvent apparaître comme similaires mais leur fonctionnement est différent :

- [delegate] &#x3A; 1 sous flux pour tous les éléments
- [swing] &#x3A; 1 sous flux pour tous les éléments filtrés selon une condition
- [spaw] &#x3A; 1 sous flux par élément
- [loop] &#x3A; 1 sous flux par élément
- [expand] &#x3A; 1 sous flux pour N éléments (N = size), seul le champ sélectionné est envoyé dans le pipeline
- [combine] &#x3A; 1 sous flux pour tous les éléments, seul le champ sélectionné est comparé avec le résultat du sous flux
- [singleton] &#x3A; 1 sous flux pour le premier élément
- [delegate] : 1 sous flux pour tous les éléments
- [swing] : 1 sous flux pour tous les éléments filtrés selon une condition
- [spaw] : 1 sous flux par élément
- [loop] : 1 sous flux par élément
- [expand] : 1 sous flux pour N éléments (N = size), seul le champ sélectionné est envoyé dans le pipeline
- [combine] : 1 sous flux pour tous les éléments, seul le champ sélectionné est comparé avec le résultat du sous flux
- [singleton] : 1 sous flux pour le premier élément

## usage

Expand Down
Loading