summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/ccount/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/node_modules/ccount/index.js')
-rw-r--r--tools/eslint/node_modules/ccount/index.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/tools/eslint/node_modules/ccount/index.js b/tools/eslint/node_modules/ccount/index.js
new file mode 100644
index 0000000000..0d72d6e527
--- /dev/null
+++ b/tools/eslint/node_modules/ccount/index.js
@@ -0,0 +1,46 @@
+/**
+ * @author Titus Wormer
+ * @copyright 2015 Titus Wormer
+ * @license MIT
+ * @module ccount
+ * @fileoverview Count characters.
+ */
+
+'use strict';
+
+/* Expose. */
+module.exports = ccount;
+
+/**
+ * Count how many characters `character` occur in `value`.
+ *
+ * @example
+ * ccount('foo(bar(baz)', '(') // 2
+ * ccount('foo(bar(baz)', ')') // 1
+ *
+ * @param {string} value - Content, coerced to string.
+ * @param {string} character - Single character to look
+ * for.
+ * @return {number} - Count.
+ * @throws {Error} - when `character` is not a single
+ * character.
+ */
+function ccount(value, character) {
+ var count = 0;
+ var index;
+
+ value = String(value);
+
+ if (typeof character !== 'string' || character.length !== 1) {
+ throw new Error('Expected character');
+ }
+
+ index = value.indexOf(character);
+
+ while (index !== -1) {
+ count++;
+ index = value.indexOf(character, index + 1);
+ }
+
+ return count;
+}