🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Book a DemoInstallSign in
Socket

parse-xsd-duration

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

parse-xsd-duration - npm Package Compare versions

Comparing version

to
0.2.0

85

dist/index.js
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define('parseXsdDuration', ['module', 'exports'], factory);
define('parseXsdDuration', ['exports'], factory);
} else if (typeof exports !== "undefined") {
factory(module, exports);
factory(exports);
} else {

@@ -10,6 +10,6 @@ var mod = {

};
factory(mod, mod.exports);
factory(mod.exports);
global.parseXsdDuration = mod.exports;
}
})(this, function (module, exports) {
})(this, function (exports) {
'use strict';

@@ -20,2 +20,5 @@

});
var _emptyPeriod, _emptyTime;
var UNITS = {

@@ -30,2 +33,14 @@ YEAR: 31536000,

var YEAR_UNIT = 'years';
var MONTH_UNIT = 'months';
var DAY_UNIT = 'days';
var HOUR_UNIT = 'hours';
var MINUTE_UNIT = 'minutes';
var SECOND_UNIT = 'seconds';
var IS_NEGATIVE_UNIT = 'isNegative';
var emptyPeriod = (_emptyPeriod = {}, _emptyPeriod[YEAR_UNIT] = 0, _emptyPeriod[MONTH_UNIT] = 0, _emptyPeriod[DAY_UNIT] = 0, _emptyPeriod);
var emptyTime = (_emptyTime = {}, _emptyTime[HOUR_UNIT] = 0, _emptyTime[MINUTE_UNIT] = 0, _emptyTime[SECOND_UNIT] = 0, _emptyTime);
// Regex taken from https://www.w3.org/TR/xmlschema11-2/#duration-lexical-space

@@ -50,5 +65,10 @@ var isValidXsdDuration = function isValidXsdDuration(str) {

var parseUnit = function parseUnit(unit, amount) {
var amt = getNumber(amount);
return unitToSeconds(unit, amt);
};
var getNumber = function getNumber(amount) {
var amt = parseFloat(amount);
if (isNaN(amt)) return 0;
return unitToSeconds(unit, amt);
return amt;
};

@@ -65,7 +85,18 @@

var parsePeriodToObject = function parsePeriodToObject(period) {
var _ref3;
var _ref2 = /^(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)D)?$/g.exec(period) || [],
years = _ref2[1],
months = _ref2[2],
days = _ref2[3];
return _ref3 = {}, _ref3[YEAR_UNIT] = getNumber(years), _ref3[MONTH_UNIT] = getNumber(months), _ref3[DAY_UNIT] = getNumber(days), _ref3;
};
var parseTime = function parseTime(time) {
var _ref2 = /^(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?$/g.exec(time) || [],
hour = _ref2[1],
minute = _ref2[2],
second = _ref2[3];
var _ref4 = /^(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?$/g.exec(time) || [],
hour = _ref4[1],
minute = _ref4[2],
second = _ref4[3];

@@ -75,2 +106,13 @@ return parseUnit('hour', hour) + parseUnit('minute', minute) + parseUnit('second', second);

var parseTimeToObject = function parseTimeToObject(time) {
var _ref6;
var _ref5 = /^(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?$/g.exec(time) || [],
hours = _ref5[1],
minutes = _ref5[2],
seconds = _ref5[3];
return _ref6 = {}, _ref6[HOUR_UNIT] = getNumber(hours), _ref6[MINUTE_UNIT] = getNumber(minutes), _ref6[SECOND_UNIT] = getNumber(seconds), _ref6;
};
var parse = function parse(str) {

@@ -89,3 +131,20 @@ var neg = isNegative(str);

exports.default = function (input) {
var convertToObject = exports.convertToObject = function convertToObject(str) {
var _output;
var neg = isNegative(str);
var duration = neg ? stripFirstChar(str) : str;
var splitDuration = duration.split('T');
var period = stripFirstChar(splitDuration[0]);
var time = splitDuration[1];
var output = (_output = {}, _output[IS_NEGATIVE_UNIT] = neg, _output);
output = isNonEmptyString(period) ? Object.assign(output, parsePeriodToObject(period)) : Object.assign(output, emptyPeriod);
output = isNonEmptyString(time) ? Object.assign(output, parseTimeToObject(time)) : Object.assign(output, emptyTime);
return output;
};
var out = function out(input) {
var toObject = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
// Throw error for non-string input

@@ -98,7 +157,9 @@ if (typeof input !== 'string') {

// Parse valid input
return parse(input);
return toObject ? convertToObject(input) : parse(input);
};
module.exports = exports['default'];
exports.default = function (input, toObject) {
return out(input, toObject);
};
});
//# sourceMappingURL=index.js.map

9

package.json
{
"name": "parse-xsd-duration",
"version": "0.1.0",
"version": "0.2.0",
"description": "Parse XSD durations to seconds",

@@ -26,3 +26,4 @@ "main": "dist/index.js",

"test": "ava",
"lint": "eslint src"
"lint": "eslint src",
"fmt": "prettier --write \"**/*.{js,json,yml,yaml}\""
},

@@ -51,3 +52,2 @@ "files": [

"babel-preset-env": "^1.3.3",
"big-list-of-naughty-strings": "^1.0.0",
"eslint": "^3.19.0",

@@ -60,4 +60,5 @@ "eslint-config-standard": "^10.2.0",

"eslint-watch": "^3.0.1",
"npm-run-all": "^4.0.2"
"npm-run-all": "^4.0.2",
"prettier": "^1.14.2"
}
}

@@ -1,3 +0,3 @@

# parse-xsd-duration [![Version](https://img.shields.io/npm/v/parse-xsd-duration.svg)][npm]
Parse XSD durations to seconds
# parse-xsd-duration [![Version](https://img.shields.io/npm/v/parse-xsd-duration.svg)][npm] [![Build Status](https://travis-ci.com/mickdekkers/parse-xsd-duration.svg?branch=master)](https://travis-ci.com/mickdekkers/parse-xsd-duration)
Parse XSD durations to seconds (by default) or to object

@@ -10,3 +10,3 @@ ## Installation

Note: this package has zero dependencies and is provided in [UMD format][umd] so you can easily use it in the browser.
This package has zero dependencies and is provided in [UMD format][umd] so you can easily use it in the browser.

@@ -26,2 +26,11 @@ ## Usage

// => 37070430.123
pxd('PT2M10S', true)
// => { years: 0, months: 0, days: 0, hours: 0, minutes: 2, seconds: 10, isNegative: 0 }
pxd('P2Y6M5DT12H35M30S', true)
// => { years: 2, months: 6, days: 5, hours: 12, minutes: 35, seconds: 30, isNegative: 0 }
pxd('P1Y2M3DT5H20M30.123S', true)
// => { years: 1, months: 2, days: 3, hours: 5, minutes: 20, seconds: 30.123, isNegative: 0 }
```

@@ -31,5 +40,5 @@

### `parse-xsd-duration(xsdDuration: string): number | null`
### `parseXsdDuration(xsdDuration: string, toObject: boolean): number | object | null`
- Converts an XSD duration string to seconds.
- Converts an XSD duration string to seconds by default or to object with parameter `toObject` = `true`.
- If the string is not a valid XSD duration, it will return `null`.

@@ -42,4 +51,4 @@ - If the input is not a string, it will throw a `TypeError`.

[npm]: https://www.npmjs.com/package/vue-howler
[npm]: https://www.npmjs.com/package/parse-xsd-duration
[umd]: https://github.com/umdjs/umd
[mickdekkers-gh]: https://github.com/soullesswaffle
[mickdekkers-gh]: https://github.com/mickdekkers

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet