rename from bottle (taken, sadface) to flaska

This commit is contained in:
Jonatan Nilsson 2020-05-20 13:14:25 +00:00
parent 0c2030c2cd
commit 0bfd4de78d
5 changed files with 70 additions and 19 deletions

View file

@ -1,7 +1,7 @@
import assert from 'assert' import assert from 'assert'
import Benchmark from 'benchmarkjs-pretty' import Benchmark from 'benchmarkjs-pretty'
import { koaRouter1, koaRouter2 } from './router_koa.js' import { koaRouter1, koaRouter2 } from './router_koa.js'
import { bottleRouter1, bottleRouter2 } from './router_bottle.js' import { flaskaRouter1, flaskaRouter2 } from './router_flaska.js'
import { expressRouter1, expressRouter2 } from './router_express.js' import { expressRouter1, expressRouter2 } from './router_express.js'
import * as consts from './const.js' import * as consts from './const.js'
@ -25,7 +25,7 @@ function TestSmallStaticRoute() {
assert.ok(testData.route) assert.ok(testData.route)
}) })
.add('bottle-router', function() { .add('bottle-router', function() {
testData = bottleRouter1.match('/api/staff') testData = flaskaRouter1.match('/api/staff')
assert.ok(testData.handler) assert.ok(testData.handler)
}) })
.run() .run()
@ -50,7 +50,7 @@ function TestSmallParamRoute() {
assert.ok(testData.route) assert.ok(testData.route)
}) })
.add('bottle-router', function() { .add('bottle-router', function() {
testData = bottleRouter1.match('/api/staff/justatest') testData = flaskaRouter1.match('/api/staff/justatest')
assert.ok(testData.handler) assert.ok(testData.handler)
}) })
.run() .run()
@ -75,7 +75,7 @@ function TestLargeStaticRoute() {
assert.ok(testData.route) assert.ok(testData.route)
}) })
.add('bottle-router', function() { .add('bottle-router', function() {
testData = bottleRouter2.match('/api/staff') testData = flaskaRouter2.match('/api/staff')
assert.ok(testData.handler) assert.ok(testData.handler)
}) })
.run() .run()
@ -100,7 +100,7 @@ function TestLargeParamRoute() {
assert.ok(testData.route) assert.ok(testData.route)
}) })
.add('bottle-router', function() { .add('bottle-router', function() {
testData = bottleRouter2.match('/api/staff/justatest') testData = flaskaRouter2.match('/api/staff/justatest')
assert.ok(testData.handler) assert.ok(testData.handler)
}) })
.run() .run()

View file

@ -1,8 +1,8 @@
import { BottleRouter } from '../bottle.js' import { FlaskaRouter } from '../flaska.mjs'
import * as consts from './const.js' import * as consts from './const.js'
const router1 = new BottleRouter() const router1 = new FlaskaRouter()
const router2 = new BottleRouter() const router2 = new FlaskaRouter()
for (let key in consts.allRoutes) { for (let key in consts.allRoutes) {
router1.addRoute(consts.allRoutes[key], consts.dummy) router1.addRoute(consts.allRoutes[key], consts.dummy)
@ -13,6 +13,6 @@ for (let key in consts.allManyRoutes) {
} }
export { export {
router1 as bottleRouter1, router1 as flaskaRouter1,
router2 as bottleRouter2, router2 as flaskaRouter2,
} }

View file

@ -11,11 +11,11 @@ function Branch() {
const __paramMapName = '__param' const __paramMapName = '__param'
function BottleRouter() { function FlaskaRouter() {
this._root = new Branch() this._root = new Branch()
} }
BottleRouter.prototype.addRoute = function(route, handler) { FlaskaRouter.prototype.addRoute = function(route, handler) {
if (route[0] !== '/') if (route[0] !== '/')
throw new Error(`route "${route}" must start with forward slash`); throw new Error(`route "${route}" must start with forward slash`);
@ -76,7 +76,7 @@ BottleRouter.prototype.addRoute = function(route, handler) {
} }
} }
BottleRouter.prototype.match = function(url) { FlaskaRouter.prototype.match = function(url) {
let branch = this._root; let branch = this._root;
let start = 1; let start = 1;
let end = 1; let end = 1;
@ -120,5 +120,5 @@ BottleRouter.prototype.match = function(url) {
} }
export { export {
BottleRouter, FlaskaRouter,
} }

View file

@ -1,10 +1,10 @@
{ {
"name": "bottle-node", "name": "flasha-node",
"version": "1.0.0", "version": "1.0.0",
"description": "Bottle is a micro web-framework for node. It is designed to be fast, simple and lightweight, and is distributed as a single file module with no dependencies.", "description": "Flaska is a micro web-framework for node. It is designed to be fast, simple and lightweight, and is distributed as a single file module with no dependencies.",
"main": "bottle.js", "main": "flaska.mjs",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "eltro"
}, },
"type": "module", "type": "module",
"repository": { "repository": {
@ -16,5 +16,8 @@
"bugs": { "bugs": {
"url": "https://github.com/nfp-projects/bottle-node/issues" "url": "https://github.com/nfp-projects/bottle-node/issues"
}, },
"homepage": "https://github.com/nfp-projects/bottle-node#readme" "homepage": "https://github.com/nfp-projects/bottle-node#readme",
"devDependencies": {
"eltro": "^0.9.0"
}
} }

48
test/flaska.test.mjs Normal file
View file

@ -0,0 +1,48 @@
import { Eltro as t, assert } from 'eltro'
import { FlaskaRouter } from '../flaska.mjs'
t.describe('FlaskaRouter', function() {
t.describe('#match()', function() {
t.test('should match basic paths', function() {
let assertMatched = false
let router = new FlaskaRouter()
router.addRoute('/test', function() { assertMatched = true })
let result = router.match('/test')
assert.ok(result.handler)
result.handler()
assert.strictEqual(assertMatched, true)
})
t.test('should match variable paths', function() {
const assertParameter = 'bla'
let assertMatched = false
let router = new FlaskaRouter()
router.addRoute('/test/:id', function() { assertMatched = true })
let result = router.match('/test/' + assertParameter)
assert.ok(result.handler)
result.handler()
assert.strictEqual(assertMatched, true)
assert.strictEqual(result.params.get('id'), assertParameter)
})
t.test('should match paths properly', function() {
let assertMatched = true
let router = new FlaskaRouter()
router.addRoute('/test/:id', function() { assertMatched = false })
router.addRoute('/test/:id/test1', function() { })
let result = router.match('/test/asdf/test1')
assert.ok(result.handler)
result.handler()
assert.strictEqual(assertMatched, true)
assert.strictEqual(result.params.get('id'), 'asdf')
})
t.test('should return null when no match is found', function() {
let router = new FlaskaRouter()
router.addRoute('/test/:id', function() { })
router.addRoute('/test/:id/test1', function() { })
let result = router.match('/test/asdf/test2')
assert.notOk(result)
})
})
})