Skip to content

Commit

Permalink
Merge pull request #399 from Inist-CNRS/pair-imp
Browse files Browse the repository at this point in the history
feat: 🎸 add identifier param (like [graph])
  • Loading branch information
touv authored Feb 7, 2024
2 parents c13894f + 855916a commit ccbf8ca
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 21 deletions.
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

0 comments on commit ccbf8ca

Please sign in to comment.