UNPKG

1.21 kBJavaScriptView Raw
1/**
2 * @fileoverview Module for loading rules from files and directories.
3 * @author Michael Ficarra
4 */
5
6"use strict";
7
8//------------------------------------------------------------------------------
9// Requirements
10//------------------------------------------------------------------------------
11
12var fs = require("fs"),
13 path = require("path");
14
15//------------------------------------------------------------------------------
16// Public Interface
17//------------------------------------------------------------------------------
18
19/**
20 * Load all rule modules from specified directory.
21 * @param {String} [rulesDir] Path to rules directory, may be relative. Defaults to `lib/rules`.
22 * @returns {Object} Loaded rule modules by rule ids (file names).
23 */
24module.exports = function(rulesDir) {
25 if (!rulesDir) {
26 rulesDir = path.join(__dirname, "rules");
27 } else {
28 rulesDir = path.resolve(process.cwd(), rulesDir);
29 }
30
31 var rules = Object.create(null);
32 fs.readdirSync(rulesDir).forEach(function(file) {
33 if (path.extname(file) !== ".js") {
34 return;
35 }
36 rules[file.slice(0, -3)] = require(path.join(rulesDir, file));
37 });
38 return rules;
39};