UNPKG

@agencebio/rosetta-cultures

Version:

Traduction des codes cultures de la CPF vers la PAC vers des nomenclatures d'organismes de certification, et vice-versa.

170 lines (169 loc) 5.66 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.fromCepageCode = exports.fromCodeGeofolia = exports.fromCodeCpf = exports.fromCodePacAll = exports.fromCodePacFirst = exports.fromCodePacStrict = exports.attachPAC = exports.getCulturePAC = void 0; /** * Built with `npm run build` * * @type {{ * CPF: Array<CPFCulture>, * PAC: Array<PacCulture> * }} */ var cpf_json_1 = __importDefault(require("../data/cpf.json")); /** * @typedef {import('../index.js').Cepage} Cepage */ /** * Built with `npm run build` * * @type {Object.<String, Cepage>} */ var cepages_json_1 = __importDefault(require("../data/cepages.json")); /** * @typedef {import('../index.js').UnifiedCulture} UnifiedCulture * @typedef {import('../index.js').PacCulture} PacCulture * @typedef {import('../index.js').CPFCulture} CPFCulture */ function getCulturePAC(codePac, precisionPac) { if (precisionPac === void 0) { precisionPac = ''; } return cpf_json_1.default.PAC.find(function (_a) { var code = _a.code, precision = _a.precision; return code === codePac && precision === precisionPac; }); } exports.getCulturePAC = getCulturePAC; /** * @param {CPFCulture?} culture * @return {UnifiedCulture|undefined|null} */ function attachPAC(culture) { if (culture === null) return null; if (!culture) return; return __assign(__assign({}, culture), { cultures_pac: culture.cultures_pac.map(function (_a) { var codePac = _a[0], codePrecision = _a[1]; var culture_pac = getCulturePAC(codePac, codePrecision); if (!culture_pac) { throw new TypeError("Missing PAC culture ".concat(codePac, " with precision ").concat(codePrecision)); } return culture_pac; }) }); } exports.attachPAC = attachPAC; /** * @param {String} code * @param {String=} precision * @returns {?UnifiedCulture} */ function fromCodePacStrict(code, precision) { var _a; var allMatchs = fromCodePacAll(code, precision); var codes = allMatchs.map(function (_a) { var code_cpf = _a.code_cpf; return code_cpf; }); var commonPrefix = codes.reduce(function (acc, code) { var i = 0; while (code[i] === acc[i] && i < acc.length) { i++; } return code.slice(0, i); }, (_a = codes[0]) !== null && _a !== void 0 ? _a : '').replace(/\.$/, "").split("."); if (commonPrefix.length < 2) { return null; } var commonPrefixString = commonPrefix.join("."); return attachPAC(cpf_json_1.default.CPF.find(function (_a) { var code_cpf = _a.code_cpf; return code_cpf === commonPrefixString; })); } exports.fromCodePacStrict = fromCodePacStrict; /** * @param {String} code * @param {String=} precision * @returns {?UnifiedCulture} */ function fromCodePacFirst(code, precision) { return fromCodePacAll(code, precision)[0] || null; } exports.fromCodePacFirst = fromCodePacFirst; /** * Return all CPF codes associated to a given PAC code * * @param {String} code * @param {String=} precision * @returns {UnifiedCulture[]} */ function fromCodePacAll(code, precision) { if (precision === void 0) { precision = null; } if (precision) { var cleanedPrecision_1 = String(precision).padStart(3, '0'); var results = cpf_json_1.default.CPF.filter(function (_a) { var cultures_pac = _a.cultures_pac; return cultures_pac.some(function (_a) { var code_pac = _a[0], code_precision = _a[1]; return code_pac === code && code_precision === cleanedPrecision_1; }); }); if (results.length) { return results.map(attachPAC); } } // otherwise, and in any case, we lookup results without precision return cpf_json_1.default.CPF.filter(function (_a) { var cultures_pac = _a.cultures_pac; return cultures_pac.some(function (_a) { var code_pac = _a[0], code_precision = _a[1]; return code_pac === code && code_precision === ''; }); }).map(attachPAC); } exports.fromCodePacAll = fromCodePacAll; /** * @param {String} code * @returns {UnifiedCulture} */ function fromCodeCpf(code) { return attachPAC(cpf_json_1.default.CPF.find(function (_a) { var code_cpf = _a.code_cpf; return code_cpf === code; })); } exports.fromCodeCpf = fromCodeCpf; /** * @param {String} code * @returns {UnifiedCulture|null} */ function fromCodeGeofolia(code) { var _a; if (typeof code !== 'string') { return null; } var cleanCode = code.trim().replace(/\s+/g, ' '); return attachPAC((_a = cpf_json_1.default.CPF.find(function (_a) { var codes_geofolia = _a.codes_geofolia; return codes_geofolia.includes(cleanCode); })) !== null && _a !== void 0 ? _a : null); } exports.fromCodeGeofolia = fromCodeGeofolia; function fromCepageCode(code) { var _a; return (_a = cepages_json_1.default[String(code)]) !== null && _a !== void 0 ? _a : null; } exports.fromCepageCode = fromCepageCode;