Skip to content

Commit

Permalink
disallowNewlineAfterDescription: mirror for require
Browse files Browse the repository at this point in the history
Ref #85
  • Loading branch information
Alexej Yaroshevich committed May 3, 2015
1 parent 3346922 commit 789474a
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 0 deletions.
32 changes: 32 additions & 0 deletions lib/rules/validate-jsdoc/disallow-newline-after-description.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
module.exports = disallowNewlineAfterDescription;
module.exports.scopes = ['function'];
module.exports.options = {
disallowNewlineAfterDescription: {allowedValues: [true]}
};

var RE_NEWLINE_AT_THE_END = /\n$/;
var RE_NEWLINES = /\n/g;

/**
* Disallows newline after description in jsdoc comment
*
* @param {(FunctionDeclaration|FunctionExpression)} node
* @param {Function} err
*/
function disallowNewlineAfterDescription(node, err) {
var doc = node.jsdoc;
if (!doc || !doc.tags.length || !doc.description || !doc.description.length) {
return;
}

if (!RE_NEWLINE_AT_THE_END.test(doc.description)) {
return;
}

var loc = node.jsdoc.loc.start;
var lines = doc.description.split(RE_NEWLINES);
err('Newline required after description', {
line: loc.line + lines.length,
column: loc.column + 3 + lines[lines.length - 1].length
});
}
1 change: 1 addition & 0 deletions lib/rules/validate-jsdoc/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ var validatorsByName = module.exports = {
checkAnnotations: require('./check-annotations'),

requireNewlineAfterDescription: require('./require-newline-after-description'),
disallowNewlineAfterDescription: require('./disallow-newline-after-description'),

checkRedundantAccess: require('./check-redundant-access'),
enforceExistence: require('./enforce-existence'),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
describe('lib/rules/validate-jsdoc/disallow-newline-after-description', function () {
var checker = global.checker({
additionalRules: ['lib/rules/validate-jsdoc.js']
});

describe('not configured', function() {

it('should report with undefined', function() {
global.expect(function() {
checker.configure({disallowNewlineAfterDescription: undefined});
}).to.throws(/accepted value/i);
});

it('should report with an object', function() {
global.expect(function() {
checker.configure({disallowNewlineAfterDescription: {}});
}).to.throws(/accepted value/i);
});

});

describe('with true', function() {
checker.rules({disallowNewlineAfterDescription: true});

checker.cases([
/* jshint ignore:start */
{
it: 'should not report common cases',
code: function() {
function fun(p) {
}

/**
* Description
*/
function fun(p) {
}

/**
* @param p
*/
function fun(p) {
}
}
}, {
it: 'should node report newline absence after description',
code: function () {
/**
* Some description
* @param {number} p description without hyphen
*/
function fun(p) {
}
},
}, {
it: 'should report newline after description',
code: function () {
/**
* Some description.
* Get me higher and higher!
*
* @param {number} p description without hyphen
*/
function fun(p) {}
},
errors: {
line: 4,
column: 3
},
}
/* jshint ignore:end */
]);

});

});

0 comments on commit 789474a

Please sign in to comment.