New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dateable

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dateable - npm Package Compare versions

Comparing version 0.3.1 to 1.0.1

component.json

124

index.js

@@ -1,10 +0,7 @@

var fs = require('fs')
, langs = require('./lang')
/**
* Set default language
*/
// Set the default language
var lang = langs['en-us'];
var lang = require('./lang/en-us');
// RegExp to tokenize a format string
var TOKENS = /Y{2,4}|[Md]{1,4}|[DHhms]{1,2}|[Aa]|"[^"]*"|'[^']*'/g;
/**

@@ -21,5 +18,6 @@ * Format date

var date = toObject(date);
var re = /Y{2,4}|[Md]{1,4}|[DHhms]{1,2}|[Aa]|"[^"]*"|'[^']*'/g;
format = formats[format] || format;
return format.replace(TOKENS, function (part) {
return format.replace(re, function (part) {
switch (part) {

@@ -70,6 +68,12 @@ case 'YYYY':

// Backwards compatibility
/**
* Alias formatter
*/
dateable.format = dateable;
// Available units
/**
* Units
*/
var units = dateable.units = {

@@ -85,3 +89,7 @@ years : 31536000000

// Stored formats
/**
* Stored formats
*/
var formats = dateable.formats = {};

@@ -92,24 +100,23 @@

*
* @param {String|Object} language
* @param {String|Object} name
* @api public
*/
dateable.language = function (language) {
if (typeof language !== 'string') {
lang = language;
} else if (langs[language]) {
lang = langs[language];
dateable.language = function (name) {
// object
if (typeof name != 'string') {
lang = name;
return;
}
return this;
// string
try {
lang = require('./lang/' + name);
} catch (e) {
throw new Error('language does not exist');
}
};
// Backwards compatibility
dateable.setLang = dateable.language;
// Tokenizer for a formatted date
var TOKENIZER = /Y{2,4}|[Md]{1,4}|[DHhms]{1,2}|[Aa]/g ;
/**
* Parse string from format to date
* Parse a date string
*

@@ -123,7 +130,9 @@ * @param {String} string

dateable.parse = function (string, format) {
var offset = 0
, parts = {}
, token;
var re = /Y{2,4}|[Md]{1,4}|[DHhms]{1,2}|[Aa]/g;
var offset = 0;
var parts = {};
var token;
format = formats[format] || format;
// Strip the string from the escaped parts of the format

@@ -137,6 +146,6 @@ format = format.replace(/"[^"]*"|'[^']*'/g, function (str) {

while (token = TOKENIZER.exec(format)) {
while (token = re.exec(format)) {
var index = token.index + offset
, tokenLength = token[0].length
, part = string.substr(index, tokenLength);
var tokenLength = token[0].length
var part = string.substr(index, tokenLength);

@@ -155,5 +164,3 @@ index += tokenLength - 1;

while (++index < stringLength) {
if (!(/\d|\w/).test(string[index]))
break;
if (!(/\d|\w/).test(string[index])) break;
part += string[index];

@@ -164,6 +171,7 @@ }

if (/[Md]{3,4}/.test(token[0]))
if (/[Md]{3,4}/.test(token[0])) {
part = lang[token[0]].indexOf(part);
else if (token[0][0] === 'M')
} else if (token[0][0] === 'M') {
part--;
}

@@ -186,4 +194,5 @@ parts[token[0][0]] = part;

dateable.when = function (date, unit) {
var diff = date.valueOf() - Date.now()
, time = 'present'
var now = new Date();
var diff = date.valueOf() - now.valueOf();
var time = 'present';

@@ -193,4 +202,5 @@ unit = unit || determineUnit(diff);

if (diff !== 0)
if (diff !== 0) {
time = diff < 0 ? 'past' : 'future';
}

@@ -214,3 +224,3 @@ diff = Math.abs(diff);

var diff = start.valueOf() - end.valueOf()
, unit = unit || determineUnit(diff)
var unit = unit || determineUnit(diff)

@@ -271,2 +281,3 @@ diff = Math.abs(Math.round(diff / units[unit]))

* Format string
*
* @param {String} str

@@ -280,5 +291,3 @@ * @return {String}

return str.replace(/(%[djs])/g, function (match) {
return args.length
? args.shift()
: match;
return args.length ? args.shift() : match;
});

@@ -296,4 +305,4 @@ }

function toDate (obj) {
var date = new Date(0)
, abbr = obj.a || obj.A
var date = new Date(0);
var abbr = obj.a || obj.A;

@@ -303,5 +312,5 @@ // Handle AM/PM

abbr = abbr.toLowerCase();
if (abbr == 'pm' && obj.H < 12)
if (abbr == 'pm' && obj.H < 12) {
obj.h = obj.H + 12;
}
}

@@ -311,6 +320,7 @@

if (obj.Y && obj.Y.length == 2) {
if (parseInt(obj.Y, 10) > 50)
if (parseInt(obj.Y, 10) > 50) {
obj.Y = '19' + obj.Y;
else
} else {
obj.Y = '20' + obj.Y;
}
}

@@ -338,9 +348,9 @@

var obj = {
Y: date.getFullYear()
, M: date.getMonth()
, D: date.getDate()
, d: date.getDay()
, h: date.getHours()
, m: date.getMinutes()
, s: date.getSeconds()
Y: date.getFullYear(),
M: date.getMonth(),
D: date.getDate(),
d: date.getDay(),
h: date.getHours(),
m: date.getMinutes(),
s: date.getSeconds()
};

@@ -347,0 +357,0 @@

{
"name": "dateable",
"description": "A date formatter and parser for node",
"version": "0.3.1",
"author": "Eivind Fjeldstad",
"repository": {
"type": "git",
"url": "git://github.com/eivindfjeldstad/dateable.git"
},
"keywords": ["date","dates","parser","parsing","format","formatter"],
"scirpts": {
"test": "node test"
}
"name": "dateable",
"description": "A date formatter and parser for node",
"version": "1.0.1",
"author": "Eivind Fjeldstad",
"repository": {
"type": "git",
"url": "git://github.com/eivindfjeldstad/dateable.git"
},
"keywords": ["date","dates","parser","parsing","format","formatter"],
"scirpts": {
"test": "node test"
}
}

@@ -1,5 +0,6 @@

[![build status](https://secure.travis-ci.org/eivindfjeldstad/dateable.png)](http://travis-ci.org/eivindfjeldstad/dateable)
# dateable
A small library that provides a few very useful methods for displaying dates, including a formatter and a parser.
[![build status](https://secure.travis-ci.org/eivindfjeldstad/dateable.png)](http://travis-ci.org/eivindfjeldstad/dateable)
## Install

@@ -47,12 +48,12 @@ $ npm install dateable

### dateable#parse(date, format)
### .parse(date, format)
Return original date from format
### dateable#when(date, [unit])
### .when(date, [unit])
Returns relative date
### dateable#diff(start, end, [unit])
### .diff(start, end, [unit])
Returns the difference between the two dates
### dateable#language(language)
### .language(name)
Set language

@@ -59,0 +60,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc