placementt-core 1.400.1119 → 1.400.1120
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/heMappings.d.ts +4 -2
- package/lib/heMappings.js +5 -3
- package/lib/heMappings.js.map +1 -1
- package/lib/heMappings.test.js +9 -0
- package/lib/heMappings.test.js.map +1 -1
- package/package.json +1 -1
- package/src/heMappings.test.ts +9 -0
- package/src/heMappings.ts +5 -3
package/lib/heMappings.d.ts
CHANGED
|
@@ -52,8 +52,10 @@ export declare const BRES_SECTORS: {
|
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
54
54
|
* Resolve a Nomis BRES industry label to its sector id. Nomis prefixes the
|
|
55
|
-
* labels with a number
|
|
56
|
-
* edition may swap "&" for "and", so
|
|
55
|
+
* labels with a number and suffixes the SIC section letters ("8 : Transport
|
|
56
|
+
* & storage (inc postal) (H)"), and the edition may swap "&" for "and", so
|
|
57
|
+
* the match ignores all three. Only a trailing group of section letters is
|
|
58
|
+
* dropped, so "(inc postal)" still counts.
|
|
57
59
|
*
|
|
58
60
|
* @param {string} label the label as it appears in the CSV.
|
|
59
61
|
* @return {string|undefined} the sector id, or undefined.
|
package/lib/heMappings.js
CHANGED
|
@@ -205,8 +205,10 @@ exports.BRES_SECTORS = {
|
|
|
205
205
|
};
|
|
206
206
|
/**
|
|
207
207
|
* Resolve a Nomis BRES industry label to its sector id. Nomis prefixes the
|
|
208
|
-
* labels with a number
|
|
209
|
-
* edition may swap "&" for "and", so
|
|
208
|
+
* labels with a number and suffixes the SIC section letters ("8 : Transport
|
|
209
|
+
* & storage (inc postal) (H)"), and the edition may swap "&" for "and", so
|
|
210
|
+
* the match ignores all three. Only a trailing group of section letters is
|
|
211
|
+
* dropped, so "(inc postal)" still counts.
|
|
210
212
|
*
|
|
211
213
|
* @param {string} label the label as it appears in the CSV.
|
|
212
214
|
* @return {string|undefined} the sector id, or undefined.
|
|
@@ -214,7 +216,7 @@ exports.BRES_SECTORS = {
|
|
|
214
216
|
function bresSectorForLabel(label) {
|
|
215
217
|
const norm = (s) => s.toLowerCase()
|
|
216
218
|
.replace(/^\s*\d+\s*:\s*/, "")
|
|
217
|
-
.replace(/\([a-
|
|
219
|
+
.replace(/\((part\s+)?[a-u](\s*(,|and|-)\s*[a-u])*\)\s*$/i, "")
|
|
218
220
|
.replace(/\band\b/g, "&")
|
|
219
221
|
.replace(/[^a-z&]+/g, "");
|
|
220
222
|
const target = norm(label);
|
package/lib/heMappings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heMappings.js","sourceRoot":"","sources":["../src/heMappings.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAmIH,oCASC;AAUD,4CAOC;
|
|
1
|
+
{"version":3,"file":"heMappings.js","sourceRoot":"","sources":["../src/heMappings.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAmIH,oCASC;AAUD,4CAOC;AAsCD,gDASC;AAkCD,oDAQC;AApPD,kDAAkD;AACrC,QAAA,iBAAiB,GAA6B;IACvD,KAAK,EAAE,mBAAmB;IAC1B,KAAK,EAAE,oBAAoB;IAC3B,KAAK,EAAE,uCAAuC;IAC9C,KAAK,EAAE,qCAAqC;IAC5C,KAAK,EAAE,8BAA8B;IACrC,KAAK,EAAE,wBAAwB;IAC/B,KAAK,EAAE,2BAA2B;IAClC,KAAK,EAAE,oCAAoC;IAC3C,KAAK,EAAE,oBAAoB;IAC3B,KAAK,EAAE,wCAAwC;IAC/C,KAAK,EAAE,0CAA0C;IACjD,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,qBAAqB;IAC5B,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,+CAA+C;IACtD,KAAK,EAAE,mBAAmB;IAC1B,KAAK,EAAE,iDAAiD;IACxD,KAAK,EAAE,6CAA6C;IACpD,KAAK,EAAE,wDAAwD;IAC/D,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,8CAA8C;IACrD,KAAK,EAAE,qCAAqC;IAC5C,KAAK,EAAE,cAAc;IACrB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,sCAAsC;IAC7C,KAAK,EAAE,oCAAoC;IAC3C,KAAK,EAAE,4BAA4B;IACnC,KAAK,EAAE,KAAK;IACZ,KAAK,EAAE,+BAA+B;IACtC,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,iCAAiC;IACxC,KAAK,EAAE,qCAAqC;IAC5C,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE,iCAAiC;IACxC,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,gCAAgC;IACvC,KAAK,EAAE,gBAAgB;IACvB,KAAK,EAAE,yCAAyC;IAChD,KAAK,EAAE,eAAe;CACzB,CAAC;AAEF;;;;GAIG;AACU,QAAA,kBAAkB,GAA4B;IACvD,yBAAyB;IACzB,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,KAAK;IACpB,8BAA8B;IAC9B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,gCAAgC;IAChC,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,aAAa;IACb,OAAO,EAAE,KAAK;IACd,sBAAsB;IACtB,OAAO,EAAE,KAAK;IACd,wCAAwC;IACxC,OAAO,EAAE,KAAK;IACd,oBAAoB;IACpB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,wBAAwB;IACxB,OAAO,EAAE,KAAK;IACd,6BAA6B;IAC7B,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,UAAU,EAAE,KAAK;IACjB,YAAY;IACZ,OAAO,EAAE,KAAK;IACd,sCAAsC;IACtC,OAAO,EAAE,KAAK;IACd,kBAAkB;IAClB,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,MAAM;IACN,OAAO,EAAE,KAAK;IACd,0BAA0B;IAC1B,OAAO,EAAE,KAAK;IACd,4BAA4B;IAC5B,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,kDAAkD;IAClD,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,yBAAyB;IACzB,OAAO,EAAE,KAAK;IACd,uCAAuC;IACvC,OAAO,EAAE,KAAK;IACd,2CAA2C;IAC3C,OAAO,EAAE,KAAK;IACd,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,KAAK;IACjB,6CAA6C;IAC7C,OAAO,EAAE,KAAK;CACjB,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,GAAW;IACpC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,MAAM,CAAC,GAAG,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,GAAuB;IACpD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,GAAG,0BAAkB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,EAAE;YAAE,OAAO,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACU,QAAA,YAAY,GAA2B;IAChD,WAAW,EAAE,iCAAiC;IAC9C,SAAS,EAAE,+BAA+B;IAC1C,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,KAAK,EAAE,cAAc;IACrB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,kCAAkC;IAC7C,WAAW,EAAE,+BAA+B;IAC5C,GAAG,EAAE,6BAA6B;IAClC,OAAO,EAAE,uBAAuB;IAChC,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,sCAAsC;IACpD,QAAQ,EAAE,4CAA4C;IACtD,WAAW,EAAE,iCAAiC;IAC9C,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,kDAAkD;CAC3D,CAAC;AAEF;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,KAAa;IAC5C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE;SACtC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,iDAAiD,EAAE,EAAE,CAAC;SAC9D,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,oBAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAY,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;AACrF,CAAC;AAED;;;;GAIG;AACU,QAAA,uBAAuB,GAAmC;IACnE,wBAAwB,EAAE,CAAC,KAAK,CAAC;IACjC,6BAA6B,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;IAC7D,oBAAoB,EAAE,CAAC,cAAc,CAAC;IACtC,uBAAuB,EAAE,CAAC,QAAQ,CAAC;IACnC,sBAAsB,EAAE,CAAC,WAAW,CAAC;IACrC,oBAAoB,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IAC7C,uBAAuB,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;IACxD,wBAAwB,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;IAClD,wBAAwB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;IACzC,iBAAiB,EAAE,CAAC,MAAM,CAAC;IAC3B,uBAAuB,EAAE,CAAC,aAAa,CAAC;IACxC,yBAAyB,EAAE,CAAC,cAAc,EAAE,UAAU,CAAC;IACvD,2BAA2B,EAAE,CAAC,aAAa,CAAC;IAC5C,uBAAuB,EAAE,CAAC,QAAQ,CAAC;IACnC,mCAAmC,EAAE,CAAC,aAAa,CAAC;IACpD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IACzC,uBAAuB,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC;CAClD,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,UAAoB;IACrD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,+BAAuB,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"}
|
package/lib/heMappings.test.js
CHANGED
|
@@ -39,6 +39,15 @@ describe("bresSectorForLabel", () => {
|
|
|
39
39
|
expect((0, heMappings_1.bresSectorForLabel)("18 : Arts, entertainment, recreation & other services (R,S,T and U)")).toBe("arts");
|
|
40
40
|
expect((0, heMappings_1.bresSectorForLabel)("Transport & storage (inc postal)")).toBe("transport");
|
|
41
41
|
});
|
|
42
|
+
it("maps every broad industrial group label Nomis NM_189_1 served in 2026", () => {
|
|
43
|
+
const labels = ["1 : Agriculture, forestry & fishing (A)", "2 : Mining, quarrying & utilities (B,D and E)", "3 : Manufacturing (C)",
|
|
44
|
+
"4 : Construction (F)", "5 : Motor trades (Part G)", "6 : Wholesale (Part G)", "7 : Retail (Part G)",
|
|
45
|
+
"8 : Transport & storage (inc postal) (H)", "9 : Accommodation & food services (I)", "10 : Information & communication (J)",
|
|
46
|
+
"11 : Financial & insurance (K)", "12 : Property (L)", "13 : Professional, scientific & technical (M)",
|
|
47
|
+
"14 : Business administration & support services (N)", "15 : Public administration & defence (O)", "16 : Education (P)",
|
|
48
|
+
"17 : Health (Q)", "18 : Arts, entertainment, recreation & other services (R,S,T and U)"];
|
|
49
|
+
expect(new Set(labels.map(heMappings_1.bresSectorForLabel))).toEqual(new Set(Object.keys(heMappings_1.BRES_SECTORS)));
|
|
50
|
+
});
|
|
42
51
|
it("treats 'and' like '&'", () => {
|
|
43
52
|
expect((0, heMappings_1.bresSectorForLabel)("Agriculture, forestry and fishing")).toBe("agriculture");
|
|
44
53
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heMappings.test.js","sourceRoot":"","sources":["../src/heMappings.test.ts"],"names":[],"mappings":";;AAAA,6CASsB;AACtB,mDAA0D;AAE1D,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,IAAA,yBAAY,EAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,IAAA,yBAAY,EAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,IAAA,yBAAY,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,IAAA,yBAAY,EAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAA,yBAAY,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,IAAA,6BAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,IAAA,6BAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,IAAA,6BAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,IAAA,6BAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,IAAA,6BAAgB,EAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACxD,MAAM,CAAC,IAAA,6BAAgB,EAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,CAAC,IAAA,6BAAgB,EAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,MAAM,CAAC,+BAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,8BAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,IAAA,+BAAkB,EAAC,sCAAsC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,MAAM,CAAC,IAAA,+BAAkB,EAAC,qEAAqE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/G,MAAM,CAAC,IAAA,+BAAkB,EAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,IAAA,+BAAkB,EAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,IAAA,+BAAkB,EAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACpD,MAAM,CAAC,IAAA,+BAAkB,EAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAChE,yCAAyB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,oCAAuB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC9D,oCAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,yBAAY,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,IAAA,iCAAoB,EAAC,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAC5G,MAAM,CAAC,IAAA,iCAAoB,EAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"heMappings.test.js","sourceRoot":"","sources":["../src/heMappings.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/heMappings.test.ts
CHANGED
|
@@ -49,6 +49,15 @@ describe("bresSectorForLabel", () => {
|
|
|
49
49
|
expect(bresSectorForLabel("18 : Arts, entertainment, recreation & other services (R,S,T and U)")).toBe("arts");
|
|
50
50
|
expect(bresSectorForLabel("Transport & storage (inc postal)")).toBe("transport");
|
|
51
51
|
});
|
|
52
|
+
it("maps every broad industrial group label Nomis NM_189_1 served in 2026", () => {
|
|
53
|
+
const labels = ["1 : Agriculture, forestry & fishing (A)", "2 : Mining, quarrying & utilities (B,D and E)", "3 : Manufacturing (C)",
|
|
54
|
+
"4 : Construction (F)", "5 : Motor trades (Part G)", "6 : Wholesale (Part G)", "7 : Retail (Part G)",
|
|
55
|
+
"8 : Transport & storage (inc postal) (H)", "9 : Accommodation & food services (I)", "10 : Information & communication (J)",
|
|
56
|
+
"11 : Financial & insurance (K)", "12 : Property (L)", "13 : Professional, scientific & technical (M)",
|
|
57
|
+
"14 : Business administration & support services (N)", "15 : Public administration & defence (O)", "16 : Education (P)",
|
|
58
|
+
"17 : Health (Q)", "18 : Arts, entertainment, recreation & other services (R,S,T and U)"];
|
|
59
|
+
expect(new Set(labels.map(bresSectorForLabel))).toEqual(new Set(Object.keys(BRES_SECTORS)));
|
|
60
|
+
});
|
|
52
61
|
it("treats 'and' like '&'", () => {
|
|
53
62
|
expect(bresSectorForLabel("Agriculture, forestry and fishing")).toBe("agriculture");
|
|
54
63
|
});
|
package/src/heMappings.ts
CHANGED
|
@@ -199,8 +199,10 @@ export const BRES_SECTORS: {[id: string]: string} = {
|
|
|
199
199
|
|
|
200
200
|
/**
|
|
201
201
|
* Resolve a Nomis BRES industry label to its sector id. Nomis prefixes the
|
|
202
|
-
* labels with a number
|
|
203
|
-
* edition may swap "&" for "and", so
|
|
202
|
+
* labels with a number and suffixes the SIC section letters ("8 : Transport
|
|
203
|
+
* & storage (inc postal) (H)"), and the edition may swap "&" for "and", so
|
|
204
|
+
* the match ignores all three. Only a trailing group of section letters is
|
|
205
|
+
* dropped, so "(inc postal)" still counts.
|
|
204
206
|
*
|
|
205
207
|
* @param {string} label the label as it appears in the CSV.
|
|
206
208
|
* @return {string|undefined} the sector id, or undefined.
|
|
@@ -208,7 +210,7 @@ export const BRES_SECTORS: {[id: string]: string} = {
|
|
|
208
210
|
export function bresSectorForLabel(label: string): string | undefined {
|
|
209
211
|
const norm = (s: string) => s.toLowerCase()
|
|
210
212
|
.replace(/^\s*\d+\s*:\s*/, "")
|
|
211
|
-
.replace(/\([a-
|
|
213
|
+
.replace(/\((part\s+)?[a-u](\s*(,|and|-)\s*[a-u])*\)\s*$/i, "")
|
|
212
214
|
.replace(/\band\b/g, "&")
|
|
213
215
|
.replace(/[^a-z&]+/g, "");
|
|
214
216
|
const target = norm(label);
|