-
-
Notifications
You must be signed in to change notification settings - Fork 698
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Length() should be removed from documentation #427
Comments
👍 For removing |
I concur. We'll need to keep it around for backwards compatibility. Maybe we'll do this:
Open to PRs removing docs for now. |
Great! Wouldn't it be more friendly for chai users to tell about the deprecation in the docs instead of removing the mention altogether? |
Sure sounds like a better plan. |
I'll quickly draft a PR for that now. |
Hey @keithamus, I noticed that even using describe 'overriding properties', ->
beforeEach ->
global.expect = require("chai").expect
global.when = require("when")
it 'works without overrides', ->
expect('something').to.have.length(9)
it 'breaks for each property', ->
chai = require "chai"
chai.Assertion.addChainableMethod 'have', ->
expect('something').to.have.length(9) # Fails with: TypeError: Property 'length' of object [object Function] is not a function
it 'breaks the length method', ->
chai = require "chai"
chai.Assertion.addChainableMethod 'to', ->
expect('something').to.have.length(9) # Fails with: TypeError: Property 'length' of object [object Function] is not a function
it 'does not break the lengthOf method', ->
chai = require "chai"
chai.Assertion.addChainableMethod 'to', ->
expect('something').to.have.lengthOf(9)
it 'breaks the chain precursor way', ->
chai = require "chai"
chai.Assertion.addChainableMethod 'to', ->
expect([1, 2]).to.have.length.above(1) # Fails with: TypeError: Object 0 has no method 'of' |
Sounds like that may be different bug. Please feel free to file a new issue. |
Is there still progress in this? What is the hold up at the moment? |
- node.js: Use stderr rather than stdout for logging Closes #120 - Merge pull request #129 from stephenmathieson/stderr node.js: Use stderr rather than stdout for logging - package: update "browserify" to v5.11.0 - dist: recompile - Release 2.0.0 - Add version to package.json Add version to package.json to work with license tools. - Add bower json to properly support bower install - Merge pull request #135 from panuhorsmalahti/master Add license to package.json - add support for chrome apps - corrected PR for other browsers Sorry, this should work now. window.localStorage is undefined in chrome apps. - package: update "browserify" to v6.1.0 - node: implement `DEBUG_FD` env variable support Closes #146. - Release 2.1.0 - better checking for undefined value - Added windows usage remarks - browser: Fixed that no logs output on IE8/9 IE 8/9 reports console methods as objects when using the typeof operator. https://web.archive.org/web/20111123190115/http://whattheheadsaid.com/2011/04/internet-explorer-9s-problematic-console-object Closes #148. - browser: check for console.log truthiness instead Related to PR #166 - Merge pull request #166 from mooyoul/ie8 browser: Fixed that no logs output on IE8/9 - Merge pull request #141 from bright/bower_json Add bower.json to properly support bower install - Merge pull request #149 from akaustel/master Added windows usage remarks - Merge pull request #143 from marmolejo/master add support for chrome apps - Readme++ - browser: use `typeof` to check for `console` existence It's a global, so we must check with typeof otherwise an error will be thrown if `console` is undefined. - Release 2.1.1 - fix: security error on safari - closes #167 - Merge pull request #168 from yields/fix/security-error fix: security error on safari - closes #167 - Updated documentation about using debug in a browser - changed bower package name - Merge pull request #171 from gnaryak/master Updated documentation about using debug in a browser - Merge pull request #174 from andrzejdus/master changed bower package name - component: fix "ms.js" repo location Closes #176. Squashed commit of the following: commit ae4d5f88497d7ce59f476e002ea9b703d3129159 Author: Anton Wilhelm <timaschew@users.noreply.github.com> Date: Tue Feb 10 09:26:54 2015 +0100 revert bumping the version commit 0689fb1fa035cbfddb71c19beb76160bd4f13875 Author: Anton Wilhelm <timaschew@users.noreply.github.com> Date: Fri Jan 30 12:05:40 2015 +0100 update ms.js lib and bump debug moved to https://github.com/rauchg/ms.js - update "ms" to v0.7.0 - package: update "browserify" to v9.0.3 - dist: recompile - History: normalize whitespace - Release 2.1.2 - Issue #182: replace high intensity foreground color for bold - Update Readme.md one character typo - Merge pull request #184 from mykwillis/patch-1 Update Readme.md - Renamed example/stderr.js to stdout.js - Updated example/stdout.js to match debug current behaviour - Updated stdout/stderr example - Merge pull request #186 from dmarcelino/181-stderr_stdout 181 stderr vs stdout - Merge pull request #183 from dmarcelino/182-color_bold Issue #182: replace high intensity foreground color for bold - Release 2.1.3 - Makefile: add a `distclean` target This patch prevents the `clean` target from removing node_modules and adds a `distclean` target instead. Fixes #162. - browser: expose `storage` This patch allows overriding the default `storage` mechanism. Closes #188. - Merge pull request #189 from stephenmathieson/fix/gh-162 Makefile: add a `distclean` target - Merge pull request #190 from stephenmathieson/browser/expose-storage browser: expose `storage` - Fixed a typo in README - Merge pull request #191 from amir-s/patch-1 Fixed a typo in README - add logging to file example to readme - Merge pull request #193 from DanielOchoa/update-readme add logging to file example to readme - update "ms" to v0.7.1 - Merge pull request #202 from dougwilson/update-ms update "ms" to v0.7.1 - Release 2.2.0 - Update Readme.md - Fix bundle arguments for latest browserify - Update Readme.md Close #17 - Update versions. - As inspect moved to repo, changed how date formated - Added first warning for static should and wrapped value. - Refactor Assertion - Added warning to .eql for non strict checks. Also added ability to disable warnings with env variable SHOULDJS_WARN. - Fix failed test stack - Refine CONTRIBUTING.md - Now nested assertion can contribute message for parent assertions - Primitive it is primitive, not a wrapper - Updated readme and history for new changes. Fix #13 and visionmedia/should.js#214 - Release 4.1.0 - Update should dependencies - bring new inspections with type detection - Release 4.2.0 - Make inspection only when we throw exception - Release 4.2.1 - Exclude error tests from browser tests as it is too different per browser - Add bower.json to support bower package - Merge pull request #24 from qqzh002/master Add bower.json to support bower package - Update Readme.md - Update should-equal, add reason why eql failed - A bit more clear message - Clear how to run test - Remove test running from gulp file - Release 4.3.0 - Merge branch 'master' of github.com:shouldjs/should.js - .throw() should check that given object is a function. Fix #27 - Release 4.3.1 - Reimplement assert via should assertion - Remove passed format - Tests for assert. Adopted with assumptions in shouldjs - Attempt to make error tests working in non v8 browsers. - Release 4.4.0 - Release 4.4.1 - Return old behavour not checking prototypes - Release 4.4.2 - Fixed little typo in example - Merge pull request #31 from robi50/patch-1 Fixed little typo in example - Update .travis.yml - Added jsdoc comments - Merge branch 'master' of github.com:shouldjs/should.js - Release 4.4.3 - Added .enumerables - Release 4.4.4 - Add possibility to use old .eql implementation - Release 4.5.0 - Copy paste typo - fixed global leak of _eql - Merge pull request #36 from mrlannigan/master fixed global leak of _eql - Release 4.5.1 - Fix #37 - Release 4.5.2 - Add everywhere shielded by Proxy this. Which check if property exist. - Release 4.6.0 - Update bower.json version - Show diff only if both objects have the same type - Release 4.6.1 - Move examples out of repository - Make assertion properties to be configurable - Release 4.6.2 - Fool check - When objects both are empty we check if they are equals. - Release 4.6.3 - Fix bug in containDeep - Release 4.6.4 - When nested errors happen, do not generate message - Release 4.6.5 - First update for future release. - Update Readme.md - Update History.md - Update History.md - Update Readme.md - Move data generation out of test - Merge branch '5.x' of github.com:shouldjs/should.js into 5.x - fix version - Release 5.0.0 - Export util - Release 5.0.1 - correct jsdoc for Assertion#keys Assertion#keys does not accept Object as a argument. The jsdoc comment describes that it can accept Object. - add examples for Assertion#keys - add examples for Assertion#properties - Merge pull request #43 from fediev/master improve jsdoc comments for assertion keys and properties - Update Readme.md - Initial support of es6 symbols, generators, iterators, iterables - Merge branch 'master' of github.com:shouldjs/should.js - Fixes shouldjs/should.js#45 - Object #<Object> has no method 'isString' when calling propertyByPath with String argument instead of Array - Merge pull request #47 from boatmeme/master Fixes shouldjs/should.js#45 - Object #<Object> has no method 'isString' ... - Add generators support to util.forEach - Merge branch 'master' of github.com:shouldjs/should.js - Release 5.1.0 - Added Gitter badge - Merge pull request #49 from gitter-badger/gitter-badge Add a Gitter chat badge to Readme.md - jsdoc example: 'string' should be 'String' - Merge pull request #51 from kaspars/master jsdoc example: 'string' should be 'String' - Correct docs - Merge branch 'master' of github.com:shouldjs/should.js - Add matchAny assertion Allows matching one or more object values or array elements - Add tests for matchAny assertion - Tweak working in matchAny description - Merge pull request #53 from nickdaugherty/add/matchAny Add/matchAny - Release 5.2.0 - put version to 5.2.0 - Remove version tag from bower.json can be removed like mentioned in bower spec: 'Ignored by Bower as git tags are used instead.' - Merge pull request #54 from happy-coding/master remove version tag from bower.json - Fix #44 and #55 - Update docs - Merge branch 'master' of github.com:shouldjs/should.js - Release 6.0.0 - Release 6.0.1 - Experimental change to remove getter assertions - Use in all assertions non getter form - Release 6.0.2 - Replace rest of getter usage - Release 6.0.3 - Fixed testing instrucitons - Merge pull request #66 from garrows/fix/testing Fixed testing instrucitons - Typo - Update to new type, format and equal - Initial draft of changelog for upcoming release - Merge branch 'master' of github.com:shouldjs/should.js - Make .match* more consistent - Merge remote-tracking branch 'origin/no-get' Conflicts: lib/ext/type.js should.js should.min.js - Adopt new format package, remove Proxy usage - Remove proxy test - Add more accurate regexps for IE - Adjust spaces for safari and IE - Update History.md - Correct sources, readme etc to new non-getter style assertions - Merge branch 'master' of github.com:shouldjs/should.js - Update chain.js - Update chain.js - Release 7.0.0 - Update packages - Release 7.0.1 - Small corrections - Update match.js - Release 7.0.2 - Merge branch 'master' of github.com:shouldjs/should.js - Update number.js - alias .deepEqual to .eql - Merge pull request #74 from Qix-/deepEqual alias .deepEqual to .eql - Release 7.0.3 - Small repo goodies - Missing doc for .deepEqual - Before doing matching for object - object. Check that object have property - Release 7.0.4 - add browserify support - Merge pull request #82 from ngot/browserify-support add browserify support - Add .belowOrEqual and .aboveOrEqual - Update - Add .oneOf and .equalOneOf - Release 7.1.0 - Show diff for keys assertion - Merge pull request #264 from cjthompson/keys_diff Show diff for keys assertion - Use SVG badge - Merge pull request #267 from shinnn/master Use SVG badge - Allow messages to be functions - Remove unused argument - Fix assert documentation - Rewrite pretty-printing HTML elements to prevent throwing internal errors Fixes errors occuring when using a non-native DOM implementation - assert: .closeTo() verify value's type before assertion - Merge pull request #275 from DrRataplan/master Rewrite pretty-printing HTML elements to prevent throwing internal errors - Dry up code - Merge pull request #289 from charlierudolph/cr-dryUpCode Dry up code - resolves #255: upgrade mocha - Merge pull request #292 from boneskull/mocha resolves #255: upgrade mocha - Merge pull request #279 from mohayonao/fix-closeTo fix: closeTo should check value's type before assertion - Merge pull request #277 from charlierudolph/fix-doc Fix assert documentation - Merge pull request #269 from charlierudolph/cr-codeCleanup Remove unused argument - Merge pull request #268 from charlierudolph/cr-lazyMessages Allow messages to be functions - Release 1.9.2 - readme: update contributors for 1.9.2 - Allows writing lint-friendly tests This makes the final assertion checks noop functions so that they can be formatted like function calls. This keeps linters (JSLint/JSHint) off our back for having an inop expression. Completes #41 - Change test to not trigger argument bug - added check for logging negative zero - a more readable/simple condition statement, as pointed out by @keithamus - added test for inspecting `-0` - why not more assertions - Merge pull request #298 from dasilvacontin/negativeZeroLogging added check for logging negative zero - Make the NOOP function a shared constant - Add docs for function style NOOP asserts - Revise documentation wording - Add unit tests for chained terminating property asserts - Add a couple more unit tests - Fix #299: the test is defining global variables - Merge pull request #300 from julienw/299-fix-getMessage-test Fix #299: the test is defining global variables - Merge pull request #297 from prodatakey/noopchainfunc Allows writing lint-friendly tests - Release 1.10.0 - Revert "Allows writing lint-friendly tests" - Merge pull request #306 from chaijs/revert-297-noopchainfunc Revert "Allows writing lint-friendly tests" - Fix properties with `undefined` value pass property assertion - couting variables just once - Merge pull request #309 from ericdouglas/iterableEqual-couting-once Couting variables just once - Handle array indexing terminating paths - Small unit test fix - Refactor if statement out - Refactor common functionality, document, test - More unit tests for new utility functions - Fix typo - Issue #305 fixed, added assert.isAbove and assert.isBelow - Merge pull request #308 from prodatakey/hasproperty Fix properties with `undefined` value pass property assertion - Merge pull request #311 from cjqed/305-above-below-on-assert Issue #305 fixed, added assert.isAbove and assert.isBelow - Fixes issue #291, adds assert.sameDeepMembers - Changed public comment of sameDeepMemebers to be more clear - Merge pull request #312 from cjqed/291-assert-same-deep-members Fixes issue #291, adds assert.sameDeepMembers - Added the all and any flags for keys assertion, with all being the default behavior Extended keys documentation and set bools instead of changing flags in the keys assertion Miswrote in keys documentation, corrected mistake Edited documentation for keys to better match how it interacts with contains and have - Merge pull request #313 from cjqed/254-expect-any-all Added the 'any' and 'all' flags for 'keys' assertion, with 'all' being the default behavior - update docs: getAllFlags -> transferFlags Documentation was out of date - minor docs typo - typos in docs - Merge pull request #316 from jasonkarns/patch-1 update docs: getAllFlags -> transferFlags - Merge pull request #318 from jasonkarns/patch-3 typos in docs - Merge pull request #317 from jasonkarns/patch-2 minor docs typo - Fix docs for overwriteChainableMethod parameters - Merge pull request #325 from chasenlehara/overwriteChainableMethodDocs Fix docs for overwriteChainableMethod parameters - Add includes and contains alias (fixes #327) - Merge pull request #328 from lo1tuma/issue-327 Add includes and contains alias (fixes #327) - expect/should tests for `change`,`increase`,`decrease` - assert tests for `change`,`increase`,`decrease` - added `change`,`increase`,`decrease` assertions (#330) - updated assertion interface with `change` (#330) - Typo, the flag is called 'contains' with an 's' - Merge pull request #334 from hurrymaplelad/patch-1 Typo, the flag is called 'contains' with an 's' - updated `change` to work w/ non-number values + tests - cleanup (per notes on pr #333) - Expose chai util through the chai object The chai util object has a lot of useful functions that can be used outside of the context of assertions. - Merge pull request #335 from DingoEatingFuzz/expose-util Expose the util package through the chai object - cleaned out `.by` for #333 - more `by` cleanup - Merge pull request #333 from cmpolis/change-assertions Added `change`, `increase` and `decrease` assertions with `by` chain (#330) - add the which chain method as per issue #347 - Merge pull request #349 from toastynerd/add-which-chain-method add the which chain method as per issue #347 - added should.fail() method - changed default message for should.fail() - using proper error checking method for should - added fail() method to expect interface - Update copyright date - Merge pull request #357 from danilovaz/master Update copyright date - contrib: publish release strategy and travis npm creds #337 - Fix #359 keys() sorts input unexpectedly - Merge pull request #359 from gregglind/b359-unexpected-keys-sort Arrays passed to `.keys()` assertions are sorted (unexpectedly) by side-effect - fix #359. Add `.keys(object) - `.keys(object)n => .keys(Object.keys(Object)` - added exceptions for 'if first arg is non-string, then it must be only arg. => `.keys(Array|Object, ...)` Warning: `Object.keys` must exist on systems to use this functionality. - Merge pull request #361 from gregglind/b265-keys-object Fix #265 - v2.0.0 - fail method added directly to expect - documented fail methods for expect and should interfaces - Merge pull request #356 from Soviut/master Added fail() method to Should and Expect interfaces - Merge pull request #364 from chaijs/v2.0.0 v2.0.0 - 2.0.0 - Fix travis.yml deploy - Merge pull request #365 from chaijs/fix-travis Fix travis.yml deploy - Increment version to 2.0.1. See https://github.com/chaijs/chai/issues/373 - Merge pull request #374 from jmm/v2.0.1 Increment version to 2.0.1. - Release v2.1.0 - Merge pull request #375 from chaijs/release-2.1.0 Release v2.1.0 - Primitives now use valueOf in shouldGetter This allows the should syntax to be more resilient when dealing with modified primitive constructors which may occur more frequently with ES6 to ES5 transpilation. - Merge pull request #379 from dcneiner/should-primitive-fix Getter for Should syntax now uses valueOf for primitives - Add a minor precision that empty asserts on strings too. - Merge pull request #381 from astorije/patch-1 Add a minor precision that empty asserts on strings too. - Add missing docstring for showDiff argument of assert - config.truncateThreshold docs: simpler wording - Merge pull request #383 from gurdiga/config-doc-wording-improvement config.truncateThreshold docs: simpler wording - Merge pull request #382 from astorije/patch-2 Add missing docstring for showDiff argument of assert - fix indexing into array with deep propery * added unit test to expect with code from documentation * added default to res in _getPathValue - updates to reflect code style preference from @keithamus - Merge pull request #385 from eldritch-fossicker/master fix indexing into array with deep propery - Release v2.1.1 - Merge pull request #388 from chaijs/release-2.1.1 Release v2.1.1 - Update `git summary` in README - Merge pull request #389 from chaijs/update-git-summary Update `git summary` in README - No longer using eval on assert operator #386 - Merge pull request #395 from cjqed/386-assert-operator-no-eval No longer using eval on assert operator #386 - Add Keith Cirkel to CONTRIBUTING.md - Merge pull request #396 from chaijs/add-keith-cirkel-contributing-md Add Keith Cirkel to CONTRIBUTING.md - Add missing parameter showDiff and make docstring "documentationable" - Release v2.1.2 - Merge pull request #400 from chaijs/release-2.1.2 Release v2.1.2 - Add README badges - Escaping dot should be taken in deep property * removing backslash prior to "." * test case: "foo\\.bar" names {"foo.bar": "baz"} - Feature: backslash-escaping in `.deep.property` This commit includes: * getPathInfo handles escaping `.[]` * Documentation added to `.property` * Documentation added to `.getPathInfo` * Test cases for `.property` * Test cases for `.deep.property` * Test cases for `.getPathInfo` Note that the input of `.getPathInfo` assumed to match the following: /^(?:(?:\\[.\[\]]|[^.\[\]])+|\[\d+\])(?:\.(?:\\[.\[\]]|[^.\[\]])+|\[\d+\])$/ - take regular expression apart - Documentation of escaping in `.deep` flag. - Merge pull request #402 from umireon/escaping-dot-should-be-taken Escaping dot should be taken in deep property - Tweak documentation on `.deep` flag. - Merge pull request #405 from chaijs/deep-escape-doc-tweaks Tweak documentation on `.deep` flag. - Release v2.2.0 - Add `ownPropertyDescriptor` assertion. - Merge pull request #411 from chaijs/release-2.2.0 Release v2.2.0 - Merge pull request #408 from ljharb/enumerableProperty Add `propertyDescriptor` assertion - Fix super minor typo in an example - Remove trailing whitespaces - Merge pull request #417 from astorije/astorije/minimalist-typo Fix minimalist typo in doc example - Bump assertion-error to 1.0.1 Fixes #391 - Add `make test-firefox` - Use a regex to account for property ordering issues across engines. - Fix a small bug in the .null assertion docs - Merge pull request #422 from ljharb/fix_descriptor_tests Fix `ownPropertyDescriptor` tests - Merge pull request #423 from ehntoo/patch-1 Fix a small inconsistency in the .null assertion docs - Fix erroneous example in the docstring of the keys assertion - Add .length(value) deprecation warning to documentation Fixes https://github.com/chaijs/chai/issues/427 - Release 2.3.0 - Merge pull request #431 from keithamus/release-2.3.0 Release 2.3.0 - Fix travis deploy api key - Merge pull request #432 from keithamus/fix-api-key Fix travis deploy api key - Merge pull request #397 from astorije/astorije/assert-plugin-api Add missing parameter showDiff and make docstring "documentationable" - Merge pull request #401 from chaijs/add-readme-badges Add README badges - Merge pull request #424 from astorije/astorije/minimalist-typo Fix erroneous example in the docstring of the keys assertion - Add Assertion alias: matches => match. Resolves #438 - Merge pull request #439 from thejameskyle/matches-alias Add Assertion alias: matches => match - Merge pull request #429 from valscion/document-deprecation-plan-of-length Add .length(value) deprecation warning to documentation - Quick version fix for length deprecation - Update `lengthOf` examples - Merge pull request #419 from chaijs/bump-assertion-version Bump assertion-error to 1.0.1 - Merge pull request #444 from chaijs/update-lengthof-docs Update `lengthOf` examples - Switch to use Browserify for builds Fixes #362. - Don't rely on optional args value being implicitly undefined - Add tests for undefined property error - Merge pull request #454 from onefifth/undefined_property_value Fix misleading .has.property assertions tests - Merge pull request #451 from csnover/browserify Switch to use Browserify for builds - Assert ifError now throws the error passed in, to keep it consistent with node's assert.ifError - Replaced type.js with the "chaijs/type-detect" library. - Merge pull request #456 from chaijs/3.x.x 3.x.x - Remove stray character in `assert.notInclude` docs - Merge pull request #458 from BinaryMuse/patch-1 Remove stray character in `assert.notInclude` docs - Remove trailing comma Fixes #459 - Automate release process as much as possible - Merge pull request #460 from keithamus/automate-release Automate release process as much as possible - Update release procedure on CONTRIBUTING.md - Ensure to include all changed files in release task - chai@3.0.0 - Merge pull request #461 from keithamus/release-3.0.0 chai@3.0.0 - Remove moot `version` property from bower.json Per bower/bower.json-spec@a325da3 Also their maintainer says they probably won't ever use it: http://stackoverflow.com/questions/24844901/bowers-bower-json-file-version-property - Remove moot `version` property bump from Makefile Makefile - Merge pull request #468 from kkirsche/patch-1 Remove moot `version` property from bower.json - Assertions to test if objects are extensible - Assertions to test if objects are sealed - Assertions to test if objects are frozen - Merge pull request #479 from matthewlucock/extensible-assertions Assertions to test if objects are extensible. - Added support for NaN. Tests included. - Merge pull request #480 from bradcypert/NaN-support Added tests and expectations for NaN. Ex: `expect(4).not.to.be.NaN;` - chai@3.1.0 - Merge pull request #481 from keithamus/release-3.1.0 chai@3.1.0 - Re-encrypt travis API key https://twitter.com/Keithamus/status/621789900250193920 - Merge pull request #482 from keithamus/reencrypt-travis-api-key Re-encrypt travis API key - Add respondsTo and satisfies as aliases - Fixing a typo in the `getProperties()` utility ...where `subject` should apparently be `object`. - Merge pull request #485 from jluchiji/master Fixing a typo in the `getProperties()` utility - Merge pull request #484 from couchand/patch-1 Add respondsTo and satisfies as aliases - Added links to contribution guidelines to README - Merge pull request #486 from jluchiji/master Added links to contribution guidelines to README - Fix docstring regarding assert.notFrozen - Add aliases to extensible, sealed and frozen properties for consistency - Fix wrong call to the underlying method when checking if an object is frozen - Merge pull request #490 from astorije/patch-2 Fix wrong call to the underlying method when checking if an object is frozen - Add tests for frozen, sealed and extensible aliases - Add aliases (and tests) for assert.ok and assert.notOk to match the other isSomething assertions - Make throws aliases consistent across examples and definitions - Add tests for throws aliases - Invert assertions and aliases for is* assertions to make the documentation and code consistent with other is* assertions - Merge pull request #489 from astorije/astorije/aliases Various work on aliases - chai@3.2.0 - Merge pull request #492 from keithamus/release-3.2.0 chai@3.2.0 - Make getCommandId() more readable. - Merge pull request #3503 from datenreisender/handle-dotless-commands Handle dotless commands in the REPL. - remove docco as dependency (still a devDependency) also changed version requirement notation for from `n.n.x` to `~n.n.n` like the others - Merge pull request #3508 from bwin/patch-1 remove docco as dependency (still a devDependency) - Remove sudo from install command in introduction 1. It just seems like a bad practice to encourage people to run npm with `sudo` 2. The doc wasn’t consistent with itself — down below in the full “Installation” section the same command did *not* include `sudo` - Remove typo No idea how that got in there. - Merge pull request #3509 from aviflax/patch-1 Remove sudo from install command in introduction - Retina favicon.ico - Update link to "CoffeeScript Ristretto", fixes #3489 - Update link to "CoffeeScript Ristretto", fixes #3489 - Fix off-by-one issue with string interpolation in lexer - Fix wrong location issue in string interpolation starting with line break - Merge pull request #3524 from minodisk/master Fix location data bug for string interpolations - Fix wrong location issue in "string" interpolation - Merge pull request #3533 from minodisk/fix-string-interpolation Fix wrong location issue in "string" interpolation - Fix wrong location issue in heregex interpolation - Merge pull request #3539 from minodisk/fix-heregex-interpolation Fix wrong location issue in heregex interpolation - Add a test case for compiler error formatting. Error formatting with mixed tab and space. - Fixed an error formatting issue f7b36054fcbcc0c26f When using tab for code indent, the error marker will be wrongly positioned. - Merge pull request #3543 from ysmood/err_info_issue Fixed an error formatting issue - `bin/cake` will be in `coffeescript` Since the name change, `bin/cake` will be in `coffeescript`, not `coffee-script`. - Merge pull request #3545 from jordanbtucker/patch-1 `bin/cake` will be in `coffeescript` - Fix the "Examples" link on coffeescript.org It now points to the "Trending repositories" of the month. - Fix the "Examples" link on coffeescript.org It now points to the "Trending repositories" of the month. - Use '.js.map' as file extension for created map files Addresses jashkenas/coffeescript#3297 - Merge pull request #3561 from yjo/js-map-file-ext Use '.js.map' as file extension for created map files - Exit with an error code 1 if could not write a compiled JavaScript file or a source map Currently CoffeeScript reports a success even if it failed to write a compiled file to disk. This behavior confuses automated tools such as test runners which may return false positives if a test failed to compile because of a file lock. - Merge pull request #3592 from mmotorny/master Exit with an error code 1 if could not write a compiled JavaScript file ... - Rebuild docs - Update changelog for 1.8.0 - Merge pull request #3611 from lydell/release-1.8.0 Release 1.8.0 - CoffeeScript 1.8.0 - merged - Quick spelling fixes - Merge pull request #3616 from epmatsw/spelling Quick spelling fixes - Remove josh/nack from Examples - Add Atom to Examples - Merge pull request #3618 from josh/update-site-example-projects Refresh site Examples section - Merge remote-tracking branch 'A/master' - removed support for '->*" and '=>*' - added 'yield from' - added 'yield return' - always wrap 'yield' in () to allow composability with all other operators - added tests for yield, yield from, yield return and yield in if statements - Fixed jashkenas/coffeescript#3638 - invalid block comments compilation - Added test for jashkenas/coffee-script#3638 - Merge pull request #3240 from alubbe/master using 'yield' automatically turns functions into generators - Merge pull request #3638 from lbeschastny/issue3638 Invalid block comments compilation - Use stdio option instead of customFds - Added failing test case for the `yield` precedence - Improved test readability + fixed integer divison - implemented proper precedence for 'yield' - Merge pull request #3677 from alubbe/master implemented proper precedence for 'yield' - Merge pull request #3521 from gscottolson/master Retina favicon.ico - Added an initial bower.json configuration file - Removed "mkdirp": "~0.3.5" from bower.json - Merge pull request #3703 from bigtunacan/master Add bower.json configuration - add Die Alternative to books section - fixed yield keyword not working in switch & for loop expressions - added tests for yield in switch & for loop expressions - Merge pull request #3734 from alubbe/master fixed yield keyword not working in switch & for loop expressions - include logo .svg files - Merge pull request #3748 from sscotth/master Include logo .svg files - Refactor interpolation (and string and regex) handling in lexer - Fix #3394: Unclosed single-quoted strings (both regular ones and heredocs) used to pass through the lexer, causing a parsing error later, while double-quoted strings caused an error already in the lexing phase. Now both single and double-quoted unclosed strings error out in the lexer (which is the more logical option) with consistent error messages. This also fixes the last comment by @satyr in #3301. - Similar to the above, unclosed heregexes also used to pass through the lexer and not error until in the parsing phase, which resulted in confusing error messages. This has been fixed, too. - Fix #3348, by adding passing tests. - Fix #3529: If a string starts with an interpolation, an empty string is no longer emitted before the interpolation (unless it is needed to coerce the interpolation into a string). - Block comments cannot contain `*/`. Now the error message also shows exactly where the offending `*/`. This improvement might seem unrelated, but I had to touch that code anyway to refactor string and regex related code, and the change was very trivial. Moreover, it's consistent with the next two points. - Regexes cannot start with `*`. Now the error message also shows exactly where the offending `*` is. (It might actually not be exatly at the start in heregexes.) It is a very minor improvement, but it was trivial to add. - Octal escapes in strings are forbidden in CoffeeScript (just like in JavaScript strict mode). However, this used to be the case only for regular strings. Now they are also forbidden in heredocs. Moreover, the errors now point at the offending octal escape. - Invalid regex flags are no longer allowed. This includes repeated modifiers and unknown ones. Moreover, invalid modifiers do not stop a heregex from being matched, which results in better error messages. - Fix #3621: `///a#{1}///` compiles to `RegExp("a" + 1)`. So does `RegExp("a#{1}")`. Still, those two code snippets used to generate different tokens, which is a bit weird, but more importantly causes problems for coffeelint (see clutchski/coffeelint#340). This required lots of tests in test/location.coffee to be updated. Note that some updates to those tests are unrelated to this point; some have been updated to be more consistent (I discovered this because the refactored code happened to be seemingly more correct). - Regular regex literals used to erraneously allow newlines to be escaped, causing invalid JavaScript output. This has been fixed. - Heregexes may now be completely empty (`//////`), instead of erroring out with a confusing message. - Fix #2388: Heredocs and heregexes used to be lexed simply, which meant that you couldn't nest a heredoc within a heredoc (double-quoted, that is) or a heregex inside a heregex. - Fix #2321: If you used division inside interpolation and then a slash later in the string containing that interpolation, the division slash and the latter slash was erraneously matched as a regex. This has been fixed. - Indentation inside interpolations in heredocs no longer affect how much indentation is removed from each line of the heredoc (which is more intuitive). - Whitespace is now correctly trimmed from the start and end of strings in a few edge cases. - Last but not least, the lexing of interpolated strings now seems to be more efficient. For a regular double-quoted string, we used to use a custom function to find the end of it (taking interpolations and interpolations within interpolations etc. into account). Then we used to re-find the interpolations and recursively lex their contents. In effect, the same string was processed twice, or even more in the case of deeper nesting of interpolations. Now the same string is processed just once. - Code duplication between regular strings, heredocs, regular regexes and heregexes has been reduced. - The above two points should result in more easily read code, too. - Point "missing )/}/]" errors to the unclosed (/{/[ Previously such errors pointed at the end of the input, which wasn't very helpful. This is also consistent with unclosed strings, where the errors point at the opening quote. Note that this includes unclosed #{ (interpolations). - Merge pull request #3770 from lydell/interpolations Refactor interpolation (and string and regex) handling in lexer - Fix issue #3498 - Merge pull request #3771 from mbrio/master Fix issue #3498 - Fix #2516, #3560: Unicode space handling It is possible to match only valid JavaScript identifiers with a really long regex (like coco and CoffeeScriptRedux does), but CoffeeScript uses a much simpler one, which allows a bit too much. Quoting jashkenas/coffeescript#1718 #issuecomment-2152464 @jashkenas: > But it still seems very much across the "worth it" line. You'll get the > SyntaxError as soon as it hits JS, and performance aside -- even the increase > in filesize for our browser coffee-script.js lib seems too much, considering > this is something no one ever does, apart from experimentation. In short, CoffeeScript treats any non-ASCII character as part of an identifier. However, unicode spaces should be excluded since having blank characters as part of a _word_ is very confusing. This commit does so, while still keeping the regex really simple. - Merge pull request #3774 from lydell/unicode-spaces Fix #2516, #3560: Unicode space handling - Fix #3598: Make unary + and - generate _refs Before commit c056c93e `Op::isComplex()` used to return true always. As far as I understand, that commit attempts to exclude code such as `+1` and `-2` from being marked as complex (and thus getting cached into `_ref` variables sometimes). CoffeeScript is supposed to generate readable output so that choice is understandable. However, it also excludes code such as `+a` (by mistake I believe), which can cause `a` to be coerced multiple times. This commit fixes this by only excluding unary + and - ops followed by a number. - Fix #3410, #3182: Allow regex to start with space or = A regex may not follow a specific set of tokens. These were already known before in the `NOT_REGEX` and `NOT_SPACED_REGEX` arrays. (However, I've refactored them to be more correct and to add a few missing tokens). In all other cases (except after a spaced callable) a slash is the start of a regex, and may now start with a space or an equals sign. It’s really that simple! A slash after a spaced callable is the only ambigous case. We cannot know if that's division or function application with a regex as the argument. The spacing determines which is which: Space on both sides: - `a / b/i` -> `a / b / i` - `a /= b/i` -> `a /= b / i` No spaces: - `a/b/i` -> `a / b / i` - `a/=b/i` -> `a /= b / i` Space on the right side: - `a/ b/i` -> `a / b / i` - `a/= b/i` -> `a /= b / i` Space on the left side: - `a /b/i` -> `a(/b/i)` - `a /=b/i` -> `a(/=b/i)` The last case used to compile to `a /= b / i`, but that has been changed to be consistent with the `/` operator. The last case really looks like a regex, so it should be parsed as one. Moreover, you may now also space the `/` and `/=` operators with other whitespace characters than a space (such as tabs and non-breaking spaces) for consistency. Lastly, unclosed regexes are now reported as such, instead of generating some other confusing error message. It should perhaps also be noted that apart from escaping (such as `a /\ b/`) you may now also use parentheses to disambiguate division and regex: `a (/ b/)`. See https://github.com/jashkenas/coffeescript/issues/3182#issuecomment-26688427. - Fix #3671: Allow step in optimized range comprehensions Allow the `by c` part in `for [a..b] by c then`. Continue disallowing a `when d` part, since it makes no sense having a guard that isn't given access to anything that changes on every iteration. - Merge pull request #3783 from lydell/issue-3671 Fix #3671: Allow step in optimized range comprehensions - Merge pull request #3777 from lydell/unary-plus-minus-refs Fix #3598: Make unary + and - generate _refs - Merge pull request #3782 from lydell/regex Fix #3410, #3182: Allow regex to start with space or = - Add test for reserved keywords as parameters - Fix #1500, #1574, #3318: Name generated vars uniquely Any variables generated by CoffeeScript are now made sure to be named to something not present in the source code being compiled. This way you can no longer interfere with them, either on purpose or by mistake. (#1500, #1574) For example, `({a}, _arg) ->` now compiles correctly. (#1574) As opposed to the somewhat complex implementations discussed in #1500, this commit takes a very simple approach by saving all used variables names using a single pass over the token stream. Any generated variables are then made sure not to exist in that list. `(@a) -> a` used to be equivalent to `(@a) -> @a`, but now throws a runtime `ReferenceError` instead (unless `a` exists in an upper scope of course). (#3318) `(@a) ->` used to compile to `(function(a) { this.a = a; })`. Now it compiles to `(function(_at_a) { this.a = _at_a; })`. (But you cannot access `_at_a` either, of course.) Because of the above, `(@a, a) ->` is now valid; `@a` and `a` are not duplicate parameters. Duplicate this-parameters with a reserved word, such as `(@case, @case) ->`, used to compile but now throws, just like regular duplicate parameters. - Allow variables named like helper functions - Better error message for unexpected CALL_END - Merge pull request #3788 from lydell/unexpected-call-end Better error message for unexpected CALL_END - Merge pull request #3784 from lydell/unique-generated-vars Unique generated vars - Get rid of `Scope.root` hack Using the static property `Scope.root` for the top-level scope of a file is a hack, which makes it impossible to have several independent `Scope` instances at the same time (should we ever need that). This commit makes every instance have a reference to its root instead. - Fix #3502: Define param variables when expansion - Merge pull request #3790 from lydell/scope-root Get rid of `Scope.root` hack - Merge pull request #3791 from lydell/issue-3502 Fix #3502: Define param variables when expansion - Fix #3194: Make strings always uncallable No matter if they have interpolations or not. - Make CoffeeScript work with jison 0.4.14+ Since zaach/jison commit 3548861b, `parser.lexer` is never modified anymore (a copy of it is made, and that copy is modified instead). CoffeeScript itself modifies `parser.lexer` and then accesses those modifications in the custom `parser.yy.parseError` function, but that of course does not work anymore. This commit puts the data that `parser.yy.parseError` needs directly on the `parser` so that it is not lost. Supersedes #3603. Fixes #3608 and zaach/jison#243. - Merge pull request #3794 from lydell/jison-update Make CoffeeScript work with jison 0.4.14+ - Make regexes always uncallable No matter if they have interpolations or not. - Merge pull request #3792 from lydell/issue-3194 Fix #3194: Make strings always uncallable - Fix #1316: Interpolate interpolations safely Instead of compiling to `"" + + (+"-");`, `"#{+}-"'` now gives an appropriate error message: [stdin]:1:5: error: unexpected end of interpolation "#{+}-" ^ This is done by _always_ (instead of just sometimes) wrapping the interpolations in parentheses in the lexer. Unnecessary parentheses won't be output anyway. I got tired of updating the tests in test/location.coffee (which I had enough of in #3770), which relies on implementation details (the exact amount of tokens generated for a given string of code) to do their testing, so I refactored them to be less fragile. - Merge pull request #3787 from lydell/single-token-interpolation Fix #1316: Interpolate interpolations safely - Fixed broken link - Merge pull request #3798 from ogennadi/patch-1 Fixed broken link - Decouple "mkdirp" Make coffee completely independent. - Fix #3804: Provide list of referenced vars to REPL Supersedes #3805. Here is a comparison of master, #3805 and this commit: # master $ bin/coffee coffee> 1 %% 2 TypeError: Array.prototype.indexOf called on null or undefined # #3805 $ bin/coffee coffee> 1 %% 2 1 coffee> (_results = null; i) for i in [1, 2, 3] TypeError: Cannot call method 'push' of null # this commit $ bin/coffee coffee> 1 %% 2 1 coffee> (_results = null; i) for i in [1, 2, 3] [ 1, 2, 3 ] - Merge pull request #3807 from lydell/repl-fix Fix #3804: Provide list of referenced vars to REPL - Fix broken CoffeeScript APIs As evidenced in #3804, commit 8ab15d7 broke the CoffeeScript API. The REPL uses those APIs, but wasn't updated in that commit. Still, that shouldn't have _broken_ the REPL. The reason it broke is because the added _option_ 'referencedVars' wasn't actually _optional;_ if it was omitted code that relies on it being set broke. This commit defaults that option to an empty array, which makes things behave exactly like before when the 'referencedVars' option is omitted. - Merge pull request #3808 from lydell/api-break-fix Fix broken CoffeeScript APIs - Update index.html.js Node comes with npm installed and "npm" is not an abbreviation for "Node Package Manager". - Merge pull request #3812 from xfq/patch-1 Update index.html.js - Add test for mkdirp - Optimize the mkdirp test - rebuilt browser just for testing - Merge pull request #3800 from ysmood/decouple_mkdirp Decouple "mkdirp". - removing the mkdirp test - CoffeeScript 1.9.0 - text tweak - Merge branch 'gh-pages' - more text tweaks - docs - Fixes #3816 -- prettier internal variable names. - #3819 changelog docs - move changelog - Revert "move changelog" This reverts commit 3ddd3115eb3e703c0ad78cc2742b24c8585e37b7. - Name generated variables without leading underscore For example, `ref` not `_ref`. It's cleaner. This also fixes #3816. - Merge pull request #3821 from lydell/no-underscore Name generated variables without leading underscore - redoc - Merge branch 'master' of github.com:jashkenas/coffeescript - Fix #3822: Include delimiters in string/regex locations - Merge pull request #3826 from lydell/string-locations Fix #3822: Include delimiters in string/regex locations - Fix #3778: Make for loops more consistent The following two lines might seem equivalent: for n in [1, 2, 3] by a then a = 4; n for n in [1, 2, 3] by +a then a = 4; n But they used not to be, because `+a` was cached into a `ref`, while the plain `a` wasn’t. Now even simple identifiers are cached, making the two lines equivalent as expected. - Merge pull request #3786 from lydell/loop-safety Fix #3778: Make for loops more consistent - Improve error messages for unexpected regexes - Allow super in methods with dynamic names As discussed in https://github.com/jashkenas/coffeescript/issues/3039#issuecomment-68916918. This is the first step to implement dynamic object literal keys (see #3597). This also fixes #1392. In short, `super` is now allowed: # in class definitions: class A instanceMethod: -> super @staticMethod: -> super @staticMethod2 = -> super # in assignment where the next to last access is 'prototype': A::m = -> super A.prototype.m = -> super a.b()[5]::m = -> super A::[x()] = -> super class B @::m = -> super - Merge pull request #3785 from lydell/super Allow super in methods with dynamic names - Merge pull request #3827 from lydell/unexpected-regex Improve error messages for unexpected regexes - Fix incorrect token representation The third element in a token should just be an object containing line number and column info. This PR fixes the problem with one of the tokens being set incorrectly. - Merge pull request #3830 from swang/fix_incorrect_token Fix incorrect token representation - Fix #3795: Never generate invalid strings and regexes - Invalid `\x` and `\u` escapes now throw errors. - U+2028 and U+2029 (which JavaScript treats as newline characters) are now escaped to `\u2028` and `\u2029`, respectively. - Octal escapes are now forbidden not only in strings, but in regexes as well. - `\0` escapes are now escaped if needed (so that they do not form an octal literal by mistake). Note that `\01` is an octal escape in a regex, while `\1` is a backreference. (Added a test for backreferences while at it.) - Fixed a bug where newlines in strings weren't removed if preceded by an escaped character. - Merge pull request #3833 from lydell/escapes Fix #3795: Never generate invalid strings and regexes - Improve lexer error messages - Erraneous tokens are now fully underlined with ^:s. - The error messages are now a bit more consistent. - Merge pull request #3834 from lydell/better-lexer-errors Improve lexer error messages - Replace `last array` helper with `[..., last] = array` - Merge pull request #3841 from lydell/last Replace `last array` helper with `[..., last] = array` - Fixed copyright range to be updated to 2015 - Merge pull request #3842 from arianf/master Fixed copyright range to be updated to 2015 - Fix #3597: Allow interpolations in object keys The following is now allowed: o = a: 1 b: 2 "#{'c'}": 3 "#{'d'}": 4 e: 5 "#{'f'}": 6 g: 7 It compiles to: o = ( obj = { a: 1, b: 2 }, obj["" + 'c'] = 3, obj["" + 'd'] = 4, obj.e = 5, obj["" + 'f'] = 6, obj.g = 7, obj ); - Closes #3039. Empty interpolations in object keys are now _supposed_ to be allowed. - Closes #1131. No need to improve error messages for attempted key interpolation anymore. - Implementing this required fixing the following bug: `("" + a): 1` used to error out on the colon, saying "unexpected colon". But really, it is the attempted object key that is unexpected. Now the error is on the opening parenthesis instead. - However, the above fix broke some error message tests for regexes. The easiest way to fix this was to make a seemingly unrelated change: The error messages for unexpected identifiers, numbers, strings and regexes now say for example 'unexpected string' instead of 'unexpected """some #{really long} string"""'. In other words, the tag _name_ is used instead of the tag _value_. This was way easier to implement, and is more helpful to the user. Using the tag value is good for operators, reserved words and the like, but not for tokens which can contain any text. For example, 'unexpected identifier' is better than 'unexpected expected' (if a variable called 'expected' was used erraneously). - While writing tests for the above point I found a few minor bugs with string locations which have been fixed. - Merge pull request #3840 from lydell/dynakeys Fix #3597: Allow interpolations in object keys - allow multiline comment inside of an object definition [Fixes #3761] use more CoffeeScript syntax - Merge pull request #3802 from mapmeld/multiline_comment_fix Allow multiline comment at end of an object definition [Fixes #3761] - Fix error message for invalid escape at end of regex - Fix #3846: Fix odd start token of implicit objects Now the same hack as for reserved identifier tokens in the lexer is used instead. - Merge pull request #3850 from lydell/implicit-object-start-token Fix #3846: Fix odd start token of implicit objects - Merge pull request #3849 from lydell/regex-end-invalid-escape Fix error message for invalid escape at end of regex - Prevent writing the same file several times (fixes #3753) - Merge pull request #3758 from DiThi/master Prevent writing the same file several times (fixes #3753) - fixed being unable to use 'yield throw' - Merge pull request #3853 from alubbe/fixyieldthrow fixed being unable to use 'yield throw' - added a lot of ES6 generator tests - Merge pull request #3852 from alubbe/moretests added a lot of ES6 generator tests - fixed overly fragile repl test to work with 0.12, see https://github.com/jashkenas/coffeescript/issues/3855 - Merge pull request #3858 from alubbe/master fixed overly fragile repl test to work with 0.12 - fixed yield return producing incorrect output when used outside of the last line - improved yield return test - Merge pull request #3854 from alubbe/fixyieldreturn fixed yield return producing incorrect output when used outside of the last line - Fix single-line heredocs starting with "undefined" - Merge pull request #3861 from lydell/heredoc-undefined Fix single-line heredocs starting with "undefined" - CoffeeScript 1.9.1 - #3862 changelog - variable names - add -r/--require command line option - Merge pull request #3867 from sgentle/require-option add -r/--require command line option - Replace references to jQuery's 'bind' with 'on' - Merge pull request #3871 from jcrben/doc_tweak Replace references to jQuery's 'bind' with 'on' - Add link of changelog - Delete README - Fix getting of character at index - Merge pull request #3872 from banyan/add-link-of-changelog Update README.md and remove README - Merge pull request #3873 from Taritsyn/master Fix getting of character at index - added descriptions to tests which only had Issue numbers - Merge pull request #3877 from gilesbowkett/ocd-test-description-details added descriptions to tests which only had Issue numbers - yield now behaves as expected around 'this' - fixes https://github.com/jashkenas/coffeescript/issues/3882 - Merge pull request #3883 from alubbe/master yield now behaves as expected around 'this' - Escape literal `[` in regexp Improves compatibility with strict ES5 regexp syntax - Merge pull request #3885 from josh/escape-literal-bracket-regexp Escape literal [ in regexp - Revert "Escape literal [ in regexp" - Merge pull request #3886 from jashkenas/revert-3885-escape-literal-bracket-regexp Revert "Escape literal [ in regexp" - Reverts #3758, Fixes #3863 -- kills the broken warning - Merge pull request #3661 from dtaniwaki/fix-deprecated-option Use stdio option instead of customFds - Escape literal ] in REGEX ] is not allowed in the PatternCharacter set - Merge pull request #3893 from josh/escape-literal-bracket-regexp Escape literal ] in regexp - Added checking on process.stdout to be compatible with browserify - optionally to read data-src out from <script> - add compiled lib/browser.js - Merge pull request #3706 from imcotton/script-data-src Optionally to read data-src out from <script> - Merge pull request #3892 from matthieubulte/master Added checking on process.stdout to be compatible with browserify - bumped version to 1.9.2 - added 1.9.2 changelog - build & docs for 1.9.2 - Merge pull request #3942 from alubbe/master 1.9.2 - #3942 -- revising changelog - adding new packt book at their request - fix write after FIN error when using repl via socket if repl.outputStream is a socket, it is closed when 'exit' event occurred, so write throws an exception - fix history file descriptor leak - Merge pull request #3952 from sixmen/fix_write_after_fin fix write after FIN error when using repl via socket - Merge pull request #3953 from sixmen/fix_repl_fd_leak fix history file descriptor leak - Fix #3965, sourcemaps for bare programs. Instead of mapping all generated spaces and semicolons and newlines to the source position (0,0), we avoid generating sourcemap information for generated space-or-semicolon-only fragments. (In addition to shortening sourcemaps, this fixes a correctness issue where an empty fragment at the beginning of each line maps from (0,0), but in a bare program, that position at the begining of the line should map from the actual source line. When this conflict occurred, (0,0) would win, resulting in an incorrect sourcemap, where each top-level function call mapped to (0,0).) - Add tests for implicit calls with implicit object - Fix #3935: Implicit calls + obj key interpolation Allow implicit calls when the first key of an implicit object has interpolation. - Fix `CoffeeScript.nodes(tokens)`; fix the repl If you passed an array of tokens (as opposed to a string of code) to `CoffeeScript.nodes`, its attempts to prettify error messages would break. Now it does not attempt to prettify error messages in that case anymore (because it is not possible to prettify the errors without a string of code). The repl was affected by the above bug. Fixes #3887. - Save alias names in the origin of tokens ... and use it for "reserved word can't be assigned" errors. Fixes #2306. - Merge pull request #3969 from lydell/alias-origin Save alias names in the origin of tokens - Merge pull request #3967 from lydell/implicit-call-implicit-obj Fix #3935: Implicit calls + obj key interpolation - Merge pull request #3968 from lydell/nodes-tokens-errors Fix `CoffeeScript.nodes(tokens)`; fix the repl - Document extra try/catch features Fixes #3958. - Improve modulo documentation Fixes #3959. - Document interpolation in object keys Fixes #3962. - Document `yield from` and `yield return` Fixes #3825. - Document `a for [b..c]` - Merge pull request #3970 from lydell/docs Document a few undocumented things - Improved try/catch/finally to explain the options better. - Merge pull request #3974 from carlsmith/issue3958 Improved try/catch/finally to explain the options better. - Merge pull request #3966 from davidbau/simplesourcemaps Fix #3965, sourcemaps for bare programs. - Commit compiled code that should have been in commit 378a04e4 - Fix formatting of `#`-only lines in herecomments Before: $ ./bin/coffee -bpe '### > # paragraph 1 > # > # paragraph 2 > ###' /* * paragraph 1 # * paragraph 2 */ After: $ ./bin/coffee -bpe '### # paragraph 1 # # paragraph 2 ###' /* * paragraph 1 * * paragraph 2 */ This does not re-break #3638: $ ./bin/coffee -bpe '### > #/ > ###' /* #/ */ - Merge pull request #3979 from lydell/herecomments-formatting Fix formatting of `#`-only lines in herecomments - CoffeeScript 1.9.3 - Replace "instanceof Array" in transformer with "[object Array]" comparison Testing with `'[object Array]' is Object::toString.call element` allows arrays from another JS context to be properly handled. The specific use case here is to support jest, which sets up JS contexts using Node/io.js's "vm" module. This approach works in ES3 environments in contrast with ES5's `Array.isArray`. - Merge pull request #3980 from lydell/v1.9.3 CoffeeScript 1.9.3 - redoc - correct release date - Merge pull request #3985 from ide/array-check Replace "instanceof Array" in transformer with "[object Array]" comparison - don't copy arguments or caller from require causes an error in io.js where strict-mode is set on internal modules Fixes: https://github.com/jashkenas/coffeescript/issues/3810 - Merge pull request #4019 from rvagg/master Don't copy arguments or caller from require - Reset @seenFor in lexer before tokenizing - Merge pull request #4029 from yjerem/reset-seenfor Reset @seenFor in lexer before tokenizing - Closes #4036: "Try catch" optimisation Let me know if there's something I should be doing differently as this is my first contribution to coffeescript. I fixed the reported issue where a generated variable could clash with a user-defined one in a try/catch block. I added a test for a few scenarios with different variable names for a try/catch, to confirm the fix and avoid regressions. - Improved the tests and removed the hardcoded variable, according to suggestions. - Removing the unnecessary underscore now :) - Removing unnecessary assignment - Updated compile - Merge pull request #4059 from BrunoBernardino/hotfix/4036-try-variable-improvement Closes #4036: "Try catch" optimisation - Fix #1192: Assignment starting with object literals - Merge pull request #4068 from lydell/issue-1192 Fix #1192: Assignment starting with object literals - Fix #4070: Improve error message for lone expansion - Merge pull request #4071 from lydell/lone-expansion Fix #4070: Improve error message for lone expansion - Implement ES2015-like destructuring defaults This let's you do things like: fullName = ({first = 'John', last = 'Doe'}) -> "#{first} #{last}" Note: CoffeeScrits treats `undefined` and `null` the same, and that's true in the case of destructuring defaults as well, as opposed to ES2015 which only uses the default value if the target is `undefined`. A similar ES2015 difference already exists for function parameter defaults. It is important for CoffeeScript to be consistent with itself. fullName2 = (first = 'John', last = 'Doe') -> "#{first} #{last}" assert fullName('Bob', null) is fullName2(first: 'Bob', last: null) Fixes #1558, #3288 and #4005. - Merge pull request #4069 from lydell/destructuring-defaults Implement ES2015-like destructuring defaults - Fix #3926: Disallow implicit objects as parameter destructuring - Document destructuring defaults - Merge pull request #4074 from lydell/destructuring-defaults-docs Document destructuring defaults - Improve the documentation site on smaller screens "Smaller screens" means screens smaller than 820px wide. That's the smallest width that the current design looks good at. I tried to not change the current design in any way and to make as few changes as possible. This is what happens on smaller screens: - The navigation bar is no longer fixed to the viewport, but always at the top of the page. - The navigation bar is vertical rather than horizontal. - CoffeeScript code is above the compiled JavaScript rather than having them side by side. This allows for a larger text size, which is more compfortable to read, and no horizontal scrolling, which many find difficult to use. - Remove unnecessary blank lines at EOF in examples On less wide screens, where the CoffeeScript is above the JavaScript, those lines resulted in an unnecessarily high box of CoffeeScript code. - Git rid of the deprecated `<tt>` tag in the docs Replaced with `<code>` tags. - Merge pull request #4075 from lydell/documentation-improvements Documentation improvements - Merge pull request #4073 from lydell/issue-3926 Fix #3926: Disallow implicit objects as parameter destructuring - CoffeeScript 1.10.0 - Merge pull request #4079 from lydell/v1.10.0 CoffeeScript 1.10.0
expect('something').to.have.length(9)
and
expect('something').to.have.lengthOf(9)
are the same... on paper
but consider this test:
The breaking change is in: https://github.com/chaijs/chai/blob/master/lib/chai/utils/addChainableMethod.js#L79
A function object is constructed, and the object has a
length
property of its own, and thus overriding the length method the original asserter had.console.log (->).length # ==> 0
lengthOf
is not a magical javascript property and is left alone. We should encourage people to uselengthOf
instead oflength
in the syntax of their tests.The text was updated successfully, but these errors were encountered: