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

crema

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

crema - npm Package Compare versions

Comparing version 0.1.2 to 0.1.3

lib/index2.js

4

examples/index.js

@@ -13,1 +13,5 @@ var crema = require('../lib');

route = "request -method=POST hello//:test(\\w+.js(a))/fdsdfs -> world"
console.log(JSON.stringify(crema(route), null, 2));

95

lib/index.js

@@ -0,1 +1,2 @@

var strscanner = require("strscanner");

@@ -39,16 +40,71 @@

function scanGroups(scanner) {
var buffer = "(";
while(scanner.cchar() != ")") {
buffer += scanner.cchar();
scanner.nextChar();
if(scanner.cchar() == "(") {
scanner.nextChar();
buffer += scanGroups(scanner);
}
}
scanner.nextChar();
return buffer + ")";
}
function parsePath(path) {
var segments = path instanceof Array ? path : path.replace(/^\/|\/$/g,'').split(/[\s\/]+/g);
var scanner = strscanner(path),
segs = [];
var expr = { value: segments.join('/'), segments: [] };
while(!scanner.eof()) {
for(var i = 0, n = segments.length; i < n; i++) {
var segment = segments[i],
isParam = (segment.substr(0,1) == ':');
var cchar = scanner.cchar();
expr.segments.push({ value: isParam ? segment.substr(1) : segment, param: isParam });
if(cchar != '/') {
var isParam = false,
name = null,
test = null;
//param flag present?
if(cchar == ":") {
isParam = true;
cchar = scanner.nextChar();
}
//params not present? mustbe the name
if(cchar != "(") {
name = scanner.nextUntil(/[\/(]/);
cchar = scanner.cchar();
}
//params present? must be a test
if(cchar == "(") {
scanner.nextChar();
test = new RegExp(scanGroups(scanner));
}
segs.push({
value: name,
param: isParam,
test: test
});
}
scanner.nextChar();
}
return expr;
return {
value: module.exports.stringifySegments(segs),
segments: segs
}
}

@@ -165,20 +221,9 @@

module.exports.stringifySegments = function(segments, params, ignoreParams) {
var stringified = [];
if(!params) params = {};
for(var i = 0, n = segments.length; i < n; i++) {
var segment = segments[i], segmentValue;
if(!ignoreParams && segment.param) {
segmentValue = params[segment.value] || ':' + segment.value;
} else {
segmentValue = segment.value;
}
stringified.push(segmentValue);
}
return stringified.join('/');
return segments.map(function(seg) {
var buffer = "";
if(seg.param) buffer += ":";
if(seg.value) buffer += seg.value;
if(seg.test) buffer += seg.test.source;
return buffer;
}).join("/");
}

@@ -185,0 +230,0 @@

{
"name": "crema",
"description": "syntactic sugar for your javascript functions",
"version": "0.1.2",
"repository": {},
"engines": {},
"dependencies": {},
"devDependencies": {
"pegjs": "0.6.2"
},
"main": "./lib/index.js"
"name": "crema",
"description": "syntactic sugar for your javascript functions",
"version": "0.1.3",
"repository": {},
"engines": {},
"dependencies": {
"strscanner": "0.0.x",
"StringScanner": "0.0.x"
},
"devDependencies": {
"pegjs": "0.6.2"
},
"main": "./lib/index.js"
}
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