update build steps
This commit is contained in:
parent
0a205f5e8a
commit
f7dd41b765
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
/node_modules/
|
/node_modules/
|
||||||
|
/build/
|
||||||
|
37
Gulpfile.js
37
Gulpfile.js
@ -2,15 +2,17 @@ var gulp = require('gulp');
|
|||||||
var $ = require('gulp-load-plugins')({
|
var $ = require('gulp-load-plugins')({
|
||||||
scope: 'devDependencies'
|
scope: 'devDependencies'
|
||||||
});
|
});
|
||||||
var runSequence = require('run-sequence');
|
|
||||||
|
|
||||||
gulp.task('lint', function () {
|
var runSequence = require('run-sequence');
|
||||||
|
var del = require('del');
|
||||||
|
|
||||||
|
gulp.task('static-analysis:lint', function () {
|
||||||
gulp.src('src/**/*.js')
|
gulp.src('src/**/*.js')
|
||||||
.pipe($.jshint('.jshintrc'))
|
.pipe($.jshint('.jshintrc'))
|
||||||
.pipe($.jshint.reporter('jshint-stylish'));
|
.pipe($.jshint.reporter('jshint-stylish'));
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('cs', function () {
|
gulp.task('static-analysis:cs', function () {
|
||||||
return gulp.src('src/**/*.js')
|
return gulp.src('src/**/*.js')
|
||||||
.pipe($.jscs());
|
.pipe($.jscs());
|
||||||
});
|
});
|
||||||
@ -20,8 +22,22 @@ gulp.task('test', function () {
|
|||||||
.pipe($.mocha());
|
.pipe($.mocha());
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('minify', function () {
|
gulp.task('build:clean', function (callback) {
|
||||||
return gulp.src('src/*.js')
|
del(['build/**/*'], callback);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('build:copy-src-to-build', function () {
|
||||||
|
return gulp.src('src/**/*.js')
|
||||||
|
.pipe(gulp.dest('build'));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('build:copy-build-to-dist', function () {
|
||||||
|
return gulp.src('build/**/*.js')
|
||||||
|
.pipe(gulp.dest('dist'));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('build:minify', function () {
|
||||||
|
return gulp.src('build/**/*.js')
|
||||||
.pipe($.sourcemaps.init())
|
.pipe($.sourcemaps.init())
|
||||||
.pipe($.uglify())
|
.pipe($.uglify())
|
||||||
.pipe($.rename({
|
.pipe($.rename({
|
||||||
@ -33,12 +49,17 @@ gulp.task('minify', function () {
|
|||||||
|
|
||||||
gulp.task('build', function (callback) {
|
gulp.task('build', function (callback) {
|
||||||
runSequence(
|
runSequence(
|
||||||
['lint', 'cs', 'test'],
|
['static-analysis:lint', 'static-analysis:cs', 'test'],
|
||||||
'minify',
|
'build:clean',
|
||||||
|
'build:copy-src-to-build',
|
||||||
|
'build:copy-build-to-dist',
|
||||||
|
'build:minify',
|
||||||
callback
|
callback
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('ci', ['lint', 'cs', 'test']);
|
gulp.task('sa', ['static-analysis:lint', 'static-analysis:cs']);
|
||||||
|
|
||||||
|
gulp.task('ci', ['static-analysis:lint', 'static-analysis:cs', 'test']);
|
||||||
|
|
||||||
gulp.task('default', ['build']);
|
gulp.task('default', ['build']);
|
||||||
|
11
bower.json
11
bower.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "timestring",
|
"name": "timestring",
|
||||||
"main": "timestring.js",
|
"main": "dist/timestring.js",
|
||||||
"version": "1.1.0",
|
"version": "2.0.0",
|
||||||
"description": "Parse a human readable time string into a time based value",
|
"description": "Parse a human readable time string into a time based value",
|
||||||
"homepage": "https://github.com/mike182uk/timestring",
|
"homepage": "https://github.com/mike182uk/timestring",
|
||||||
"authors": [
|
"authors": [
|
||||||
@ -10,11 +10,12 @@
|
|||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"ignore": [
|
"ignore": [
|
||||||
"**/.*",
|
"**/.*",
|
||||||
|
"node_modules",
|
||||||
|
"test",
|
||||||
"CHANGELOG.md",
|
"CHANGELOG.md",
|
||||||
"Gulpfile.js",
|
|
||||||
"LICENSE",
|
"LICENSE",
|
||||||
"README.md",
|
"README.md",
|
||||||
"node_modules",
|
"Gulpfile.js",
|
||||||
"test"
|
"package.json"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
112
dist/timestring.js
vendored
Normal file
112
dist/timestring.js
vendored
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
(function(){
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var Timestring = function(settings) {
|
||||||
|
// default settings
|
||||||
|
var defaults = {
|
||||||
|
hoursPerDay: 24,
|
||||||
|
daysPerWeek: 7,
|
||||||
|
weeksPerMonth: 4,
|
||||||
|
monthsPerYear: 12
|
||||||
|
};
|
||||||
|
|
||||||
|
// merge default settings with user settings
|
||||||
|
settings = settings || {};
|
||||||
|
this.settings = defaults;
|
||||||
|
for (var s in settings) { this.settings[s] = settings[s]; }
|
||||||
|
|
||||||
|
// time units
|
||||||
|
this.units = {
|
||||||
|
s: ['s', 'sec', 'secs', 'second', 'seconds'],
|
||||||
|
m: ['m', 'min', 'mins', 'minute', 'minutes'],
|
||||||
|
h: ['h', 'hr', 'hrs', 'hour', 'hours'],
|
||||||
|
d: ['d', 'day', 'days'],
|
||||||
|
w: ['w', 'week', 'weeks'],
|
||||||
|
mth: ['mth', 'mths','month', 'months'],
|
||||||
|
y: ['y', 'yr', 'yrs', 'year', 'years']
|
||||||
|
};
|
||||||
|
|
||||||
|
// time unit seconds mappings
|
||||||
|
this.unitValues = {
|
||||||
|
s: 1,
|
||||||
|
m: 60,
|
||||||
|
h: 3600
|
||||||
|
};
|
||||||
|
|
||||||
|
// dynamic time unit seconds mappings
|
||||||
|
// these are dynamic based on the settings
|
||||||
|
this.unitValues.d = this.settings.hoursPerDay * this.unitValues.h;
|
||||||
|
this.unitValues.w = this.settings.daysPerWeek * this.unitValues.d;
|
||||||
|
this.unitValues.mth = this.settings.weeksPerMonth * this.unitValues.w;
|
||||||
|
this.unitValues.y = this.settings.monthsPerYear * this.unitValues.mth;
|
||||||
|
};
|
||||||
|
|
||||||
|
Timestring.prototype.parse = function(string, returnUnit) {
|
||||||
|
// reference to this
|
||||||
|
var that = this;
|
||||||
|
|
||||||
|
// get unit key helper
|
||||||
|
function getUnitKey(unit) {
|
||||||
|
for (var k in that.units) {
|
||||||
|
for (var u in that.units[k]) {
|
||||||
|
if (unit === that.units[k][u]) {
|
||||||
|
return k;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// throw error if invalid unit was passed
|
||||||
|
throw new Error('The unit [' + unit + '] is not supported by timestring');
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert a value to a specific unit
|
||||||
|
function convert(value, unit) {
|
||||||
|
var baseValue = that.unitValues[getUnitKey(unit)];
|
||||||
|
|
||||||
|
return value / baseValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get a value in seconds based on a specific unit
|
||||||
|
function getSeconds(value, unit) {
|
||||||
|
var baseValue = that.unitValues[getUnitKey(unit)];
|
||||||
|
|
||||||
|
return value * baseValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// seconds counter
|
||||||
|
var totalSeconds = 0;
|
||||||
|
|
||||||
|
// split string into groups and get total seconds for each group
|
||||||
|
var groups = string
|
||||||
|
.toLowerCase() // convert words to lower case
|
||||||
|
.replace(/[^\.\w+-]+/g, '') // remove white space
|
||||||
|
.match(/[-+]?[0-9]+[a-z]+/g); // match time groups (digit followed by time unit - i.e 5d 15m = 2 time groups)
|
||||||
|
|
||||||
|
if (groups !== null) {
|
||||||
|
for(var i = 0; i < groups.length; i++) {
|
||||||
|
var g = groups[i];
|
||||||
|
var value = g.match(/[0-9]+/g)[0];
|
||||||
|
var unit = g.match(/[a-z]+/g)[0];
|
||||||
|
|
||||||
|
totalSeconds += getSeconds(value, unit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// return total, convert if needed
|
||||||
|
return (returnUnit) ? convert(totalSeconds, returnUnit) : totalSeconds;
|
||||||
|
};
|
||||||
|
|
||||||
|
// add convenience method to string prototype
|
||||||
|
String.prototype.parseTime = function (unit, settings) {
|
||||||
|
return (new Timestring(settings)).parse(this, unit);
|
||||||
|
};
|
||||||
|
|
||||||
|
// export Timestring object
|
||||||
|
if (typeof module !== 'undefined' && module.exports) {
|
||||||
|
module.exports = Timestring;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.Timestring = Timestring;
|
||||||
|
}
|
||||||
|
|
||||||
|
}).call(this);
|
@ -7,10 +7,11 @@
|
|||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git://github.com/mike182uk/timestring.git"
|
"url": "git://github.com/mike182uk/timestring.git"
|
||||||
},
|
},
|
||||||
"main": "timestring.js",
|
"main": "dist/timestring.js",
|
||||||
"version": "1.1.0",
|
"version": "2.0.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"chai": "^2.3.0",
|
"chai": "^2.3.0",
|
||||||
|
"del": "^1.1.1",
|
||||||
"gulp": "^3.8.11",
|
"gulp": "^3.8.11",
|
||||||
"gulp-jscs": "^1.6.0",
|
"gulp-jscs": "^1.6.0",
|
||||||
"gulp-jshint": "^1.10.0",
|
"gulp-jshint": "^1.10.0",
|
||||||
|
Loading…
Reference in New Issue
Block a user