[Pkg-javascript-commits] [json-js] 65/85: Anticipating new JSLint
Jonas Smedegaard
dr at jones.dk
Mon Mar 14 10:39:43 UTC 2016
This is an automated email from the git hooks/post-receive script.
js pushed a commit to branch master
in repository json-js.
commit 4982ffbecf8175f233b0c9626bc8629c70faf5a2
Author: Douglas Crockford <douglas at crockford.com>
Date: Wed Feb 25 10:21:21 2015 -0800
Anticipating new JSLint
---
cycle.js | 18 ++++-----
json.js | 97 ++++++++++++++++++++++++++++---------------------
json2.js | 103 ++++++++++++++++++++++++++++++++--------------------
json_parse.js | 61 +++++++++++++++++--------------
json_parse_state.js | 36 ++++++++++--------
5 files changed, 181 insertions(+), 134 deletions(-)
diff --git a/cycle.js b/cycle.js
index 5312e38..0839437 100644
--- a/cycle.js
+++ b/cycle.js
@@ -1,6 +1,6 @@
/*
cycle.js
- 2013-02-19
+ 2015-02-25
Public Domain.
@@ -13,9 +13,10 @@
NOT CONTROL.
*/
-/*jslint evil: true, regexp: true */
+/*jslint eval, for */
-/*members $ref, apply, call, decycle, hasOwnProperty, length, prototype, push,
+/*property
+ $ref, apply, call, decycle, hasOwnProperty, length, prototype, push,
retrocycle, stringify, test, toString
*/
@@ -55,9 +56,9 @@ if (typeof JSON.decycle !== 'function') {
if (typeof value === 'object' && value !== null &&
!(value instanceof Boolean) &&
- !(value instanceof Date) &&
- !(value instanceof Number) &&
- !(value instanceof RegExp) &&
+ !(value instanceof Date) &&
+ !(value instanceof Number) &&
+ !(value instanceof RegExp) &&
!(value instanceof String)) {
// If the value is an object or array, look to see if we have already
@@ -90,7 +91,7 @@ if (typeof JSON.decycle !== 'function') {
for (name in value) {
if (Object.prototype.hasOwnProperty.call(value, name)) {
nu[name] = derez(value[name],
- path + '[' + JSON.stringify(name) + ']');
+ path + '[' + JSON.stringify(name) + ']');
}
}
}
@@ -125,8 +126,7 @@ if (typeof JSON.retrocycle !== 'function') {
// return JSON.retrocycle(JSON.parse(s));
// produces an array containing a single element which is the array itself.
- var px =
- /^\$(?:\[(?:\d+|\"(?:[^\\\"\u0000-\u001f]|\\([\\\"\/bfnrt]|u[0-9a-zA-Z]{4}))*\")\])*$/;
+ var px = /^\$(?:\[(?:\d+|\"(?:[^\\\"\u0000-\u001f]|\\([\\\"\/bfnrt]|u[0-9a-zA-Z]{4}))*\")\])*$/;
(function rez(value) {
diff --git a/json.js b/json.js
index ef41ecd..8f5d91e 100644
--- a/json.js
+++ b/json.js
@@ -1,6 +1,6 @@
/*
json.js
- 2014-02-04
+ 2014-02-25
Public Domain
@@ -183,16 +183,15 @@
redistribute.
*/
-/*jslint evil: true, regexp: true, unparam: true */
+/*jslint eval, for, this */
-/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
- call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+/*property
+ JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
lastIndex, length, parse, parseJSON, prototype, push, replace, slice,
stringify, test, toJSON, toJSONString, toString, valueOf
*/
-
// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.
@@ -205,28 +204,32 @@ if (typeof JSON !== 'object') {
function f(n) {
// Format integers to have at least two digits.
- return n < 10 ? '0' + n : n;
+ return n < 10
+ ? '0' + n
+ : n;
+ }
+
+ function this_value() {
+ return this.valueOf();
}
if (typeof Date.prototype.toJSON !== 'function') {
- Date.prototype.toJSON = function (key) {
+ Date.prototype.toJSON = function (ignore) {
return isFinite(this.valueOf())
- ? this.getUTCFullYear() + '-' +
+ ? this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
- f(this.getUTCDate()) + 'T' +
- f(this.getUTCHours()) + ':' +
- f(this.getUTCMinutes()) + ':' +
- f(this.getUTCSeconds()) + 'Z'
- : null;
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z'
+ : null;
};
- String.prototype.toJSON =
- Number.prototype.toJSON =
- Boolean.prototype.toJSON = function (key) {
- return this.valueOf();
- };
+ Boolean.prototype.toJSON = this_value;
+ Number.prototype.toJSON = this_value;
+ String.prototype.toJSON = this_value;
}
var cx,
@@ -245,12 +248,14 @@ if (typeof JSON !== 'object') {
// sequences.
escapable.lastIndex = 0;
- return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ return escapable.test(string)
+ ? '"' + string.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string'
- ? c
- : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- }) + '"' : '"' + string + '"';
+ ? c
+ : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"'
+ : '"' + string + '"';
}
@@ -290,7 +295,9 @@ if (typeof JSON !== 'object') {
// JSON numbers must be finite. Encode non-finite numbers as null.
- return isFinite(value) ? String(value) : 'null';
+ return isFinite(value)
+ ? String(value)
+ : 'null';
case 'boolean':
case 'null':
@@ -334,10 +341,10 @@ if (typeof JSON !== 'object') {
// brackets.
v = partial.length === 0
- ? '[]'
- : gap
- ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
- : '[' + partial.join(',') + ']';
+ ? '[]'
+ : gap
+ ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+ : '[' + partial.join(',') + ']';
gap = mind;
return v;
}
@@ -351,7 +358,9 @@ if (typeof JSON !== 'object') {
if (typeof k === 'string') {
v = str(k, value);
if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ partial.push(quote(k) + (gap
+ ? ': '
+ : ':') + v);
}
}
}
@@ -363,7 +372,9 @@ if (typeof JSON !== 'object') {
if (Object.prototype.hasOwnProperty.call(value, k)) {
v = str(k, value);
if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ partial.push(quote(k) + (gap
+ ? ': '
+ : ':') + v);
}
}
}
@@ -372,10 +383,11 @@ if (typeof JSON !== 'object') {
// Join all of the member texts together, separated with commas,
// and wrap them in braces.
- v = partial.length === 0 ? '{}'
- : gap
- ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
- : '{' + partial.join(',') + '}';
+ v = partial.length === 0
+ ? '{}'
+ : gap
+ ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+ : '{' + partial.join(',') + '}';
gap = mind;
return v;
}
@@ -384,14 +396,14 @@ if (typeof JSON !== 'object') {
// If the JSON object does not yet have a stringify method, give it one.
if (typeof JSON.stringify !== 'function') {
- escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+ escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
- '"' : '\\"',
+ '"': '\\"',
'\\': '\\\\'
};
JSON.stringify = function (value, replacer, space) {
@@ -480,7 +492,7 @@ if (typeof JSON !== 'object') {
if (cx.test(text)) {
text = text.replace(cx, function (a) {
return '\\u' +
- ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
});
}
@@ -497,10 +509,11 @@ if (typeof JSON !== 'object') {
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
- if (/^[\],:{}\s]*$/
- .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
- .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+ if (/^[\],:{}\s]*$/.test(
+ text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, '')
+ )) {
// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
@@ -513,8 +526,8 @@ if (typeof JSON !== 'object') {
// each name/value pair to a reviver function for possible transformation.
return typeof reviver === 'function'
- ? walk({'': j}, '')
- : j;
+ ? walk({'': j}, '')
+ : j;
}
// If the text is not JSON parseable, then a SyntaxError is thrown.
diff --git a/json2.js b/json2.js
index deb88ec..d403181 100644
--- a/json2.js
+++ b/json2.js
@@ -1,6 +1,6 @@
/*
json2.js
- 2014-02-04
+ 2015-02-25
Public Domain.
@@ -48,7 +48,9 @@
Date.prototype.toJSON = function (key) {
function f(n) {
// Format integers to have at least two digits.
- return n < 10 ? '0' + n : n;
+ return n < 10
+ ? '0' + n
+ : n;
}
return this.getUTCFullYear() + '-' +
@@ -146,10 +148,12 @@
redistribute.
*/
-/*jslint evil: true, regexp: true */
+/*jslint
+ eval, for, this
+*/
-/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
- call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+/*property
+ JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
lastIndex, length, parse, prototype, push, replace, slice, stringify,
test, toJSON, toString, valueOf
@@ -168,7 +172,13 @@ if (typeof JSON !== 'object') {
function f(n) {
// Format integers to have at least two digits.
- return n < 10 ? '0' + n : n;
+ return n < 10
+ ? '0' + n
+ : n;
+ }
+
+ function this_value() {
+ return this.valueOf();
}
if (typeof Date.prototype.toJSON !== 'function') {
@@ -176,20 +186,18 @@ if (typeof JSON !== 'object') {
Date.prototype.toJSON = function () {
return isFinite(this.valueOf())
- ? this.getUTCFullYear() + '-' +
+ ? this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' +
- f(this.getUTCDate()) + 'T' +
- f(this.getUTCHours()) + ':' +
- f(this.getUTCMinutes()) + ':' +
- f(this.getUTCSeconds()) + 'Z'
- : null;
+ f(this.getUTCDate()) + 'T' +
+ f(this.getUTCHours()) + ':' +
+ f(this.getUTCMinutes()) + ':' +
+ f(this.getUTCSeconds()) + 'Z'
+ : null;
};
- String.prototype.toJSON =
- Number.prototype.toJSON =
- Boolean.prototype.toJSON = function () {
- return this.valueOf();
- };
+ Boolean.prototype.toJSON = this_value;
+ Number.prototype.toJSON = this_value;
+ String.prototype.toJSON = this_value;
}
var cx,
@@ -208,12 +216,14 @@ if (typeof JSON !== 'object') {
// sequences.
escapable.lastIndex = 0;
- return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ return escapable.test(string)
+ ? '"' + string.replace(escapable, function (a) {
var c = meta[a];
return typeof c === 'string'
- ? c
- : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
- }) + '"' : '"' + string + '"';
+ ? c
+ : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"'
+ : '"' + string + '"';
}
@@ -253,7 +263,9 @@ if (typeof JSON !== 'object') {
// JSON numbers must be finite. Encode non-finite numbers as null.
- return isFinite(value) ? String(value) : 'null';
+ return isFinite(value)
+ ? String(value)
+ : 'null';
case 'boolean':
case 'null':
@@ -297,10 +309,10 @@ if (typeof JSON !== 'object') {
// brackets.
v = partial.length === 0
- ? '[]'
- : gap
- ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
- : '[' + partial.join(',') + ']';
+ ? '[]'
+ : gap
+ ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+ : '[' + partial.join(',') + ']';
gap = mind;
return v;
}
@@ -314,7 +326,11 @@ if (typeof JSON !== 'object') {
k = rep[i];
v = str(k, value);
if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ partial.push(quote(k) + (
+ gap
+ ? ': '
+ : ':'
+ ) + v);
}
}
}
@@ -326,7 +342,11 @@ if (typeof JSON !== 'object') {
if (Object.prototype.hasOwnProperty.call(value, k)) {
v = str(k, value);
if (v) {
- partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ partial.push(quote(k) + (
+ gap
+ ? ': '
+ : ':'
+ ) + v);
}
}
}
@@ -336,10 +356,10 @@ if (typeof JSON !== 'object') {
// and wrap them in braces.
v = partial.length === 0
- ? '{}'
- : gap
- ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
- : '{' + partial.join(',') + '}';
+ ? '{}'
+ : gap
+ ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+ : '{' + partial.join(',') + '}';
gap = mind;
return v;
}
@@ -348,14 +368,14 @@ if (typeof JSON !== 'object') {
// If the JSON object does not yet have a stringify method, give it one.
if (typeof JSON.stringify !== 'function') {
- escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
+ escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
meta = { // table of character substitutions
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
- '"' : '\\"',
+ '"': '\\"',
'\\': '\\\\'
};
JSON.stringify = function (value, replacer, space) {
@@ -444,7 +464,7 @@ if (typeof JSON !== 'object') {
if (cx.test(text)) {
text = text.replace(cx, function (a) {
return '\\u' +
- ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
});
}
@@ -461,10 +481,13 @@ if (typeof JSON !== 'object') {
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
- if (/^[\],:{}\s]*$/
- .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
+ if (
+ /^[\],:{}\s]*$/.test(
+ text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
- .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, '')
+ )
+ ) {
// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
@@ -477,8 +500,8 @@ if (typeof JSON !== 'object') {
// each name/value pair to a reviver function for possible transformation.
return typeof reviver === 'function'
- ? walk({'': j}, '')
- : j;
+ ? walk({'': j}, '')
+ : j;
}
// If the text is not JSON parseable, then a SyntaxError is thrown.
diff --git a/json_parse.js b/json_parse.js
index 89b8b77..cd96c3c 100644
--- a/json_parse.js
+++ b/json_parse.js
@@ -1,6 +1,6 @@
/*
json_parse.js
- 2012-06-20
+ 2015-02-25
Public Domain.
@@ -46,8 +46,11 @@
NOT CONTROL.
*/
-/*members "", "\"", "\/", "\\", at, b, call, charAt, f, fromCharCode,
- hasOwnProperty, message, n, name, prototype, push, r, t, text
+/*jslint for */
+
+/*property
+ at, b, call, charAt, f, fromCharCode, hasOwnProperty, message, n, name,
+ prototype, push, r, t, text
*/
var json_parse = (function () {
@@ -64,14 +67,14 @@ var json_parse = (function () {
var at, // The index of the current character
ch, // The current character
escapee = {
- '"': '"',
+ '"': '"',
'\\': '\\',
- '/': '/',
- b: '\b',
- f: '\f',
- n: '\n',
- r: '\r',
- t: '\t'
+ '/': '/',
+ b: '\b',
+ f: '\f',
+ n: '\n',
+ r: '\r',
+ t: '\t'
},
text,
@@ -80,10 +83,10 @@ var json_parse = (function () {
// Call error when something is wrong.
throw {
- name: 'SyntaxError',
+ name: 'SyntaxError',
message: m,
- at: at,
- text: text
+ at: at,
+ text: text
};
},
@@ -302,7 +305,9 @@ var json_parse = (function () {
case '-':
return number();
default:
- return ch >= '0' && ch <= '9' ? number() : word();
+ return ch >= '0' && ch <= '9'
+ ? number()
+ : word();
}
};
@@ -328,22 +333,22 @@ var json_parse = (function () {
// result.
return typeof reviver === 'function'
- ? (function walk(holder, key) {
- var k, v, value = holder[key];
- if (value && typeof value === 'object') {
- for (k in value) {
- if (Object.prototype.hasOwnProperty.call(value, k)) {
- v = walk(value, k);
- if (v !== undefined) {
- value[k] = v;
- } else {
- delete value[k];
- }
+ ? (function walk(holder, key) {
+ var k, v, value = holder[key];
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
}
}
}
- return reviver.call(holder, key, value);
- }({'': result}, ''))
- : result;
+ }
+ return reviver.call(holder, key, value);
+ }({'': result}, ''))
+ : result;
};
}());
diff --git a/json_parse_state.js b/json_parse_state.js
index 7424fcc..163631d 100644
--- a/json_parse_state.js
+++ b/json_parse_state.js
@@ -1,6 +1,6 @@
/*
json_parse_state.js
- 2013-05-26
+ 2015-02-25
Public Domain.
@@ -46,13 +46,13 @@
NOT CONTROL.
*/
-/*jslint regexp: true, unparam: true */
+/*jslint for */
-/*members "", "\"", ",", "\/", ":", "[", "\\", "]", acomma, avalue, b,
- call, colon, container, exec, f, false, firstavalue, firstokey,
- fromCharCode, go, hasOwnProperty, key, length, n, null, ocomma, okey,
- ovalue, pop, prototype, push, r, replace, slice, state, t, test, true,
- value, "{", "}"
+/*property
+ acomma, avalue, b, call, colon, container, exec, f, false, firstavalue,
+ firstokey, fromCharCode, go, hasOwnProperty, key, length, n, null, ocomma,
+ okey, ovalue, pop, prototype, push, r, replace, slice, state, t, test,
+ true
*/
var json_parse = (function () {
@@ -287,8 +287,10 @@ var json_parse = (function () {
// Remove and replace any backslash escapement.
- return text.replace(/\\(?:u(.{4})|([^u]))/g, function (a, b, c) {
- return b ? String.fromCharCode(parseInt(b, 16)) : escapes[c];
+ return text.replace(/\\(?:u(.{4})|([^u]))/g, function (ignore, b, c) {
+ return b
+ ? String.fromCharCode(parseInt(b, 16))
+ : escapes[c];
});
}
@@ -298,7 +300,7 @@ var json_parse = (function () {
// The extraction process is cautious.
var r, // The result of the exec method.
- tx = /^[\x20\t\n\r]*(?:([,:\[\]{}]|true|false|null)|(-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)|"((?:[^\r\n\t\\\"]|\\(?:["\\\/trnfb]|u[0-9a-fA-F]{4}))*)")/;
+ tx = /^[\u0020\t\n\r]*(?:([,:\[\]{}]|true|false|null)|(-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)|"((?:[^\r\n\t\\\"]|\\(?:["\\\/trnfb]|u[0-9a-fA-F]{4}))*)")/;
// Set the starting state.
@@ -315,7 +317,7 @@ var json_parse = (function () {
// For each token...
- for (;;) {
+ while (true) {
r = tx.exec(source);
if (!r) {
break;
@@ -367,8 +369,10 @@ var json_parse = (function () {
// remaining source contains anything except whitespace, then we did not have
//a well-formed JSON text.
- if (state !== 'ok' || /[^\x20\t\n\r]/.test(source)) {
- throw state instanceof SyntaxError ? state : new SyntaxError('JSON');
+ if (state !== 'ok' || (/[^\u0020\t\n\r]/.test(source))) {
+ throw state instanceof SyntaxError
+ ? state
+ : new SyntaxError('JSON');
}
// If there is a reviver function, we recursively walk the new structure,
@@ -377,7 +381,8 @@ var json_parse = (function () {
// value in an empty key. If there is not a reviver function, we simply return
// that value.
- return typeof reviver === 'function' ? (function walk(holder, key) {
+ return typeof reviver === 'function'
+ ? (function walk(holder, key) {
var k, v, value = holder[key];
if (value && typeof value === 'object') {
for (k in value) {
@@ -392,6 +397,7 @@ var json_parse = (function () {
}
}
return reviver.call(holder, key, value);
- }({'': value}, '')) : value;
+ }({'': value}, ''))
+ : value;
};
}());
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/json-js.git
More information about the Pkg-javascript-commits
mailing list