node-iso11649
Advanced tools
Comparing version 2.0.2 to 2.1.0
# Changelog | ||
This project uses [Semantic Versioning](http://semver.org/) | ||
## 2.1.0 (2020-30-03) | ||
- [Add parse function](https://github.com/nruotsal/node-iso11649/pull/150) by [davidknezic](https://github.com/davidknezic) | ||
- [Add pretty print](https://github.com/nruotsal/node-iso11649/pull/149) by [davidknezic](https://github.com/davidknezic) | ||
## 2.0.2 (2020-28-03) | ||
@@ -5,0 +9,0 @@ - Remove unnecessary dependency |
@@ -5,2 +5,3 @@ 'use strict'; | ||
var REFERENCE_FORMAT = /^RF[0-9]{2}[0-9A-Z]+$/; | ||
var charTable = { | ||
@@ -24,2 +25,17 @@ A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, G: 16, | ||
}; | ||
var moveRfToEnd = function (reference) { | ||
return (reference.substr(4) + reference.substr(0, 4)).split(''); | ||
}; | ||
var isValidChecksum = function (reference) { | ||
var preResult = moveRfToEnd(reference).map(substituteCharWithNumber).join(''); | ||
return modulo97(preResult) === 1; | ||
}; | ||
var isValidFormat = function (reference) { | ||
return reference.match(REFERENCE_FORMAT) !== null; | ||
}; | ||
var isValid = function (reference) { | ||
return reference.length <= 25 && | ||
isValidFormat(reference) && | ||
isValidChecksum(reference); | ||
}; | ||
@@ -55,28 +71,45 @@ var ceil10 = function (num) { | ||
}; | ||
var generate = (function (reference) { | ||
var prettyFormatRFreference = function (reference) { | ||
return reference.replace(/(.{4})(?!$)/g, '$1 '); | ||
}; | ||
function generate(options) { | ||
var reference; | ||
var pretty = false; | ||
if (typeof options === 'string') { | ||
reference = options; | ||
} | ||
else if (typeof options === 'object') { | ||
reference = options.reference; | ||
pretty = options.pretty === true; | ||
} | ||
else { | ||
reference = undefined; | ||
} | ||
var normalizedReference = typeof reference === 'undefined' | ||
? generateFinnishReference() | ||
: normalizeReference(reference); | ||
return generateRFreference(normalizedReference); | ||
}); | ||
var rfReference = generateRFreference(normalizedReference); | ||
return pretty | ||
? prettyFormatRFreference(rfReference) | ||
: rfReference; | ||
} | ||
var REFERENCE_FORMAT = /^RF[0-9]{2}[0-9A-Z]+$/; | ||
var moveRfToEnd = function (reference) { | ||
return (reference.substr(4) + reference.substr(0, 4)).split(''); | ||
}; | ||
var isValidChecksum = function (reference) { | ||
var preResult = moveRfToEnd(reference).map(substituteCharWithNumber).join(''); | ||
return modulo97(preResult) === 1; | ||
}; | ||
var isValidFormat = function (reference) { | ||
return reference.match(REFERENCE_FORMAT) !== null; | ||
}; | ||
var validate = (function (reference) { | ||
var normalizedRef = normalizeReference(reference); | ||
return normalizedRef.length <= 25 && | ||
isValidFormat(normalizedRef) && | ||
isValidChecksum(normalizedRef); | ||
return isValid(normalizedRef); | ||
}); | ||
function removeRf(reference) { | ||
return reference.substr(4); | ||
} | ||
function parse(reference) { | ||
var normalizedRef = normalizeReference(reference); | ||
if (!isValid(normalizedRef)) { | ||
return null; | ||
} | ||
return removeRf(normalizedRef); | ||
} | ||
exports.generate = generate; | ||
exports.parse = parse; | ||
exports.validate = validate; |
@@ -1,4 +0,11 @@ | ||
declare const generate: (reference?: string) => string; | ||
declare const validate: (reference: string) => boolean; | ||
export interface GenerateOptions { | ||
reference?: string; | ||
pretty?: boolean; | ||
} | ||
export { generate, validate } | ||
declare function generate(reference?: string) => string; | ||
declare function generate(options: GenerateOptions) => string; | ||
declare function validate(reference: string) => boolean; | ||
declare const parse: (reference: string) => string | null; | ||
export { generate, validate, parse } |
{ | ||
"name": "node-iso11649", | ||
"version": "2.0.2", | ||
"version": "2.1.0", | ||
"description": "ISO 11649:2009 creditor reference library for node", | ||
@@ -41,3 +41,3 @@ "main": "dist/index.js", | ||
"eslint-config-standard-with-typescript": "15.0.1", | ||
"eslint-plugin-import": "2.20.1", | ||
"eslint-plugin-import": "2.20.2", | ||
"eslint-plugin-node": "11.1.0", | ||
@@ -48,3 +48,3 @@ "eslint-plugin-promise": "4.2.1", | ||
"faucet": "0.0.1", | ||
"rollup": "2.2.0", | ||
"rollup": "2.3.0", | ||
"rollup-plugin-typescript": "1.0.1", | ||
@@ -51,0 +51,0 @@ "tape": "4.13.2", |
@@ -43,2 +43,15 @@ node-iso11649 | ||
As creditor references are commonly displayed in groups of 4 characters | ||
you can use the optional `pretty` flag to format the returned value. | ||
``` | ||
import {generate} from 'node-iso11649' | ||
console.log(generate({ | ||
reference: '12345 12345', | ||
pretty: true | ||
})) | ||
// => RF45 1234 5123 45 | ||
``` | ||
### Validating RF creditor reference | ||
@@ -65,2 +78,23 @@ | ||
### Parsing RF creditor reference | ||
The reference part can be extracted from the RF creditor reference. | ||
This validates the entered RF creditor reference according to the | ||
'Validating RF creditor reference'. It returns the reference string | ||
if valid and null if invalid. | ||
``` | ||
import {parse} from 'node-iso11649' | ||
console.log(parse('RF47 1450 8655 4228 64')) | ||
// => 14508655422864 | ||
``` | ||
``` | ||
import {parse} from 'node-iso11649' | ||
console.log(parse('RF00TEST')) | ||
// => null | ||
``` | ||
## Tests | ||
@@ -67,0 +101,0 @@ |
10059
114
102