From 9a6903611622d86162d0a1eee68157e55baa87d4 Mon Sep 17 00:00:00 2001 From: jonschlinkert Date: Sat, 3 Sep 2016 14:17:20 -0400 Subject: [PATCH] lint, run `update` --- .editorconfig | 13 ++++++ .eslintrc.json | 122 +++++++++++++++++++++++++++++++++++++++++++++++++ .gitignore | 18 ++++++-- .jshintrc | 19 -------- .travis.yml | 8 ++-- .verb.md | 26 ----------- LICENSE | 2 +- README.md | 60 +++++++++++++++--------- browser.js | 15 ++++-- package.json | 41 +++++++++++++---- 10 files changed, 235 insertions(+), 89 deletions(-) create mode 100644 .editorconfig create mode 100644 .eslintrc.json delete mode 100644 .jshintrc diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..818e072 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +indent_style = space +end_of_line = lf +charset = utf-8 +indent_size = 2 +trim_trailing_whitespace = true +insert_final_newline = true + +[{**/{actual,fixtures,expected,templates}/**,*.md}] +trim_trailing_whitespace = false +insert_final_newline = false \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..948dbdb --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,122 @@ +{ + "ecmaFeatures": { + "modules": true, + "experimentalObjectRestSpread": true + }, + + "env": { + "browser": false, + "es6": true, + "node": true, + "mocha": true + }, + + "globals": { + "document": false, + "navigator": false, + "window": false + }, + + "rules": { + "accessor-pairs": 2, + "arrow-spacing": [2, { "before": true, "after": true }], + "block-spacing": [2, "always"], + "brace-style": [2, "1tbs", { "allowSingleLine": true }], + "comma-dangle": [2, "never"], + "comma-spacing": [2, { "before": false, "after": true }], + "comma-style": [2, "last"], + "constructor-super": 2, + "curly": [2, "multi-line"], + "dot-location": [2, "property"], + "eol-last": 2, + "eqeqeq": [2, "allow-null"], + "generator-star-spacing": [2, { "before": true, "after": true }], + "handle-callback-err": [2, "^(err|error)$" ], + "indent": [2, 2, { "SwitchCase": 1 }], + "key-spacing": [2, { "beforeColon": false, "afterColon": true }], + "keyword-spacing": [2, { "before": true, "after": true }], + "new-cap": [2, { "newIsCap": true, "capIsNew": false }], + "new-parens": 2, + "no-array-constructor": 2, + "no-caller": 2, + "no-class-assign": 2, + "no-cond-assign": 2, + "no-const-assign": 2, + "no-control-regex": 2, + "no-debugger": 2, + "no-delete-var": 2, + "no-dupe-args": 2, + "no-dupe-class-members": 2, + "no-dupe-keys": 2, + "no-duplicate-case": 2, + "no-empty-character-class": 2, + "no-eval": 2, + "no-ex-assign": 2, + "no-extend-native": 2, + "no-extra-bind": 2, + "no-extra-boolean-cast": 2, + "no-extra-parens": [2, "functions"], + "no-fallthrough": 2, + "no-floating-decimal": 2, + "no-func-assign": 2, + "no-implied-eval": 2, + "no-inner-declarations": [2, "functions"], + "no-invalid-regexp": 2, + "no-irregular-whitespace": 2, + "no-iterator": 2, + "no-label-var": 2, + "no-labels": 2, + "no-lone-blocks": 2, + "no-mixed-spaces-and-tabs": 2, + "no-multi-spaces": 2, + "no-multi-str": 2, + "no-multiple-empty-lines": [2, { "max": 1 }], + "no-native-reassign": 0, + "no-negated-in-lhs": 2, + "no-new": 2, + "no-new-func": 2, + "no-new-object": 2, + "no-new-require": 2, + "no-new-wrappers": 2, + "no-obj-calls": 2, + "no-octal": 2, + "no-octal-escape": 2, + "no-proto": 0, + "no-redeclare": 2, + "no-regex-spaces": 2, + "no-return-assign": 2, + "no-self-compare": 2, + "no-sequences": 2, + "no-shadow-restricted-names": 2, + "no-spaced-func": 2, + "no-sparse-arrays": 2, + "no-this-before-super": 2, + "no-throw-literal": 2, + "no-trailing-spaces": 0, + "no-undef": 2, + "no-undef-init": 2, + "no-unexpected-multiline": 2, + "no-unneeded-ternary": [2, { "defaultAssignment": false }], + "no-unreachable": 2, + "no-unused-vars": [2, { "vars": "all", "args": "none" }], + "no-useless-call": 0, + "no-with": 2, + "one-var": [0, { "initialized": "never" }], + "operator-linebreak": [0, "after", { "overrides": { "?": "before", ":": "before" } }], + "padded-blocks": [0, "never"], + "quotes": [2, "single", "avoid-escape"], + "radix": 2, + "semi": [2, "always"], + "semi-spacing": [2, { "before": false, "after": true }], + "space-before-blocks": [2, "always"], + "space-before-function-paren": [2, "never"], + "space-in-parens": [2, "never"], + "space-infix-ops": 2, + "space-unary-ops": [2, { "words": true, "nonwords": false }], + "spaced-comment": [0, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!", ","] }], + "use-isnan": 2, + "valid-typeof": 2, + "wrap-iife": [2, "any"], + "yoda": [2, "never"] + } +} diff --git a/.gitignore b/.gitignore index 9e685a4..7988154 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,21 @@ +# always ignore files *.DS_Store *.sublime-* -_gh_pages -bower_components + +# test related, or directories generated by tests +test/actual +actual +coverage + +# npm node_modules npm-debug.log + +# misc +_gh_pages +benchmark +bower_components +vendor temp -test/actual tmp TODO.md -vendor \ No newline at end of file diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 01134d6..0000000 --- a/.jshintrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "asi": false, - "boss": true, - "camelcase": true, - "curly": true, - "eqeqeq": true, - "eqnull": true, - "esnext": true, - "immed": true, - "latedef": false, - "laxcomma": false, - "mocha": true, - "newcap": true, - "noarg": true, - "node": true, - "sub": true, - "undef": true, - "unused": true -} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index f9cffe6..57b4b01 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,6 @@ sudo: false language: node_js node_js: - - "0.10" - - "0.12" - - "iojs" -git: - depth: 10 + - '6' + - '4' + - '0.12' diff --git a/.verb.md b/.verb.md index c0dedb0..8771d1b 100644 --- a/.verb.md +++ b/.verb.md @@ -1,9 +1,3 @@ -# {%= name %} {%= badge("fury") %} {%= badge("travis") %} - -> {%= description %} - -{%= include("install-npm", {save: true}) %} - ## Usage ```js @@ -37,23 +31,3 @@ isExtglob('abc/?.js'); isExtglob('abc.js'); isExtglob('abc/def/ghi.js'); ``` - -## Related -{%= related(['extglob', 'micromatch', 'parse-glob']) %} - -## Run tests -{%= include("tests") %} - -## Contributing -{%= include("contributing") %} - -## Author -{%= include("author") %} - -## License -{%= copyright() %} -{%= license() %} - -*** - -{%= include("footer") %} \ No newline at end of file diff --git a/LICENSE b/LICENSE index fa30c4c..842218c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014-2015, Jon Schlinkert. +Copyright (c) 2014-2016, Jon Schlinkert Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 80e7128..8c6d69d 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ -# is-extglob [![NPM version](https://badge.fury.io/js/is-extglob.svg)](http://badge.fury.io/js/is-extglob) [![Build Status](https://travis-ci.org/jonschlinkert/is-extglob.svg)](https://travis-ci.org/jonschlinkert/is-extglob) +# is-extglob [![NPM version](https://img.shields.io/npm/v/is-extglob.svg?style=flat)](https://www.npmjs.com/package/is-extglob) [![NPM downloads](https://img.shields.io/npm/dm/is-extglob.svg?style=flat)](https://npmjs.org/package/is-extglob) [![Build Status](https://img.shields.io/travis/jonschlinkert/is-extglob.svg?style=flat)](https://travis-ci.org/jonschlinkert/is-extglob) > Returns true if a string has an extglob. -## Install with [npm](npmjs.org) +## Install -```bash -npm i is-extglob --save +Install with [npm](https://www.npmjs.com/): + +```sh +$ npm install --save is-extglob ``` ## Usage @@ -42,34 +44,48 @@ isExtglob('abc.js'); isExtglob('abc/def/ghi.js'); ``` -## Related -* [extglob](https://github.com/jonschlinkert/extglob): Extended globs. extglobs add the expressive power of regular expressions to glob patterns. -* [micromatch](https://github.com/jonschlinkert/micromatch): Glob matching for javascript/node.js. A faster alternative to minimatch (10-45x faster on avg), with all the features you're used to using in your Grunt and gulp tasks. -* [parse-glob](https://github.com/jonschlinkert/parse-glob): Parse a glob pattern into an object of tokens. +## About -## Run tests -Install dev dependencies. +### Related projects -```bash -npm i -d && npm test +* [has-glob](https://www.npmjs.com/package/has-glob): Returns `true` if an array has a glob pattern. | [homepage](https://github.com/jonschlinkert/has-glob "Returns `true` if an array has a glob pattern.") +* [is-glob](https://www.npmjs.com/package/is-glob): Returns `true` if the given string looks like a glob pattern or an extglob pattern… [more](https://github.com/jonschlinkert/is-glob) | [homepage](https://github.com/jonschlinkert/is-glob "Returns `true` if the given string looks like a glob pattern or an extglob pattern. This makes it easy to create code that only uses external modules like node-glob when necessary, resulting in much faster code execution and initialization time, and a bet") +* [micromatch](https://www.npmjs.com/package/micromatch): Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch. | [homepage](https://github.com/jonschlinkert/micromatch "Glob matching for javascript/node.js. A drop-in replacement and faster alternative to minimatch and multimatch.") + +### Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new). + +### Building docs + +_(This document was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme) (a [verb](https://github.com/verbose/verb) generator), please don't edit the readme directly. Any changes to the readme must be made in [.verb.md](.verb.md).)_ + +To generate the readme and API documentation with [verb](https://github.com/verbose/verb): + +```sh +$ npm install -g verb verb-generate-readme && verb ``` +### Running tests -## Contributing -Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/is-extglob/issues) +Install dev dependencies: +```sh +$ npm install -d && npm test +``` -## Author +### Author **Jon Schlinkert** - -+ [github/jonschlinkert](https://github.com/jonschlinkert) -+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) -## License -Copyright (c) 2015 Jon Schlinkert -Released under the MIT license +* [github/jonschlinkert](https://github.com/jonschlinkert) +* [twitter/jonschlinkert](http://twitter.com/jonschlinkert) + +### License + +Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). +Released under the [MIT license](https://github.com/jonschlinkert/is-extglob/blob/master/LICENSE). *** -_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on March 06, 2015._ \ No newline at end of file +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.1.30, on September 03, 2016._ \ No newline at end of file diff --git a/browser.js b/browser.js index c21571a..1bb5d7c 100644 --- a/browser.js +++ b/browser.js @@ -2,13 +2,22 @@ /*! * is-extglob * - * Copyright (c) 2014-2015, Jon Schlinkert. + * Copyright (c) 2014-2016, Jon Schlinkert. * Licensed under the MIT License. */ module.exports = function isExtglob(str) { - return typeof str === 'string' - && /[@?!+*]\(/.test(str); + if (!str || typeof str !== 'string') { + return false; + } + + var m, matches = []; + while ((m = /(\\).|([@?!+*]\()/g.exec(str))) { + if (m[2]) matches.push(m[2]); + str = str.slice(m.index + m[0].length); + } + + return matches.length; }; },{}]},{},[1]); diff --git a/package.json b/package.json index 1056eac..aa02b90 100644 --- a/package.json +++ b/package.json @@ -3,17 +3,16 @@ "description": "Returns true if a string has an extglob.", "version": "1.0.0", "homepage": "https://github.com/jonschlinkert/is-extglob", - "author": { - "name": "Jon Schlinkert", - "url": "https://github.com/jonschlinkert" - }, + "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "repository": "jonschlinkert/is-extglob", "bugs": { "url": "https://github.com/jonschlinkert/is-extglob/issues" }, "license": "MIT", "files": [ - "index.js" + "index.js", + "LICENSE", + "README.md" ], "main": "index.js", "engines": { @@ -24,19 +23,19 @@ "prepublish": "browserify -o browser.js -e index.js" }, "devDependencies": { - "mocha": "*", - "should": "*" + "gulp-format-md": "^0.1.10" }, "keywords": [ "bash", "braces", "check", "exec", - "extglob", "expression", + "extglob", "glob", "globbing", "globstar", + "is", "match", "matches", "pattern", @@ -44,5 +43,29 @@ "regular", "string", "test" - ] + ], + "verb": { + "toc": false, + "layout": "default", + "tasks": [ + "readme" + ], + "plugins": [ + "gulp-format-md" + ], + "related": { + "list": [ + "is-glob", + "micromatch", + "has-glob" + ] + }, + "reflinks": [ + "verb", + "verb-generate-readme" + ], + "lint": { + "reflinks": true + } + } } \ No newline at end of file