diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/app.js b/app.js new file mode 100644 index 0000000..e421c6d --- /dev/null +++ b/app.js @@ -0,0 +1,46 @@ +var express = require('express'); +var path = require('path'); +var favicon = require('serve-favicon'); +var logger = require('morgan'); +var cookieParser = require('cookie-parser'); +var bodyParser = require('body-parser'); + +var index = require('./routes/index'); +var users = require('./routes/users'); + +var app = express(); + +// view engine setup +app.set('views', path.join(__dirname, 'views')); +app.set('view engine', 'pug'); + +// uncomment after placing your favicon in /public +//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); +app.use(logger('dev')); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({ extended: false })); +app.use(cookieParser()); +app.use(express.static(path.join(__dirname, 'public'))); + +app.use('/', index); +app.use('/users', users); + +// catch 404 and forward to error handler +app.use(function(req, res, next) { + var err = new Error('Not Found'); + err.status = 404; + next(err); +}); + +// error handler +app.use(function(err, req, res, next) { + // set locals, only providing error in development + res.locals.message = err.message; + res.locals.error = req.app.get('env') === 'development' ? err : {}; + + // render the error page + res.status(err.status || 500); + res.render('error'); +}); + +module.exports = app; diff --git a/bin/www b/bin/www new file mode 100755 index 0000000..792fcd9 --- /dev/null +++ b/bin/www @@ -0,0 +1,90 @@ +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var app = require('../app'); +var debug = require('debug')('npm-modules:server'); +var http = require('http'); + +/** + * Get port from environment and store in Express. + */ + +var port = normalizePort(process.env.PORT || '3000'); +app.set('port', port); + +/** + * Create HTTP server. + */ + +var server = http.createServer(app); + +/** + * Listen on provided port, on all network interfaces. + */ + +server.listen(port); +server.on('error', onError); +server.on('listening', onListening); + +/** + * Normalize a port into a number, string, or false. + */ + +function normalizePort(val) { + var port = parseInt(val, 10); + + if (isNaN(port)) { + // named pipe + return val; + } + + if (port >= 0) { + // port number + return port; + } + + return false; +} + +/** + * Event listener for HTTP server "error" event. + */ + +function onError(error) { + if (error.syscall !== 'listen') { + throw error; + } + + var bind = typeof port === 'string' + ? 'Pipe ' + port + : 'Port ' + port; + + // handle specific listen errors with friendly messages + switch (error.code) { + case 'EACCES': + console.error(bind + ' requires elevated privileges'); + process.exit(1); + break; + case 'EADDRINUSE': + console.error(bind + ' is already in use'); + process.exit(1); + break; + default: + throw error; + } +} + +/** + * Event listener for HTTP server "listening" event. + */ + +function onListening() { + var addr = server.address(); + var bind = typeof addr === 'string' + ? 'pipe ' + addr + : 'port ' + addr.port; + debug('Listening on ' + bind); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..79fef7c --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "npm-modules", + "version": "0.0.0", + "private": true, + "scripts": { + "start": "node ./bin/www", + "test": "mocha" + }, + "dependencies": { + "body-parser": "~1.16.0", + "chai": "^3.5.0", + "cookie-parser": "~1.4.3", + "debug": "~2.6.0", + "express": "~4.14.1", + "mocha": "^3.2.0", + "morgan": "~1.7.0", + "pug": "latest", + "serve-favicon": "~2.3.2" + } +} diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..684809f --- /dev/null +++ b/public/index.html @@ -0,0 +1,5 @@ + + This is only a Test + + + diff --git a/public/javascripts/index.js b/public/javascripts/index.js new file mode 100644 index 0000000..e69de29 diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css new file mode 100644 index 0000000..9453385 --- /dev/null +++ b/public/stylesheets/style.css @@ -0,0 +1,8 @@ +body { + padding: 50px; + font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; +} + +a { + color: #00B7FF; +} diff --git a/routes/index.js b/routes/index.js new file mode 100644 index 0000000..6d46aa7 --- /dev/null +++ b/routes/index.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET home page. */ +router.get('/', function(req, res, next) { + res.render('index', { title: 'NPM Modules for JS' }); +}); + +module.exports = router; diff --git a/routes/users.js b/routes/users.js new file mode 100644 index 0000000..623e430 --- /dev/null +++ b/routes/users.js @@ -0,0 +1,9 @@ +var express = require('express'); +var router = express.Router(); + +/* GET users listing. */ +router.get('/', function(req, res, next) { + res.send('respond with a resource'); +}); + +module.exports = router; diff --git a/spec/add.js b/spec/add.js new file mode 100644 index 0000000..704c068 --- /dev/null +++ b/spec/add.js @@ -0,0 +1,3 @@ +module.exports = function (num1,num2){ + return (num1 + num2) +} diff --git a/spec/camelcase.js b/spec/camelcase.js new file mode 100644 index 0000000..1d14b97 --- /dev/null +++ b/spec/camelcase.js @@ -0,0 +1,6 @@ +module.exports =function ( str ) { + function upperCase(match) { + return match.toUpperCase() + } + return str.replace(/\b[a-z]/g, upperCase).replace(/\s/g, '') +} diff --git a/spec/ceil.js b/spec/ceil.js new file mode 100644 index 0000000..5f4110b --- /dev/null +++ b/spec/ceil.js @@ -0,0 +1,3 @@ +module.exports = function (num1){ + return Math.ceil(num1) +} diff --git a/spec/chunk.js b/spec/chunk.js new file mode 100644 index 0000000..1e5e411 --- /dev/null +++ b/spec/chunk.js @@ -0,0 +1,19 @@ +module.exports = function (list, size=2) { + + if (list.isArray){ + return [] + } + var newList = [] + for(var i = 0; i < list.length ; i+=size) { + var subArray = [] + for(var j = 0; j < size ; j++) { + if (list[i+j]) { + subArray.push(list[i+j]) + } + + } + newList.push(subArray) + } + + return newList +} diff --git a/spec/divide.js b/spec/divide.js new file mode 100644 index 0000000..f80b510 --- /dev/null +++ b/spec/divide.js @@ -0,0 +1,4 @@ +module.exports = function(num1 , num2){ + // 1.5){ + return (num1 / num2) +} diff --git a/spec/join.js b/spec/join.js new file mode 100644 index 0000000..79330ea --- /dev/null +++ b/spec/join.js @@ -0,0 +1,7 @@ +// module.exports = function (array) { +// for (i = 0; i < array.length; i++) { +// +// +// } +// return array.filter(/\s/g,'~') +// } diff --git a/spec/min.js b/spec/min.js new file mode 100644 index 0000000..f6bedca --- /dev/null +++ b/spec/min.js @@ -0,0 +1,6 @@ +module.exports = function min( inputArray ) { + + return Math.min.apply(null, inputArray) + + +} diff --git a/spec/multiply.js b/spec/multiply.js new file mode 100644 index 0000000..d1624e2 --- /dev/null +++ b/spec/multiply.js @@ -0,0 +1,3 @@ +module.exports = function (num1,num2){ + return (num1 * num2) +} diff --git a/spec/random.js b/spec/random.js new file mode 100644 index 0000000..358b87b --- /dev/null +++ b/spec/random.js @@ -0,0 +1,6 @@ +// module.exports = function(myArray) { +// function(){ +// var result = myArray[Math.floor(Math.random() * myArray.length)] +// return result +// } +// } diff --git a/spec/repeat.js b/spec/repeat.js new file mode 100644 index 0000000..61d32ac --- /dev/null +++ b/spec/repeat.js @@ -0,0 +1,7 @@ +module.exports = function (str, n){ + var utilities = { + repeat: function(str, n) { + return (new Array(n + 1)).join(str); + } + } +} diff --git a/spec/replace.js b/spec/replace.js new file mode 100644 index 0000000..696f783 --- /dev/null +++ b/spec/replace.js @@ -0,0 +1,3 @@ +module.exports = function (sentence, word1, word2){ + return sentence.replace(word1, word2) +} diff --git a/spec/reversearray.js b/spec/reversearray.js new file mode 100644 index 0000000..7add60a --- /dev/null +++ b/spec/reversearray.js @@ -0,0 +1,3 @@ +module.exports = function reversearray( array ) { + return array.reverse() +} diff --git a/spec/subtract.js b/spec/subtract.js new file mode 100644 index 0000000..e632fdc --- /dev/null +++ b/spec/subtract.js @@ -0,0 +1,3 @@ +module.exports = function (num1,num2){ + return (num1 - num2) +} diff --git a/spec/uppercase.js b/spec/uppercase.js new file mode 100644 index 0000000..4b0e036 --- /dev/null +++ b/spec/uppercase.js @@ -0,0 +1,3 @@ +module.exports = function uppercase( anyString ) { + return anyString.toUpperCase() + } diff --git a/spec/upperfirst.js b/spec/upperfirst.js new file mode 100644 index 0000000..da608d4 --- /dev/null +++ b/spec/upperfirst.js @@ -0,0 +1,6 @@ +module.exports = function upperfirst( str ) { + function substr(match) { + return match.toUpperCase() + } + return str.replace(/\b[a-z]/g, substr) + } diff --git a/test/add.test.js b/test/add.test.js new file mode 100644 index 0000000..fe9039d --- /dev/null +++ b/test/add.test.js @@ -0,0 +1,8 @@ +var {expect} = require("chai") +var add = require("../spec/add") + +describe("add", function() { + it("should add two numbers", function(){ + expect(add( 1 , 2 )).to.eql(3) + }) +}) diff --git a/test/camelcase.test.js b/test/camelcase.test.js new file mode 100644 index 0000000..bd5d556 --- /dev/null +++ b/test/camelcase.test.js @@ -0,0 +1,9 @@ +var {expect} = require("chai") +var camelcase = require('../spec/camelcase') +var str = "This Should Be Camelized" + +describe("camelcase", function() { + it("should camelize any sentence", function() { + expect(camelcase(str)).to.equal("ThisShouldBeCamelized") + }) +}) diff --git a/test/ceil.test.js b/test/ceil.test.js new file mode 100644 index 0000000..83ed706 --- /dev/null +++ b/test/ceil.test.js @@ -0,0 +1,8 @@ +var {expect} = require("chai") +var ceil = require('../spec/ceil') + +describe("ceil", function() { + it("should compute number rounded up to precision", function() { + expect(ceil(3.2)).to.eql(4) + }) +}) diff --git a/test/chunk.test.js b/test/chunk.test.js new file mode 100644 index 0000000..7170c96 --- /dev/null +++ b/test/chunk.test.js @@ -0,0 +1,11 @@ +var {expect} = require("chai") +var chunk = require("../spec/chunk") // change spec and also folder +// name from spec to source + +describe("chunk", function() { + it("should split array into chunks according to selected size", function() { + expect(chunk([1 , 2, 3, 4, 5], 3)).to.eql([[1 , 2 , 3],[4 , 5]]) + }) +}) +// Nest a for loop create variable for new array +//iterate through the new array to handle chunk size diff --git a/test/divide.test.js b/test/divide.test.js new file mode 100644 index 0000000..4cb89b2 --- /dev/null +++ b/test/divide.test.js @@ -0,0 +1,8 @@ +var {expect} = require("chai") +var divide = require('../spec/divide') + +describe("divide", function() { + it("should divide num1 by num2", function() { + expect(divide( 1 , 2 )).to.eql(.5) + }) +}) diff --git a/test/join.test.js b/test/join.test.js new file mode 100644 index 0000000..9a0d86d --- /dev/null +++ b/test/join.test.js @@ -0,0 +1,9 @@ +// var {expect} = require("chai") +// var join = require('../spec/join') +// var array = ['this' , 'should' , 'be' , 'easy'] +// +// describe("join", function() { +// it("should convert all elements into string with designated separator", function() { +// expect(join(array)).to.equal('this~should~be~easy') +// }) +// }) diff --git a/test/min.test.js b/test/min.test.js new file mode 100644 index 0000000..c5b4591 --- /dev/null +++ b/test/min.test.js @@ -0,0 +1,8 @@ +var {expect} = require("chai") +var min = require('../spec/min') + +describe("min", function() { + it("should display the lowest number in an array", function() { + expect(min([4, 1, 2, 3])).to.eql(1) + }) +}) diff --git a/test/multiply.test.js b/test/multiply.test.js new file mode 100644 index 0000000..1816816 --- /dev/null +++ b/test/multiply.test.js @@ -0,0 +1,8 @@ +var {expect} = require("chai") +var multiply = require("../spec/multiply") + +describe("multiply", function() { + it("should multiply num1 by num2", function() { + expect(multiply( 3 , 2 )).to.eql(6) + }) +}) diff --git a/test/random.test.js b/test/random.test.js new file mode 100644 index 0000000..880d8ab --- /dev/null +++ b/test/random.test.js @@ -0,0 +1,10 @@ +// var {expect} = require("chai") +// var random = require('../spec/random') +// +// var myArray = ['this','is','hard'] +// +// describe("random", function() { +// it("should find a random element in an array", function() { +// expect(random(myArray)).to.equal(result) +// }) +// }) diff --git a/test/repeat.test.js b/test/repeat.test.js new file mode 100644 index 0000000..3e0479c --- /dev/null +++ b/test/repeat.test.js @@ -0,0 +1,13 @@ +// var {expect} = require("chai") +// var repeat = require('../spec/repeat') +// +// var str = 'cash' +// var n = 5 +// +// +// +// describe("repeat", function() { +// it("should repeat the given string n times", function() { +// expect(repeat(str, n)).to.equal('cashcashcashcashcash') +// }) +// }) diff --git a/test/replace.test.js b/test/replace.test.js new file mode 100644 index 0000000..96087d6 --- /dev/null +++ b/test/replace.test.js @@ -0,0 +1,20 @@ +var {expect} = require("chai") +var replace = require('../spec/replace') +var sentence = 'We are at the ship yard' +var word1 = "ship" +var word2 = "house" +// var str = "Mr Blue has a blue house and a blue car"; +// var res = str.replace(/blue/g, "red"); + + describe("replace", function() { + it("should replace one word for another", function() { + expect(replace(sentence, word1, word2)) + .to.equal('We are at the house yard') + }) + }) + // function myFunction() { + +// var str = document.getElementById("demo").innerHTML; +// var res = str.replace("Microsoft", "W3Schools"); +// document.getElementById("demo").innerHTML = res; +// } diff --git a/test/reversearray.test.js b/test/reversearray.test.js new file mode 100644 index 0000000..e29a20b --- /dev/null +++ b/test/reversearray.test.js @@ -0,0 +1,9 @@ +var {expect} = require("chai") +var reversearray = require("../spec/reversearray") +var array = [3 , 2 , 1] + +describe("reversearray", function() { + it("should reverse elements in array", function() { + expect(reversearray([3 , 2 , 1])).to.eql([1 , 2 , 3]) + }) +}) diff --git a/test/subtract.test.js b/test/subtract.test.js new file mode 100644 index 0000000..7307f59 --- /dev/null +++ b/test/subtract.test.js @@ -0,0 +1,8 @@ +var {expect} = require("chai") +var subtract = require("../spec/subtract") + +describe("subtract", function() { + it("should subtract Num2 from Num1", function(){ + expect(subtract( 1 , 2 )).to.eql(-1) + }) +}) diff --git a/test/uppercase.test.js b/test/uppercase.test.js new file mode 100644 index 0000000..1566e90 --- /dev/null +++ b/test/uppercase.test.js @@ -0,0 +1,8 @@ +var {expect} = require("chai") +var uppercase = require("../spec/uppercase") + +describe("uppercase", function() { + it("should capitalize all letters in string", function() { + expect(uppercase("Hello World")).to.eql("HELLO WORLD") + }) +}) diff --git a/test/upperfirst.test.js b/test/upperfirst.test.js new file mode 100644 index 0000000..37b046e --- /dev/null +++ b/test/upperfirst.test.js @@ -0,0 +1,8 @@ +var {expect} = require("chai") +var upperfirst = require("../spec/upperfirst") + +describe("upperfirst", function() { + it("should capitalize first letter of each word in string", function() { + expect(upperfirst("hello world")).to.equal("Hello World") + }) +}) diff --git a/views/error.pug b/views/error.pug new file mode 100644 index 0000000..51ec12c --- /dev/null +++ b/views/error.pug @@ -0,0 +1,6 @@ +extends layout + +block content + h1= message + h2= error.status + pre #{error.stack} diff --git a/views/index.pug b/views/index.pug new file mode 100644 index 0000000..3d63b9a --- /dev/null +++ b/views/index.pug @@ -0,0 +1,5 @@ +extends layout + +block content + h1= title + p Welcome to #{title} diff --git a/views/layout.pug b/views/layout.pug new file mode 100644 index 0000000..15af079 --- /dev/null +++ b/views/layout.pug @@ -0,0 +1,7 @@ +doctype html +html + head + title= title + link(rel='stylesheet', href='/stylesheets/style.css') + body + block content