Compare commits

...

2123 Commits
2.3.0 ... 3.7.0

Author SHA1 Message Date
jdalton
30f28a51ca Bump v3.7.0. 2015-04-15 20:08:34 -07:00
jdalton
3e22344782 Rebuild lodash and docs. 2015-04-15 19:32:58 -07:00
jdalton
0b20d89d62 Ensure _.times floors n float values. 2015-04-15 19:21:13 -07:00
jdalton
80d892c744 Update Firefox versions in saucelabs.js. 2015-04-15 09:04:28 -07:00
jdalton
53326bef33 Update vendors. 2015-04-15 08:44:18 -07:00
jdalton
f05a5a3abb Fix failing strict mode _.set tests. 2015-04-15 00:00:40 -07:00
jdalton
8581be4977 Ensure baseGet and result work with strings on nested objects. 2015-04-14 22:34:46 -07:00
jdalton
0e8277ba9e Cleanup path methods. 2015-04-14 21:19:31 -07:00
jdalton
3cc2f83912 Add more string character access tests and adjust array path tests. 2015-04-14 21:18:50 -07:00
jdalton
177034a498 Move _.filter benchmark and cleanup labels. 2015-04-14 21:15:18 -07:00
jdalton
f4d06e5183 Remove unneeded "use strict" directive. 2015-04-14 12:54:30 -07:00
jdalton
637a6b5f7e Optimize _.invoke. 2015-04-14 12:29:41 -07:00
jdalton
75445b8b98 Update ecstatic travis dep. 2015-04-14 12:14:12 -07:00
jdalton
f96de55ac7 Optimize isKey. 2015-04-14 12:13:54 -07:00
jdalton
c4d4af3b5a Make freeGlobal detect align with freeSelf and freeWindow checks. 2015-04-13 20:29:58 -07:00
jdalton
5dfee44340 Cleanup doc blocks. [ci skip] 2015-04-13 20:29:26 -07:00
jdalton
99f5857d84 Add stable sort tests for objects. 2015-04-13 20:28:25 -07:00
jdalton
520f7c6812 Ensure index in baseSortByOrder is an integer. 2015-04-13 09:30:01 -07:00
jdalton
63d493aa1f Cleanup _.sortBy, _.sortByAll, _.sortByOrder, & baseSortByOrder. 2015-04-13 08:58:10 -07:00
jdalton
38ab42f855 Add Object.assign reference to _.assign docs. [ci skip] 2015-04-13 07:43:35 -07:00
Graeme Yeates
bc3771f3af Support iteratee use cases for _.sortByAll and _.sortByOrder. 2015-04-12 18:29:26 -07:00
jdalton
9d90af409b Add bizarro test for Object.getOwnPropertySymbols. 2015-04-12 18:28:50 -07:00
jdalton
20183bbd57 Have baseMap use getLength and isLength. 2015-04-12 10:33:34 -07:00
jdalton
1d8efe1cf8 Cleanup deep property tests. 2015-04-11 23:08:59 -07:00
jdalton
23354d413f Add an _.invoke test for deep paths. 2015-04-11 23:08:11 -07:00
jdalton
715f03f5f1 Change call to invoke in _.debounce and _.throttle test. 2015-04-11 23:08:11 -07:00
jdalton
ff6bbaed19 Add more tests for _.sortByAll and _.sortByOrder used as iteratees of _.reduce. 2015-04-11 20:58:31 -07:00
Graeme Yeates
f82cbbab1c Use _.restParam in _.sortByAll. 2015-04-11 20:18:29 -07:00
jdalton
5a1b526b6c Add and adjust deep path examples to _.method, _.methodOf, _.property and _.propertyOf docs. [ci skip] 2015-04-11 18:40:05 -07:00
jdalton
1ef92c87fb Use query instead of inspect in various docs. [ci skip] 2015-04-11 16:33:24 -07:00
jdalton
0aef515522 Rename baseMethod to invokePath and make use of it in _.invoke. 2015-04-11 16:32:27 -07:00
jdalton
9b5c97666a Ensure symbols work for _.assign, _.defaults, & _.merge. 2015-04-11 11:42:36 -07:00
jdalton
a55d822f9a Add more comments to nativeAssign definition. [ci skip] 2015-04-10 21:24:32 -07:00
jdalton
5b2bde6e0d Simplify getSymbols. 2015-04-10 19:56:38 -07:00
jdalton
020c5b27dc Add assert labels to _.tempalte test. 2015-04-10 15:42:03 -07:00
jdalton
65457208e5 Fix feature test for IE tech preview. 2015-04-10 15:41:48 -07:00
jdalton
6eb1b98975 Fix test fails in Node 0.12. 2015-04-10 15:40:26 -07:00
jdalton
a927bab6b3 Use built-in Object.assign if available. 2015-04-10 09:19:39 -07:00
jdalton
48e3e3e8cb Add _.method and _.methodOf docs. [ci skip] 2015-04-09 09:29:23 -07:00
jdalton
b5d095401d Make _.result and _.set docs more consistent with _.get. [ci skip] 2015-04-09 08:42:05 -07:00
jdalton
b3e58d4794 Cleanup createAssigner. 2015-04-09 07:35:32 -07:00
jdalton
79b064320e Update _.assign benchmarks for newer Underscore versions. 2015-04-09 07:30:17 -07:00
Sankar Gorthi
335b8326ee Fix broken link in _.bindKey docs. [ci skip] 2015-04-08 15:22:06 -07:00
jdalton
e777020e44 Update propertyIsEnumerable mock for support.nonEnumArgs feature test changes. 2015-04-08 13:42:48 -07:00
jdalton
745d97ebe1 Replace typeof checks for undefined with === checks. 2015-04-08 09:37:35 -07:00
jdalton
bb06d98a43 Add _.has doc examples of deep paths. [ci skip] 2015-04-08 09:27:37 -07:00
jdalton
3500b0016c Store last(path) in a var. 2015-04-08 08:41:57 -07:00
jdalton
7ec916b777 Add additional backtick reference to _.escape docs. [ci skip] 2015-04-08 08:24:44 -07:00
jdalton
3c71f79929 Fix string indexes with _.has in older enviros. 2015-04-08 00:39:39 -07:00
jdalton
a83e70104c Ensure complex paths work with _.get, _.result, & _.set. 2015-04-07 19:47:31 -07:00
jdalton
85af554bac Replace work with expected value in test labels of _.get, _.isMatch, _.matches, _.matchesProperty, _.method, _.property, _.propertyOf, & _.result. 2015-04-07 18:45:39 -07:00
jdalton
885722afde Add _.has and _.methodOf tests. 2015-04-07 18:41:51 -07:00
jdalton
b2f094da01 Add another path test to a deep property test of _.result. 2015-04-07 09:29:44 -07:00
jdalton
1e85ec6758 Add more _.method tests. 2015-04-07 09:29:09 -07:00
jdalton
c8974aac3e Ensure nullish values aren't treated as empty objects in _.get, _.has, _.matchesProperty, _.property, _.propertyOf, & _.result. 2015-04-07 08:33:19 -07:00
jdalton
ad318c04e5 Use nullish more in test labels. 2015-04-07 08:19:24 -07:00
jdalton
db73e48206 Add mutation notes to docs of _.assign and _.defaults. [ci skip] 2015-04-07 08:07:00 -07:00
jdalton
d13972e0b8 Fix string test fails for _.matchesProperty, _.property, & _.result in IE 6 & 7. 2015-04-07 07:28:58 -07:00
Graeme Yeates
df74b2bfcb Remove _.noop from chainable list. [ci skip] 2015-04-07 00:31:38 -07:00
jdalton
b94b75726d Cleanup _.property and _.propertyOf tests. 2015-04-07 00:24:50 -07:00
jdalton
9a2d38acff Cleanup _.method tests. 2015-04-07 00:24:22 -07:00
jdalton
537f8f401e Cleanup _.matchesProperty tests. 2015-04-07 00:24:01 -07:00
jdalton
04f1a799dc Cleanup _.matches tests. 2015-04-07 00:23:16 -07:00
jdalton
74adb2f540 Consolidate _.get and _.result tests. 2015-04-07 00:22:11 -07:00
jdalton
a129a2509f Ensure _.method aligns with _.invoke. 2015-04-07 00:20:35 -07:00
jdalton
cc0b8e9d10 Ensure methods like _.get, _.has, _.matchesProperty, _.property, & _.propertyOf can get characters of string indexes. 2015-04-07 00:16:33 -07:00
jdalton
af8fcf234f Add _.set test for non-deep paths. 2015-04-06 13:01:27 -06:00
jdalton
e0dc2daf54 Simplify _.set for plain keys. 2015-04-06 12:59:39 -06:00
jdalton
c066e655dc Add empty path and array path coercing _.set test. 2015-04-06 12:04:07 -05:00
jdalton
2698e6f0ea Add more array path tests to _.get. 2015-04-06 11:54:09 -05:00
jdalton
63902bde9c Add array path tests to _.set. 2015-04-06 11:34:33 -05:00
jdalton
c876004fb2 Ensure _.set passes strict mode tests. 2015-04-06 09:57:26 -05:00
jdalton
633f37bfb6 Add array path tests to _.get. 2015-04-06 09:29:36 -05:00
jdalton
d70bc74dc8 Adjust baseGet and isKey to reduce code in other methods. 2015-04-05 21:41:10 -05:00
Justin Ridgewell
d7a4524e70 Add _.method and _.methodOf. 2015-04-05 13:53:54 -05:00
jdalton
fe1e27fd40 Add tests for _.add coercing params to numbers. 2015-04-05 13:45:56 -05:00
jdalton
8a7a099073 Use x even more in support definition. 2015-04-05 13:25:45 -05:00
jdalton
1b53b5f9eb Cleanup doc block for _.support.nonEnumArgs. [ci skip] 2015-04-05 13:25:29 -05:00
James
8b758ee25a Make _.add coerce augend and addend params to numbers. 2015-04-05 11:59:56 -05:00
jdalton
81c24a8478 Add _.get test for empty paths. 2015-04-05 08:38:51 -05:00
jdalton
a6f3e0b6af Remove "correctly" from test labels. 2015-04-05 08:38:14 -05:00
jdalton
6e9e8127b6 Rename variable sum in doc examples to total. [ci skip] 2015-04-05 08:15:36 -05:00
jdalton
63d43275d3 Remove unnecessary parseFloat from baseAt. 2015-04-05 08:13:32 -05:00
jdalton
cb2bf7f8fa Add tests for missing path parts for _.matchesProperty. 2015-04-05 01:39:51 -05:00
jdalton
1fae760ccd Use perl instead of sed in travis.yml. 2015-04-05 01:39:16 -05:00
jdalton
4195c4c4bf Add tests for missing path parts for _.property and _.propertyOf. 2015-04-04 14:35:50 -05:00
jdalton
13e7a1ed93 Add _.isMatch and _.matchesProperty tests for nullish object params. 2015-04-04 00:29:04 -05:00
jdalton
ea4357ca98 Add _.callback tests for deep paths. 2015-04-03 17:44:59 -05:00
jdalton
5e8255d24d Tweak path related test labels. 2015-04-03 17:08:59 -05:00
jdalton
003d6ec43f Add _.has tests for deep paths. 2015-04-03 17:08:30 -05:00
jdalton
9749ff7c67 Add a non-deep property test for _.get. 2015-04-03 12:56:12 -05:00
jdalton
c88589e0e5 Add _.result tests for deep paths. 2015-04-03 12:55:42 -05:00
jdalton
32ef1bb7a5 Add deep props to key tests to make it more interesting. 2015-04-03 12:47:26 -05:00
jdalton
206c65904f Add _.matchesProperty test for deep props. 2015-04-03 12:47:08 -05:00
jdalton
219d4688e4 Ensure path a property name is teated as a key before a path in _.get and _.set. 2015-04-03 12:36:31 -05:00
jdalton
adc687f0a0 Add _.property and _.propertyOf tests for deep paths. 2015-04-03 12:22:38 -05:00
jdalton
88e59c9a5a Cleanup tests. 2015-04-03 11:46:55 -05:00
jdalton
71a89a575f Add _.get and _.set tests. 2015-04-03 11:46:37 -05:00
jdalton
e3dc8dfcf4 Remove rogue newline in initCloneByTag doc block. [ci skip] 2015-04-03 02:12:14 -05:00
jdalton
2dd77d5bc7 Change "method" to "function". [ci skip] 2015-04-03 02:11:42 -05:00
jdalton
0192226bb3 Use "length" when referring to a property name. [ci skip] 2015-04-03 02:11:16 -05:00
jdalton
faf2658da2 Move getLength closer to like functions and give it a proper jsdoc block. 2015-04-03 02:10:21 -05:00
jdalton
9a1c00d2dc Use x a bit more in support definition to prevent aggressive minifier modifications. 2015-04-01 21:42:57 -07:00
jdalton
4a8695caff Use getLength to avoid an iOS JIT bug. 2015-04-01 21:39:37 -07:00
jdalton
b28016bfeb Simplify isLength check in _.keys. 2015-04-01 12:07:12 -07:00
jdalton
4758a9e66d Ensure _.inRange swaps start with end when start is greater than end. [closes #1099] 2015-04-01 08:43:42 -07:00
Trevor Adams
97bd1ef4ec Minor change to _.once to avoid an extra var swap. 2015-04-01 08:38:02 -07:00
jdalton
2adac8bdae Use _.restParam in createAssigner. 2015-04-01 01:57:19 -07:00
jdalton
3c56914822 Simplify isLoose check in baseIsEqualDeep. 2015-04-01 00:08:31 -07:00
jdalton
c5cc907838 Ensure _.match and _.matchesProperty compares functions by reference. [closes #1101] 2015-03-31 23:41:15 -07:00
jdalton
0907aabacd Avoid bug in older browsers where an unmatched capture group returns an empty string. 2015-03-31 09:09:17 -07:00
jdalton
f4290bda7f Update test deps. 2015-03-31 01:06:09 -07:00
jdalton
4bdb82a7a2 Ensure toPath works with a nullish value. 2015-03-31 00:50:47 -07:00
jdalton
6a696dde3a Add _.set tests. 2015-03-31 00:15:46 -07:00
jdalton
8481684a82 Fix start and end typo mix up in _.range docs. [closes #1095] [ci skip] 2015-03-30 21:05:48 -07:00
Benjamin Tan
03aa8b3356 Minor documentation and test name nits. [ci skip] 2015-03-30 20:58:20 -07:00
jdalton
64bfed2640 Clarify _.uniq docs. [ci skip] 2015-03-30 00:55:30 -07:00
jdalton
2edcc89303 Add _.get and _.set. 2015-03-29 20:59:48 -07:00
jdalton
18313f2e90 Minor word nit for mapSet doc. [ci skip] 2015-03-29 20:57:19 -07:00
jdalton
0ff96418bd Simplify reIsDeepProp and rePropName. 2015-03-29 20:32:25 -07:00
Justin Ridgewell
1480abf0e8 Fix Worker tests in Chrome. See https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Browser_notes. 2015-03-29 18:34:48 -07:00
jdalton
e7ba75d533 Make toPath more robust and add support for deep properties to _.has and _.matchesProperty. 2015-03-29 15:43:53 -07:00
jdalton
044291d940 Add deep property support to _.has. 2015-03-29 08:59:42 -07:00
jdalton
ad62efcb9e Make reComboMarks singular for naming consistency. 2015-03-29 08:08:46 -07:00
jdalton
0dc59d9481 Add support for brackets to toPath. 2015-03-29 08:08:23 -07:00
Justin Ridgewell
11ab3034b1 Ensure _.result calls deep function with correct context. 2015-03-29 08:07:36 -07:00
Justin Ridgewell
c594bda77f Simplify getProperty and friends. 2015-03-29 00:07:13 -07:00
jdalton
8218b74fb3 Remove propertyDeep, propertyDeepOf, and resultDeep in favor of deep property path support in existing methods. 2015-03-28 13:16:16 -07:00
Joshua Piccari
3d0beb1a2e Add _.propertyDeep and _.propertyDeepOf. 2015-03-28 09:54:40 -07:00
Joshua Piccari
515cfd48d8 Add _.resultDeep. 2015-03-28 09:48:55 -07:00
jdalton
1448bab5b3 Clear func in function created by _.before without requiring an additional call. [closes #1088] 2015-03-28 00:39:04 -07:00
jdalton
2884f8acb8 Ensure _.intersection of a single array returns an empty array. [closes #1085] 2015-03-26 13:17:41 -07:00
jdalton
075cae4efb Use basePullAt in _.remove. 2015-03-26 09:03:29 -07:00
Justin Ridgewell
d2b98323dd Don't mutate array during #remove. [closes #1079] 2015-03-26 09:02:55 -07:00
jdalton
b1a81a85b1 Add a test for _.remove and index params. 2015-03-26 07:29:36 -07:00
jdalton
668384649a Change "Iterator" typo to "Iteratee" in docs. [ci skip] 2015-03-26 07:29:36 -07:00
jdalton
a7252b1a7f Bump to v3.6.0. 2015-03-24 22:41:59 -07:00
jdalton
a4e58e4d55 Rebuild lodash and docs. 2015-03-24 22:41:53 -07:00
jdalton
4241e01364 Cleanup comment links. [ci skip] 2015-03-24 22:34:57 -07:00
jdalton
d7d7952138 Increase test coverage by modifying the source to hit the branch of getFuncName used for minified builds. 2015-03-24 20:15:33 -07:00
jdalton
9cc2253339 Add npm i step to contributing.md. [ci skip] 2015-03-24 08:15:32 -07:00
jdalton
6831802590 Rename predicate to iteratee in _.uniq, _.countBy, _.groupBy, _.indexBy, & _.map docs. [closes #1071] [ci skip] 2015-03-23 23:34:33 -07:00
jdalton
9d79cc7e87 Make _.deburr handle combining diacritical marks. [closes #1070] 2015-03-23 20:50:04 -07:00
jdalton
763b003a11 Add note about _.runInContext to _.mixin docs. [ci skip] 2015-03-23 20:04:13 -07:00
jdalton
d560e2a558 Remove unused bar reFuncName. 2015-03-23 19:58:25 -07:00
jdalton
f914f080b1 Simplify ctor check flag in equalObjects. 2015-03-23 09:24:55 -07:00
jdalton
600a4e86e1 Ensure _.matches and _.matchesProperty work with function value params. 2015-03-23 09:24:05 -07:00
jdalton
e7b4ada65f Add _.restParam test for functions with more than 3 params. 2015-03-23 09:06:45 -07:00
jdalton
95f31be096 Add doc blocks for getFuncName and isLaziable. [ci skip] 2015-03-23 09:01:19 -07:00
jdalton
ad6db7eaae Adjust object checks in baseIsMatch, baseMatches, baseMatchesProperty, & isMatch. 2015-03-22 23:44:11 -07:00
jdalton
d7a99c6618 Add _.matches and _.matchesProperty tests for inherited properties. 2015-03-22 00:45:36 -07:00
jdalton
f20d8f5cc0 Loosen _.matches to match objects with inherited properties. [closes #1067] 2015-03-21 23:33:19 -07:00
jdalton
8930e6b393 Add baseWhile and createBaseEach. 2015-03-21 22:07:19 -07:00
jdalton
f26886acb0 Add createSortedIndex. 2015-03-21 18:08:35 -07:00
jdalton
820ab8d486 Add test for _.escapeRegExp with eval and Function. 2015-03-21 11:43:18 -07:00
jdalton
8e425fb358 Tweak _.at and _.matchesProperty doc examples. [ci skip] 2015-03-21 10:01:46 -07:00
jdalton
6006f499ac Fix doc bugs in _.runInContext, _.thru, _.forEachRight, & _.escapeRegExp. [closes #1065] [ci skip] 2015-03-21 10:01:17 -07:00
Christopher Venning
3caa740fc4 Fixed errors in documentation examples for _.trim, _.matchesProperty, & _.property. [ci skip] 2015-03-21 08:53:49 -07:00
jdalton
007ea9ea20 Add length check test to _.flow & _.flowRight. 2015-03-20 23:49:31 -07:00
jdalton
5d248d261d Expand part of shortcut fusion test. 2015-03-20 23:22:36 -07:00
jdalton
26908cba64 Don't assume a lodash method will exist. 2015-03-20 15:15:06 -07:00
jdalton
18d118746e Add _.fill doc example. [ci skip] 2015-03-20 12:37:49 -07:00
jdalton
9a633f5f2e Update root detection in WeakMap and Set shims. 2015-03-20 12:01:37 -07:00
jdalton
5aa44e98d5 Fix rhino and other old environment test fail. 2015-03-20 12:00:29 -07:00
jdalton
33916fa975 No need to redeclare funcName in createFlow. 2015-03-20 11:49:18 -07:00
jdalton
eab18df403 Cleanup isLaziable and getFuncNames. 2015-03-20 09:24:56 -07:00
jdalton
002caceb05 Cleanup isXyz methods. 2015-03-20 09:24:13 -07:00
jdalton
c250aa804a Ensure _.merge correctly coerces objects to arrays. [closes #1061] 2015-03-19 08:58:56 -07:00
jdalton
94ca50883f Drop funcDecomp optimization in baseCallback and ensure shortcut fusion for _.flow and _.flowRight works in minified builds. 2015-03-19 08:40:45 -07:00
jdalton
462c482873 Add support for shortcut fusion to _.flow and _.flowRight. 2015-03-18 10:27:45 -07:00
jdalton
e28e04a990 Add freeSelf as a fallback for when freeWindow is unavailable. 2015-03-17 20:13:10 -07:00
Rocco Nicosia
6438385d64 Fix _.zipObject docs to more clearly demonstrate it as _.pairs inverse. [ci skip] 2015-03-17 16:50:00 -07:00
jdalton
bfb08ce003 Use opposite instead of inverse to describe _.propertyOf. [ci skip] 2015-03-17 16:49:30 -07:00
jdalton
3590a06f40 Update _.zipObject docs to tie into _.pairs. [ci skip] 2015-03-17 16:45:01 -07:00
jdalton
23ca6c5e10 Rename createPad to createPadding and cleanup docs of pad methods. 2015-03-17 15:57:12 -07:00
jdalton
1aea5bcd50 Finish adding comment blocks to creator function. [ci skip] 2015-03-17 13:54:33 -07:00
jdalton
82c5d8ed28 Rename createComposer to createFlow. 2015-03-17 10:27:52 -07:00
jdalton
5dcd58a75f Tweak _.findIndex docs and correct _.findKey docs. [ci skip] 2015-03-17 10:23:59 -07:00
jdalton
dc605a4ee1 More more docs for creator functions. [ci skip] 2015-03-17 10:23:26 -07:00
Justin Ridgewell
fec940ab8b Allocate proper size in in _.restParam.
Since we're putting `rest` at `start` index, `array.length; // => {start + 1}`
2015-03-17 08:50:41 -07:00
jdalton
05fd7cecf4 Add docs for baseSum and arraySum. [ci skip] 2015-03-17 08:48:21 -07:00
jdalton
2f52730b48 Use and consistently. [ci skip] 2015-03-17 08:44:51 -07:00
jdalton
4c1819c7dd Ensure _.sum provides the correct arguments when iterating an object. 2015-03-15 19:49:14 -07:00
jdalton
c58c0df30e Cleanup creator functions. 2015-03-15 17:12:33 -07:00
jdalton
c5902b3144 Cleanup _.sum. 2015-03-15 17:01:40 -07:00
qsona
519eb424e7 Documentation nits. [ci skip] 2015-03-15 14:57:53 -07:00
qsona
03478afea4 Add support for _.sum to take iteratee. 2015-03-15 14:57:13 -07:00
jdalton
306ef8addf Add creator functions. 2015-03-15 14:48:32 -07:00
jdalton
d4659b261d Add baseFindIndex. 2015-03-15 11:22:25 -07:00
jdalton
69ce41807a Add _.restParam. 2015-03-15 10:57:21 -07:00
jdalton
cc81da5aa4 Update Chrome version in saucelabs.js. 2015-03-14 00:14:21 -07:00
jdalton
eee714f52b Add iteratee guard to _.includes. 2015-03-13 13:39:14 -07:00
jdalton
c976b637d8 Adjust test descriptions to be more generic. 2015-03-13 12:33:19 -07:00
jdalton
ea93515d53 Add well-known symbols test for _.uniq. 2015-03-13 09:03:09 -07:00
jdalton
652499bdcf Cleanup sortedIndex test. 2015-03-13 08:51:56 -07:00
Benjamin Tan
819862199a Documentation: Rename predicate to iteratee.
Closes #1049.
[ci skip]
2015-03-13 08:43:05 -07:00
jdalton
6c1bc1d7bb Semicolons out colons in. [ci skip] 2015-03-13 08:43:00 -07:00
octref
36ebe76e0a Fix _.reduce doc 2015-03-13 08:39:10 -07:00
Benjamin Tan
8f8d35dec7 Simplify test/saucelabs.js.
Remove repeated assignment operations.
2015-03-13 19:29:39 +08:00
jdalton
ac1e436339 Simplify isCommon and isCombo checks in mergeData. 2015-03-13 00:12:51 -07:00
jdalton
78d4812b0e Whitespace nits. [ci skip] 2015-03-12 23:02:23 -07:00
jdalton
6a1b7626e3 Add NaN tests for _.indexOf and _.lastIndexOf with a fromIndex. 2015-03-12 22:42:02 -07:00
bryce-gibson
b6ccb4c96f Add example of alternative _.zipObject syntax. [ci skip] 2015-03-12 07:41:15 -07:00
jdalton
9712ac550c Set metadata for curried lazy lodash methods. 2015-03-11 23:41:41 -07:00
jdalton
5b173766c6 Add symbol tests for _.isObject and _.uniq. 2015-03-11 20:52:34 -07:00
jdalton
b535c4f321 Optimize _.reduce and _.reduceRight. 2015-03-11 11:40:51 -07:00
jdalton
56c5ebcb71 Ensure the result of _.difference is based on the values of the first param only. [#1038] 2015-03-10 21:31:46 -07:00
jdalton
028234ba86 Update guard info in _.reduce docs. [ci skip] 2015-03-10 09:21:38 -07:00
jdalton
f063b4d231 Add isIterateeCall guards to _.every and _.some. [closes #1035] 2015-03-10 09:21:01 -07:00
Teoman Soygul
508f27cc32 Fix _.property documentation typo. [ci skip] 2015-03-10 08:44:54 -07:00
jdalton
d4783170e5 Minor cleanup of setting __actions__ in _.mixin. 2015-03-09 08:33:19 -07:00
jdalton
51e459b386 Bump to v3.5.0. 2015-03-08 17:57:42 -07:00
jdalton
1253d254af Rebuild lodash and docs. 2015-03-08 17:57:22 -07:00
jdalton
5e70574396 Add parentheses and cleanup more complex code snippets. 2015-03-08 17:45:53 -07:00
jdalton
b5dce2f74b Optimize createBindWrapper, createPartialWrapper, and createHybridWrapper. 2015-03-08 01:00:04 -08:00
jdalton
6113da3e68 Remove unneeded tests. 2015-03-07 23:27:21 -08:00
jdalton
faf6406289 Ensure lazy drop when applied after filter works correctly. [closes #1026] 2015-03-07 23:20:26 -08:00
jdalton
7c443431d9 Add private guard param doc to _.sortByOrder. [ci skip] 2015-03-07 11:11:24 -08:00
jdalton
0f201e3fd8 Add more chaining tests join, replace, & split. 2015-03-07 00:30:42 -08:00
jdalton
bf96c30187 Cleanup string methods added to LodashWrapper. 2015-03-07 00:23:17 -08:00
octref
eb1b7b914a Add split and replace to LodashWrapper. [closes #1016] 2015-03-06 23:11:52 -08:00
octref
135bc2de52 Adjust _.sortByOrder doc example to better show effect. [ci skip] 2015-03-06 12:02:30 -08:00
jdalton
ab2269717d Bump to v3.4.0. 2015-03-06 00:55:11 -08:00
jdalton
b5a42cfa75 Rebuild lodash and docs. 2015-03-05 23:01:16 -08:00
jdalton
6693416d0a Tweak _.isEmpty and _.size docs. [ci skip] 2015-03-05 22:59:18 -08:00
jdalton
9cdf013933 Ensure length hit of for lazy eval is checked on initial lazy call. [closes #997] 2015-03-05 22:50:16 -08:00
jdalton
1dfaa30520 Add inRange and sortByOrder to lodash doc notes. [ci skip] 2015-03-05 08:27:51 -08:00
jdalton
d898fcee75 Simplify the root assignment. 2015-03-05 07:41:22 -08:00
jdalton
1e647a2058 Rename test module for consistency. 2015-03-04 08:43:37 -08:00
jdalton
10e379d862 Add _.sortByOrder tests. 2015-03-04 08:43:37 -08:00
jdalton
ee456493c4 Remove argument unrolling in LazyWrapper assignments. 2015-03-04 08:43:37 -08:00
jdalton
69e9c7d0be Expand _.defaults test for working with _.reduce. 2015-03-04 08:43:37 -08:00
jdalton
adce718d63 Another cleanup pass on createAssigner. 2015-03-04 08:43:37 -08:00
jdalton
3a94a65f12 Tweak root assignment to work with webpack in a web worker. [closes ##313] 2015-03-04 08:43:37 -08:00
jdalton
bbe30db1b7 Avoid test fails for npm builds. 2015-03-03 12:13:48 -08:00
jdalton
68f3c43805 Add createComposer to reduce the definition of _.flow and _.flowRight. 2015-03-03 11:40:24 -08:00
jdalton
3c99ecda60 Move more code out of the try-block in _.attempt. 2015-03-03 11:40:24 -08:00
jdalton
b1366696c4 Simplify guard check in _.sortByAll. 2015-03-03 11:40:24 -08:00
jdalton
534aeb4065 Use args alias of arguments in _.difference, _.pull, & _.memoize. 2015-03-03 11:40:24 -08:00
jdalton
cc77a36dd9 Cleanup createAssigner. 2015-03-03 11:40:17 -08:00
jdalton
5991068fdf Add more lazy chaining tests. 2015-03-03 09:22:59 -08:00
octref
913778d5ab Let createAssigner get correct customizer
When `_.defaults` is invoked using `_.reduce` / `_.reduceRight`
`createAssigner` discards the customizer, so the effect is
`_.assign` but not `_.defaults`

```
_.reduce([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults)
// -> {user: "fred"}
_.reduceRight([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults)
// -> {user: "barney"}

// Fixed
_.reduce([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults)
// -> {user: "barney"}
_.reduceRight([{ 'user': 'barney' }, { 'user': 'fred' }], _.defaults)
// -> {user: "fred"}
```
2015-03-02 21:19:11 -08:00
h7lin
9a8345d4f9 Fix doc example in _.partition. [ci skip] 2015-03-02 20:25:29 -08:00
jdalton
ba9bd3bc76 Better match words with one character. [closes #1012] 2015-03-02 20:23:14 -08:00
jdalton
aad0070b77 Narrow new LodashWrapper to dropWhile. 2015-03-02 20:23:14 -08:00
jdalton
d192e69811 Break lazy chains before or . [closes #1011] 2015-03-02 09:19:05 -08:00
jdalton
ec8d919b93 Cleanup . 2015-03-02 09:17:16 -08:00
octref
4ce4f1d758 Add _.sortByOrder. 2015-03-01 14:04:00 -08:00
jdalton
3aa40d4df6 Simplify baseFlatten and always provide a fromIndex. 2015-03-01 01:22:38 -08:00
jdalton
ec1be41b62 Correct _.flatten benchmark. 2015-03-01 01:22:38 -08:00
jdalton
c15d81545a Update chalk in travis. 2015-03-01 01:22:38 -08:00
jdalton
1af8b9d16a Cleanup docs of _.flow, _.flowRight, _.defaults, _.range, _.inRange, & _.sum. [ci skip] 2015-02-28 21:12:10 -08:00
jdalton
d860cf834d Avoid testing the minified build on PRs in travis. 2015-02-28 19:18:38 -08:00
jdalton
63d5a3acbc Optimize baseIndexOf more consistently. 2015-02-28 12:42:14 -08:00
jdalton
132aacee89 Optimize lazy evaluation for 1 param. 2015-02-28 10:11:26 -08:00
jdalton
973038da6a Optimize baseIndexOf, indexOfNaN, and baseFlatten. 2015-02-27 21:43:30 -08:00
h7lin
584da3c39b Fix doc example in _.findLastIndex. [ci skip] 2015-02-27 19:56:12 -08:00
Mohsen Azimi
73c4829255 Escape the backtick in _.escape docs. [ci skip] 2015-02-27 19:56:06 -08:00
jdalton
68942f7ec4 Move _.max & _.min to Math category & make _.sum work on collections. 2015-02-27 09:20:57 -08:00
jdalton
e914b83a1b Add gitter badge to readme. [ci skip] [closes #983] 2015-02-27 08:26:09 -08:00
jdalton
2268376360 Update tested Firefox in saucelabs.js. 2015-02-26 19:41:22 -08:00
jdalton
6bb3b9a684 Disable lazy optimizations if the iteratee has more than one param. [closes #997] 2015-02-26 19:40:15 -08:00
jdalton
9f213c119c Add more chaining tests. 2015-02-25 23:35:16 -08:00
jdalton
f081e2b799 Cleanup _.sum tests. 2015-02-25 23:03:01 -08:00
jdalton
a024152c12 Add add and sum to lodash doc notes. [ci skip] 2015-02-25 23:01:50 -08:00
jdalton
42d23dbc70 Simplify _.sum. 2015-02-25 23:01:32 -08:00
John-David Dalton
74786e8a25 Merge pull request #987 from thejameskyle/math
Add math methods.
2015-02-25 19:00:06 -08:00
James Kyle
eeb4ede60d Add _.add/_.sum methods 2015-02-25 10:37:42 -08:00
Juliano Castilho
f2eee8896c Fix code example typo in _.dropRightWhile. [ci skip] 2015-02-25 00:19:53 -08:00
jdalton
bf4a70d91c Bump to v3.3.1. 2015-02-23 23:49:50 -08:00
jdalton
a35ab3937a Rebuild lodash and docs. 2015-02-23 23:49:40 -08:00
jdalton
5ef9a4be8a Ensure isIterateeCall doesn't error if index is an object without a toString method. [closes #994] 2015-02-23 23:48:49 -08:00
jdalton
d76d7582fe Simplify lazy filter, map, & takeWhile assignment. 2015-02-23 21:25:24 -08:00
jdalton
44006142c7 Ensure wait of _.debounce and _.throttle defaults to 0. [closes #991] 2015-02-23 08:28:20 -08:00
jdalton
6840b2cfe5 Consistent use of callCount variable. 2015-02-23 08:28:20 -08:00
jdalton
5613f60403 Ensure lazy takeWhile works with reverse and last`. [closes #990] 2015-02-23 02:05:09 -08:00
jdalton
76d3959f1a Use square in more places. 2015-02-23 01:26:07 -08:00
jdalton
b681759000 Remove unnecessary excused tests. 2015-02-23 00:35:24 -08:00
jdalton
d6336c4302 Fix code styling in _.template doc example. [ci skip] 2015-02-23 00:35:24 -08:00
jdalton
35b161450a Update benchmark and underscore vendor files. 2015-02-23 00:35:24 -08:00
jdalton
861aaf06c6 Optimize _.uniq and others in Firefox. 2015-02-23 00:35:23 -08:00
jdalton
a910884e7d Fix _.indexOf doc example typo. [closes #986] [ci skip] 2015-02-23 00:35:23 -08:00
Jarrett Meyer
0e7bef9014 Fixes missing single quotes in docs. [ci skip] 2015-02-23 00:35:23 -08:00
jdalton
d942189bc6 Bump to v3.3.0. 2015-02-23 00:35:23 -08:00
jdalton
eb16051b1e Rebuild lodash and docs. 2015-02-23 00:35:11 -08:00
jdalton
7749a7e41d Add gitter webhook to travis.yml. 2015-02-20 22:35:41 -08:00
jdalton
dc4cef17d4 Update ecstatic, istanbul, & sauce-tunnel in travis.yml. 2015-02-19 09:11:48 -08:00
jdalton
89ed40e4a4 Add _.merge. tests. 2015-02-19 00:14:59 -08:00
jdalton
10ee74d872 Cleanup clone tests. 2015-02-18 23:48:32 -08:00
jdalton
474ae1e91c Allow isDeep of _.clone to work with more truthy values. 2015-02-18 23:35:43 -08:00
jdalton
0dc70ca5f3 Semicolon nits. 2015-02-18 23:35:09 -08:00
jdalton
633b1663ca Tweak iteration methods test. 2015-02-18 23:22:03 -08:00
jdalton
153fe61b4b Avoid iterating strings in _.merge. [closes #978] 2015-02-18 21:05:39 -08:00
jdalton
9734fd0353 Increase _.merge test coverage. 2015-02-18 01:05:39 -08:00
jdalton
6209c120c0 Non-nits. 2015-02-18 01:03:53 -08:00
jdalton
3516881e7a Update tested Chrome in saucelabs.js. 2015-02-18 00:46:02 -08:00
jdalton
15398555b3 Ensure isIterateeCall works with NaN values. 2015-02-18 00:33:51 -08:00
jdalton
cb132fcbf4 Add more iteration method tests. 2015-02-18 00:03:50 -08:00
jdalton
f42f46c7d6 Adjust doc examples for smaller screens. [ci skip] 2015-02-17 10:08:38 -08:00
jdalton
f1046f1cf1 Consistent use of lodash when referencing a lodash wrapper. [ci skip] 2015-02-15 23:05:30 -08:00
jdalton
4a62287139 Cleanup baseLodash description. [ci skip] 2015-02-15 23:04:50 -08:00
jdalton
69cd56357f Tweak _.propertyOf usage example. [ci skip] 2015-02-15 22:42:16 -08:00
jdalton
b66a886682 Clarify _.noop docs. [ci skip] 2015-02-15 22:41:37 -08:00
jdalton
249504b7d6 Whitespace nits in docs. [ci skip] 2015-02-15 22:40:42 -08:00
jdalton
fa0086404d Add baseLodash. 2015-02-15 21:54:12 -08:00
Milos Zivadinovic
f243ebba91 Add _.inRange. 2015-02-15 18:01:05 -08:00
Austin Pray
540afb193b Fix type in _.some doc example. [closes #969] [ci skip] 2015-02-15 15:46:43 -08:00
jdalton
8294acdf1c Tweak null check tests of _.difference, _.intersection, _.union, & _.xor. 2015-02-15 00:37:18 -08:00
jdalton
7733d02938 Remove baseSlice from _.attempt. 2015-02-15 00:22:55 -08:00
jdalton
9b6342e7fa Add baseIsFunction. 2015-02-12 23:09:49 -08:00
jdalton
22c09cb31b Bump to v3.2.0. 2015-02-12 21:24:55 -08:00
jdalton
21e79cb54a Rebuild lodash and docs. 2015-02-12 21:24:48 -08:00
jdalton
b8cc829f4a Cleanup docs. [ci skip] 2015-02-12 21:13:45 -08:00
jdalton
ace0dacf15 Make baseMatches style consistent with baseMatchesProperty. 2015-02-12 20:18:26 -08:00
Graeme
5ca13098e3 Use predicate instead of iteratee. 2015-02-12 20:18:25 -08:00
jdalton
07b13eedec Cleanup _#plant and _.spread doc examples. [ci skip] 2015-02-12 12:47:54 -08:00
jdalton
d9168ed9ec Add proper jsdoc tags to _.fill. [ci skip] 2015-02-12 12:47:54 -08:00
jdalton
fb4e2c167c Add matchesProperty to lodash doc note. [ci skip] 2015-02-12 12:47:53 -08:00
jdalton
10ee3585f6 Fix spread doc and remove unused thisArg. 2015-02-12 01:59:16 -08:00
jdalton
5d4ba820dd Add _.matchesProperty shorthand tests. 2015-02-12 01:36:08 -08:00
jdalton
a51e00e69f Add _.matchesProperty tests. 2015-02-12 01:30:52 -08:00
jdalton
4dfa963851 Document "_.matchesProperty" shorthands. [ci skip] 2015-02-12 00:27:08 -08:00
jdalton
f2d4f6ccf6 Add _.matchesProperty. 2015-02-11 22:50:39 -08:00
jdalton
182cb8ab25 Simplify lazy pluck and where. 2015-02-11 22:50:22 -08:00
jdalton
ece341d868 Update android testing in saucelabs.js. 2015-02-11 20:25:25 -08:00
jdalton
d72e8c2687 Source cleanup from eslinting. 2015-02-11 20:25:13 -08:00
jdalton
b0ff6f4c7b Remove extraneous description from createAggregator docs. [ci skip] 2015-02-11 08:30:46 -08:00
jdalton
6ec5249492 Change intuitively to implicitly. 2015-02-11 08:29:41 -08:00
jdalton
c44cd76c5a Ensure commit and reverse track __chain__` settings. [closes #958] 2015-02-11 08:29:01 -08:00
jdalton
37f711d72a Adjust dep versions to better suite their range in package.json. 2015-02-11 00:15:11 -08:00
jdalton
fcf18fb965 Remove thisArg from _.spread. [closes #957] 2015-02-11 00:15:11 -08:00
jdalton
2efd6250fb Minor commit nit in test.js. [ci skip] 2015-02-11 00:15:11 -08:00
jdalton
1b4bd8523d Add _.slice assert. 2015-02-11 00:15:11 -08:00
jdalton
60c44910df Fix lazy slice when used after filter. [closes #955] 2015-02-11 00:15:03 -08:00
jdalton
faf67fae03 Update qunit to 1.17.1. 2015-02-10 20:16:27 -08:00
jdalton
e95f547950 Add doc notes on guarded methods. [ci skip] 2015-02-10 09:44:48 -08:00
jdalton
96b663b783 Ensure lazy slice handles floating-point start and end params. 2015-02-10 00:33:10 -08:00
jdalton
ce44f7e4b0 Add lazy compact and toArray. 2015-02-10 00:08:09 -08:00
jdalton
16a9c7d492 Improve label of unstable test. 2015-02-09 08:58:08 -08:00
jdalton
fc369c3448 Add _.fill and _.slice tests for default start and end params. 2015-02-09 08:39:09 -08:00
jdalton
b1a33edf0f Cleanup io.js testing in travis.yml. 2015-02-09 01:24:40 -08:00
jdalton
3b805f1a24 Rebuild lodash. 2015-02-09 01:14:55 -08:00
jdalton
954b4d8075 Add mutation note to _.fill docs. [ci skip] 2015-02-09 00:45:38 -08:00
jdalton
d073e2a881 Add _.fill to lodash docs. [ci skip] 2015-02-09 00:45:37 -08:00
jdalton
044dd2af94 Remove unneeded jsdoc Function type tags. [ci skip] 2015-02-09 00:45:37 -08:00
jdalton
ee489fa8c0 Cleanup tests. 2015-02-09 00:45:37 -08:00
jdalton
035ed5f49b Add _.fill. 2015-02-09 00:45:37 -08:00
jdalton
7dcd690f61 Add object test for _.max and _.min being used as an iteratee for _.map. 2015-02-09 00:45:37 -08:00
jdalton
1c9290aded Add _.includes, _.indexOf, _.lastIndexOf, _.map, _.mapValues, & a few other tests. 2015-02-09 00:45:37 -08:00
jdalton
0b922b1ed1 Move _.support tests to be in alphebetic API order. 2015-02-09 00:45:37 -08:00
jdalton
34eec362e5 Add methods to lodash docs. [ci skip] 2015-02-09 00:45:37 -08:00
jdalton
b829383864 Cleanup docs for _.callback. [ci skip] 2015-02-09 00:45:36 -08:00
jdalton
3960235428 Cleanup _.spread docs & tests. 2015-02-09 00:45:36 -08:00
Nicolas Chambrier
e91a662491 Add _.spread. 2015-02-09 00:45:36 -08:00
jdalton
ba4da24984 Add tests for arguments provided to callbacks of _.takeWhile and friends when in a lazy chain sequence. [closes #944] 2015-02-09 00:45:36 -08:00
jdalton
70378432b7 Minor cleanup of istanbul command in travis.yml. 2015-02-09 00:45:36 -08:00
jdalton
6b63009b14 Expand _.takeWhile, _.takeRightWhile, _.dropWhile, & _.dropRightWhile tests. 2015-02-09 00:45:36 -08:00
jdalton
dd45fea732 Add _#commit, _#plant, & _#run. 2015-02-09 00:45:36 -08:00
jdalton
ee09425cfb Simplify travis.yml. 2015-02-09 00:45:36 -08:00
jdalton
af02a1e024 Replace some _.isFunction checks with simple typeof checks and replace some typeof checks with _.isFunction checks based on likelihood of a problem value older enviros being passed. 2015-02-07 09:45:11 -08:00
jdalton
2a86f0776c Fix travis run. 2015-02-06 23:44:14 -08:00
jdalton
c6f73d9df8 Consistent apply(undefined, ...) use. 2015-02-06 23:14:03 -08:00
jdalton
5ab79f292b Allow _.attempt to provide additional arguments to func. [closes #929] 2015-02-06 23:09:52 -08:00
jdalton
82c7a22d27 Ensure _.flow and _.flowRight return an identity function when no arguments are provided. [closes #938] 2015-02-06 22:45:58 -08:00
jdalton
35fa977981 Update to Node.js 0.12 and simplify io.js install in travis.yml. 2015-02-06 21:57:08 -08:00
jdalton
ecbc46a91d Remove unused unshift variable. 2015-02-06 21:56:37 -08:00
jdalton
d2f6416e45 Add _.runInContext usage example to _.mixin docs. [ci skip] 2015-02-05 09:47:47 -08:00
jdalton
97a885a05c Use sauce-tunnel v2.1.1 to avoid hangs when closing tunnels. 2015-02-04 22:51:25 -08:00
jdalton
aa1edd6b94 Update tested io.js version in travis.yml. 2015-02-04 21:20:11 -08:00
jdalton
083e401717 Fix param doc typos in baseIsMatch, _.chunk, & _.isMatch. [ci skip] [closes #923] 2015-02-04 21:14:42 -08:00
jdalton
bdeca2edce Update .gitignore to ignore lodash.compat.min.js. [ci skip] 2015-02-04 21:14:42 -08:00
jdalton
c84e14db46 Bump to v3.1.0. 2015-02-04 21:14:42 -08:00
jdalton
919c5bd0b3 Rebuild lodash and docs. 2015-02-04 21:14:42 -08:00
jdalton
af8a8f1e3f Add spec note to isLength and update spec link for MAX_SAFE_INTEGER. [ci skip] 2015-02-04 21:14:42 -08:00
jdalton
41d08e123f Ensure isIterateeCall works correctly with objects. [closes #917] 2015-02-04 21:14:42 -08:00
jdalton
67d9656e35 Use baseProperty instead of _.property in more places. 2015-02-04 21:14:42 -08:00
jdalton
1a58a70494 Reduce deps on matches in favor of baseMatches. 2015-02-04 21:14:42 -08:00
jdalton
a477b2efd1 Add startCase to lodash docs. [ci skip] 2015-02-04 21:14:42 -08:00
jdalton
59c4546b8c Move _.startCase definition. 2015-02-04 21:14:42 -08:00
jdalton
ed1a75ef4c Add _.trunc test for floating-point lengths. 2015-02-04 21:14:42 -08:00
jdalton
0cd942f152 Cleanup case tests. 2015-02-04 21:14:41 -08:00
jdalton
fe7f082083 Cleanup case methods. 2015-02-04 21:14:41 -08:00
James Kyle
849fd71f76 Add _.startCase. 2015-02-04 21:14:41 -08:00
jdalton
4e3a72388d Add more lazy tests. 2015-02-04 21:14:41 -08:00
jdalton
29e3d9eff5 Bump to v3.0.1. 2015-02-04 21:14:31 -08:00
jdalton
64280f4285 Rebuild lodash and docs. 2015-02-04 21:14:02 -08:00
jdalton
98c6eaac3b Remove unneeded baseToString use. 2015-02-04 21:14:02 -08:00
jdalton
22d965c66c Add _.merge test for DOMExceptions for #895. 2015-02-04 21:14:01 -08:00
jdalton
2eb932ebc1 Add _.assign and _.merge test to ensure object isn't treated as source. 2015-02-04 21:14:01 -08:00
jdalton
2ee0634db3 Should coerce float start and end params of _.slice to integers. 2015-02-04 21:14:01 -08:00
jdalton
db3b6a1252 Add _.random tests. 2015-02-04 21:14:01 -08:00
jdalton
24810aeca3 Fix DOMException in _.merge. [closes #895] 2015-02-04 21:14:01 -08:00
jdalton
c888319f22 Fix lazy reverse and rest. [closes #890] 2015-02-04 21:14:01 -08:00
jdalton
13ee78a9c9 Remove baseToString use in baseCallback. 2015-02-04 21:14:01 -08:00
jdalton
acaa07cf7c Update docs. [ci skip] 2015-02-04 21:13:26 -08:00
Bjørn Madsen
1a3c9939e8 Fix Wikipedia link for kebabCase. 2015-02-04 21:13:26 -08:00
jdalton
56afe21022 Fix doc typo in _.memoize. [ci skip] 2015-02-04 21:13:26 -08:00
jdalton
b58bfa82e6 Fix doc example for _.forEach. [ci skip] 2015-02-04 21:13:26 -08:00
jdalton
a6257b5901 Bump to v3.0.0. 2015-02-04 21:13:20 -08:00
John-David Dalton
16ad7e53ff Update docs. [ci skip] 2015-02-02 23:05:17 -08:00
jdalton
3e4e4f2664 Rebuild lodash. 2015-02-02 23:05:17 -08:00
jdalton
dc0c4fe8fb Add tests for methods that check for functions and throw. 2015-02-02 23:05:17 -08:00
jdalton
0c050bb266 Add _.uniq test for arguments provided to iteratee. 2015-02-02 23:05:16 -08:00
jdalton
47a5b227cc Ensure _.ary treats negative n values as 0. 2015-02-02 23:05:16 -08:00
jdalton
ed61d0c591 Cleanup tests. 2015-02-02 23:05:16 -08:00
jdalton
8ff856ecf8 Use https in links where supported. [ci skip] 2015-02-02 23:05:16 -08:00
jdalton
93a607bea0 Reduce test hint for stable sort to match the commented issue. 2015-02-02 23:05:16 -08:00
jdalton
7bec7ba49d Rename Lo-Dash references to lodash. [ci skip] 2015-02-02 23:05:16 -08:00
jdalton
4c8f3bd392 Update travis.yml. 2015-02-02 23:05:16 -08:00
John-David Dalton
74ba9eb159 Update tested version of Firefox in saucelabs.js. 2015-02-02 23:05:16 -08:00
jdalton
d28ca4eda7 Rename ES6 to ES in tests. 2015-02-02 23:05:16 -08:00
jdalton
9563b5a7df Change ES6 references to ES. [ci skip] 2015-02-02 23:05:16 -08:00
John-David Dalton
d3a049c6e0 Update readme.md. 2015-02-02 23:05:16 -08:00
John-David Dalton
a52a3eb42f Update tested io.js version in travis.yml. 2015-02-02 23:05:15 -08:00
John-David Dalton
c54b21a754 Cleanup contributing.md. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
cc8995cd5c Remove Underscore build from readme. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
2e222fbae2 Minor doc whitespace nits. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
cdf3b15336 Use baseToString in more places. 2015-02-02 23:05:15 -08:00
John-David Dalton
a9a95de02d Use baseToString in _.repeat. 2015-02-02 23:05:15 -08:00
John-David Dalton
d4bcd4ab0c Rename toString helper to baseToString to avoid conflict with aliases. 2015-02-02 23:05:15 -08:00
John-David Dalton
3b2ed06864 Update bower.json and component.json. 2015-02-02 23:05:15 -08:00
John-David Dalton
ab210b3988 Use install shorthand consistently in readme. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
70617be903 Use Object.create(null) in SetCache. 2015-02-02 23:05:15 -08:00
John-David Dalton
f039d5bbcb Update lodash script reference in perf/index.html. 2015-02-02 23:05:15 -08:00
John-David Dalton
e0adb3cf9a Update tested enviros. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
4dd6e07b8d Change description. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
d69b7951e0 Remove author & contributors notes from readme. [ci skip] 2015-02-02 23:05:15 -08:00
John-David Dalton
d915ece2e7 Use baseClone & keys instead of baseAssign. 2015-02-02 23:05:14 -08:00
John-David Dalton
f1be3df112 Rename params of arrayCopy and baseCopy. 2015-02-02 23:05:14 -08:00
John-David Dalton
29b7ca4c25 Switch condition order. 2015-02-02 23:05:14 -08:00
John-David Dalton
f478d916aa Doc cleanup. [ci skip] 2015-02-02 23:05:14 -08:00
John-David Dalton
d2e50b09db Rename toString to objToString. 2015-02-02 23:05:14 -08:00
John-David Dalton
23c2dd33f2 Remove unnecessary _.toPlainObject test. 2015-02-02 23:05:14 -08:00
John-David Dalton
ce0c3c935c Remove unnecessary phantomjs guards. 2015-02-02 23:05:14 -08:00
John-David Dalton
bdbafb7a2a Treat arguments objects like plain objects. 2015-02-02 23:05:14 -08:00
John-David Dalton
edffe2a6fc Fix tests in phantomjs. 2015-02-02 23:05:14 -08:00
John-David Dalton
cd69a53406 Guard against nullish value being passed to arrayCopy in baseMergeDeep. 2015-02-02 23:05:14 -08:00
John-David Dalton
439ffa5849 Updated tested version of io.js. 2015-02-02 23:05:14 -08:00
John-David Dalton
4518c30cbe Fix test fails. 2015-02-02 23:05:13 -08:00
John-David Dalton
6683809447 Adjust handling of typed arrays and arguments objects in baseMergeDeep. 2015-02-02 23:05:13 -08:00
John-David Dalton
cccd43a16b Add _.merge tests for arguments objectd and typed arrays. 2015-02-02 23:05:13 -08:00
John-David Dalton
91d44147bb Allow io.js to build files for tests in travis.yml. 2015-02-02 23:05:13 -08:00
John-David Dalton
777311bbf5 Update falsey arguments assert count. 2015-02-02 23:05:13 -08:00
John-David Dalton
9ded5dc78d Minor stye nit in _.isEqual test. 2015-02-02 23:05:13 -08:00
John-David Dalton
5b81c4573c Cleanup test titles. 2015-02-02 23:05:13 -08:00
John-David Dalton
32b2e9f6cf Add _.isTypedArray tests. 2015-02-02 23:05:13 -08:00
John-David Dalton
a6dba44561 Add tests for _.toPlainObject. 2015-02-02 23:05:13 -08:00
John-David Dalton
03fc317a3f Tweak _.findLastKey doc. [ci skip] 2015-02-02 23:05:13 -08:00
John-David Dalton
00a8130201 Fix typo in baseMergeDeep. 2015-02-02 23:05:13 -08:00
John-David Dalton
74fc15cccd Move isIndex into runInContext. 2015-02-02 23:05:13 -08:00
John-David Dalton
1d4d919f6d Move tag references higher in source. 2015-02-02 23:05:12 -08:00
John-David Dalton
1826cc8870 Cleanup _.isPlainObject docs. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
8a6dab03c4 Tighten isIndex and isIterateeCall. 2015-02-02 23:05:12 -08:00
John-David Dalton
dffad444c3 Rearange key and mergeFunc param. 2015-02-02 23:05:12 -08:00
John-David Dalton
d6f1b164f7 Optimize object path in baseMergeDeep. 2015-02-02 23:05:12 -08:00
John-David Dalton
4011f054d6 Use isLength in baseIsEqualDeep. 2015-02-02 23:05:12 -08:00
John-David Dalton
14e9978359 Correct _.toPlainObject docs & add examples. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
98535638a2 Update doc examples of _.isPlainObject, _.toArray, _.forIn, _.forInRight, _.keys, _.keysIn, _.values, & _.valuesIn. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
8861c04e77 Update lodash docs. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
42b6f320d8 Fix _.isTypedArray docs. [ci skip] 2015-02-02 23:05:12 -08:00
John-David Dalton
31b4a9197f Simplify arrayToObject. 2015-02-02 23:05:12 -08:00
John-David Dalton
f06c9d5b9b Move _.toArray and _.toPlainObject to the Lang category. 2015-02-02 23:05:12 -08:00
John-David Dalton
130fafd7c2 Add baseMergeDeep. 2015-02-02 23:05:11 -08:00
John-David Dalton
e76f79cd56 Doc tweaks to baseIsEqualDeep, equalArrays, & equalObjects. 2015-02-02 23:05:11 -08:00
John-David Dalton
ba21718cb9 Whitespace nits and cleanup. 2015-02-02 23:05:11 -08:00
John-David Dalton
6dfb2997cb Cleanup baseMerge. 2015-02-02 23:05:11 -08:00
John-David Dalton
ae9ac3b439 Add _.toPlainObject. 2015-02-02 23:05:11 -08:00
John-David Dalton
d70b5a9886 Add baseCopy. 2015-02-02 23:05:11 -08:00
John-David Dalton
fb2a20201c Remove isArrayLike helper. 2015-02-02 23:05:11 -08:00
John-David Dalton
d1761558b4 Rename argsToObject to arrayToObject and cleanup arrayCopy. 2015-02-02 23:05:11 -08:00
John-David Dalton
5bd0a53edd Doc cleanup. [ci skip] 2015-02-02 23:05:11 -08:00
John-David Dalton
53ea73238a Cleanup baseIsEqualDeep. 2015-02-02 23:05:11 -08:00
John-David Dalton
28560cb887 Add _.isTypedArray. 2015-02-02 23:05:11 -08:00
John-David Dalton
0bcd12aa4e Add iojs to travis.yml. 2015-02-02 23:05:11 -08:00
John-David Dalton
a7dfdebed6 Rebuild lodash. 2015-02-02 23:05:10 -08:00
John-David Dalton
aca07530aa Ensure _.sortByAll iteratee call guard works when _.partialRight is applied. 2015-02-02 23:05:10 -08:00
John-David Dalton
c0110c6bab Reduce doc example for _.assign and _.defaults. [ci skip] 2015-02-02 23:05:10 -08:00
John-David Dalton
0ef9e0fa75 Reduce keywords in component.json. [ci skip] 2015-02-02 23:05:10 -08:00
John-David Dalton
ba0751917d Update urls in contributing.md. [ci skip] 2015-02-02 23:05:10 -08:00
John-David Dalton
e3c1bfbcba Update build detection in saucelabs.js. 2015-02-02 23:05:10 -08:00
John-David Dalton
5aaa0a7b5f Update isModularize and isStrict detection. 2015-02-02 23:05:10 -08:00
John-David Dalton
2ca75970c0 Don't require building for run-test.sh. 2015-02-02 23:05:10 -08:00
John-David Dalton
d9c92288be Update contributing.md. [ci skip] 2015-02-02 23:05:10 -08:00
jdalton
e4f231502a Move _lodash.js to lodash.js. 2015-02-02 23:05:10 -08:00
jdalton
04a61e6fd6 Move lodash.js to lodash.src.js. 2015-02-02 23:04:56 -08:00
jdalton
dc5c7d2ee8 Move lodash.src.js to _lodash.js. 2015-02-02 23:02:47 -08:00
John-David Dalton
87ac6812a3 Update repo structure. 2015-01-10 11:08:20 -08:00
John-David Dalton
8d4d2d62c1 Remove clonePassthru. 2015-01-10 11:08:08 -08:00
John-David Dalton
68fc036b7a Fix test fail in non-browsers. 2015-01-09 19:11:45 -08:00
John-David Dalton
f053c4d532 Update lodash-compat-dev path. 2015-01-09 09:43:54 -08:00
John-David Dalton
06e4a2dbde Add initCloneByTag and adjust how unclonables are handled. 2015-01-09 09:43:54 -08:00
John-David Dalton
9e0ecab0c1 Move like functions closer together. 2015-01-08 00:11:33 -08:00
John-David Dalton
996e61a383 Make bower.json main reference lodash.compat.js. [ci skip] 2015-01-08 00:10:47 -08:00
John-David Dalton
309aa4a3f3 Minor perf/index.html tweak. 2015-01-07 21:16:49 -08:00
John-David Dalton
0906fbf995 Correct benchmark titles for _.includes. 2015-01-07 21:16:49 -08:00
John-David Dalton
2348ec40ee Add arrayCopy and use baseSlice in more functions. 2015-01-07 21:16:41 -08:00
John-David Dalton
c6852f4b96 Remove index.js. 2015-01-07 16:49:57 -08:00
John-David Dalton
8b01139738 Change project structure. 2015-01-07 09:33:46 -08:00
John-David Dalton
5ea3717152 Rebuild dist. 2015-01-06 09:06:41 -08:00
John-David Dalton
d01a673adb Update copyright year. [ci skip] 2015-01-06 09:03:07 -08:00
John-David Dalton
571ec44c33 Cleanup tests. 2015-01-05 23:04:20 -08:00
John-David Dalton
e5a3c12026 Add _.invoke test for missing properties. 2015-01-05 23:04:20 -08:00
John-David Dalton
bb2f1aa4be Expand _.runInContext doc examples. 2015-01-05 23:04:20 -08:00
John-David Dalton
59070bcd5b Simplify falsey string checks. 2015-01-05 23:04:20 -08:00
John-David Dalton
2f52dd88a9 Fix doc typo in arrayEvery and baseEvery. [ci skip] 2015-01-05 23:04:20 -08:00
John-David Dalton
79fec3ac40 Cleanup doc "returns" for _.assign, _.size, _.defaults, & _.merge. [ci skip] 2015-01-05 23:04:19 -08:00
John-David Dalton
6247bbf4b1 Cleanup customizer callback & callback shorthand docs. [ci skip] 2015-01-05 23:04:19 -08:00
John-David Dalton
11de155432 Chain methods by reference instead of property. 2015-01-04 16:55:09 -06:00
John-David Dalton
bfe833c132 Tweak _.drop, _.dropRight, _.take, & _.takeRight doc examples. [ci skip] 2015-01-04 16:55:09 -06:00
John-David Dalton
1fd1da72f4 Cleanup bower.json. 2015-01-04 16:55:09 -06:00
John-David Dalton
f4c994d182 Simplify package.json for non-npm use. 2015-01-04 16:55:09 -06:00
John-David Dalton
d81a6e6e89 Add more tested strings to the case methods. 2015-01-03 01:22:54 -06:00
John-David Dalton
fab5daacf8 Tweak string method doc examples. [ci skip] 2015-01-03 01:22:54 -06:00
John-David Dalton
b714c6b746 Update _.template sourceURLs to display better in Firefox. 2015-01-03 01:22:53 -06:00
John-David Dalton
af1355a94e Clarify customizer args in docs for _.clone, _.cloneDeep, _.isEqual, & _.isMatch. [ci skip] 2015-01-03 01:22:53 -06:00
John-David Dalton
ebc08fd6f5 Add _.parseInt used with _.map doc example. [ci skip] 2015-01-03 01:22:53 -06:00
John-David Dalton
30b1445195 Add ES6 notes to _.keys, _.keysIn, _.values, & _.valuesIn. [ci skip] 2015-01-03 01:22:43 -06:00
John-David Dalton
0d1c7a1414 Add _.memoize.Cache doc example. [ci skip] 2015-01-02 16:50:26 -06:00
John-David Dalton
7e8e7757f4 Update features and support sections of readme. [ci skip] 2015-01-02 16:50:26 -06:00
John-David Dalton
42eb180b6c Avoid unnecessary coercion of radix in _.parseInt. 2015-01-02 10:58:17 -06:00
John-David Dalton
dff35bc9b7 Cleanup _.mixin. 2015-01-02 10:58:17 -06:00
John-David Dalton
6a87ed2853 Tweak options detection in _.trunc. 2015-01-02 10:58:16 -06:00
John-David Dalton
1266d49c65 Minor tweak to condition in _.zipObject. 2015-01-02 10:58:16 -06:00
John-David Dalton
c8b130b232 Cleanup createWrapper. 2015-01-01 19:46:59 -06:00
John-David Dalton
67a6b0f383 Cleanup .gitignore. [ci skip] 2015-01-01 19:46:59 -06:00
John-David Dalton
e7c176f904 Fix typo in toString docs. [ci skip] 2014-12-31 18:35:14 -06:00
John-David Dalton
4cc8363b5f Replace [[Class]] with tag references in tests. 2014-12-31 11:34:44 -06:00
John-David Dalton
93193d7e76 Comment cleanup. [ci skip] 2014-12-31 11:34:13 -06:00
John-David Dalton
d68321ac27 Change [[Class]] references to ES6 tag and add toString helper. 2014-12-31 11:13:33 -06:00
John-David Dalton
b2e8359d31 Add more isLength tests. 2014-12-31 09:11:12 -06:00
John-David Dalton
a302ca3d6c Use a nullish check in _.startsWith instead of typeof. 2014-12-31 00:43:18 -06:00
John-David Dalton
670358f235 Make isLength return false for floats. 2014-12-31 00:42:45 -06:00
John-David Dalton
10e329f762 Add _.sortedIndex benchmark. [ci skip] 2014-12-30 21:16:07 -06:00
John-David Dalton
6a3c1bdb99 Fix strict mode test fail for es6 builds. 2014-12-30 21:06:35 -06:00
John-David Dalton
90923c965b Various doc cleanup. [ci skip] 2014-12-30 18:39:25 -06:00
John-David Dalton
d555241d03 Cleanup createExtremum. 2014-12-30 18:37:45 -06:00
John-David Dalton
3d2b6b7620 Rename baseBinaryIndex to binaryIndexBy. 2014-12-30 18:21:44 -06:00
John-David Dalton
0b943b418c Add createExtremum and extremumBy to reduce _.max and _.min. 2014-12-30 18:20:22 -06:00
John-David Dalton
db12aaad11 Adjust getCallback use in _.max, _.min, _.sortedIndex, & _.sortedLastIndex. 2014-12-30 11:03:47 -06:00
John-David Dalton
860aa65d10 Merge pull request #842 from bezoerb/debounce-doc-fix
Fixed documentation for debounce. [ci skip]
2014-12-29 08:24:56 -06:00
John-David Dalton
2e5e279a14 Minor _.where test cleanup. 2014-12-29 01:33:00 -06:00
John-David Dalton
df87b9ff56 Add _.transform tests. 2014-12-29 01:33:00 -06:00
John-David Dalton
6c06ff3ca0 Fix skipTest typos. 2014-12-29 01:32:48 -06:00
John-David Dalton
40d6e9c841 Add tests for custom _.callback implementations. 2014-12-28 17:23:27 -06:00
John-David Dalton
6a4f06f325 Make _.omit and _.pick use bindCallback. 2014-12-28 17:21:32 -06:00
John-David Dalton
f7d306cb02 Let the nullish check be handled by baseCallback. 2014-12-28 17:21:13 -06:00
Ben Zörb
34bc182c22 Fixed documentation for debounce 2014-12-28 22:42:28 +01:00
John-David Dalton
3f8dd7e658 Add test for customizer results of NaN. 2014-12-27 23:09:56 -06:00
John-David Dalton
46341fea96 Ensure _.merge handles source arrays with undefined values correctly with a customizer. 2014-12-27 22:11:47 -06:00
John-David Dalton
4319cdbba1 Fix failing Backbone test and ensure _.assign works properly with a customizer that returns undefined. 2014-12-27 21:14:12 -06:00
John-David Dalton
3453236830 Adjust how tests are skipped in loops so values may be added without adjusting the skip counts. 2014-12-27 20:27:17 -06:00
John-David Dalton
fa2058ec77 Ensure _.assign and _.merge don't assign the customizer result if it is the same as the destination value. 2014-12-27 19:42:10 -06:00
John-David Dalton
7f823fe2a8 Minor comment format nit. [ci skip] 2014-12-27 00:39:39 -06:00
John-David Dalton
58e14705b5 Rebuild dist. 2014-12-26 22:17:59 -06:00
John-David Dalton
99b7613206 Clarify _.isEmpty doc. [ci skip] 2014-12-26 22:15:57 -06:00
John-David Dalton
545e614c04 Cleanup isBindable. 2014-12-26 21:39:37 -06:00
John-David Dalton
5ea04a388d Change setCallbackData to isBindable and use bindCallback more. 2014-12-26 21:39:37 -06:00
John-David Dalton
8922372f4b Make _.unzip use baseProperty. 2014-12-26 21:39:37 -06:00
John-David Dalton
ceaa2c1619 Add bindCallback and setCallbackData. 2014-12-26 21:39:36 -06:00
John-David Dalton
4e73daab79 Add getLength, baseProperty, and baseMatches. 2014-12-26 21:39:36 -06:00
John-David Dalton
5b29d987c8 Use arrayMax and arrayMap instead of _.max and _.pluck in _.unzip. 2014-12-23 18:25:26 -06:00
John-David Dalton
1cd53c051d Update tested version of RingoJS. 2014-12-23 17:44:53 -06:00
John-David Dalton
5460d0030f Remove php from .editorconfig. [ci skip] 2014-12-23 17:44:53 -06:00
John-David Dalton
d14a0ce592 Use isLength in _.keys, _.keysIn, and shimKeys. 2014-12-22 12:26:16 -06:00
Benjamin Tan
a4000a3286 README.md: Update links to npm and minor cleanup. [ci skip] 2014-12-22 11:46:03 -06:00
Benjamin Tan
85fd650f5c More comment updates
[ci skip]
2014-12-22 11:46:03 -06:00
John-David Dalton
b19033a375 Add _.runInContext test for _.uniqueId counter. 2014-12-22 11:46:03 -06:00
John-David Dalton
33e19ce9f6 Reduce deps of _.template. 2014-12-21 23:17:34 -06:00
John-David Dalton
d21218fd57 Make use of changed baseValues signature. 2014-12-21 23:17:34 -06:00
John-David Dalton
9f2279c675 Make baseValues accept props instead of a keysFunc. 2014-12-21 23:17:34 -06:00
John-David Dalton
06bfbfaff4 Rename isWhitespace to isSpace. 2014-12-21 23:17:34 -06:00
John-David Dalton
562834e0d0 Use https for Benjamin's site url. [ci skip] 2014-12-21 23:17:34 -06:00
John-David Dalton
bdf2285f14 Remove Object.create use. 2014-12-21 21:31:56 -06:00
Benjamin Tan
1780682a8d Minor comment updates
[ci skip]
2014-12-21 21:03:55 -06:00
John-David Dalton
9b48bd27dd Ajust tests for npm build modifications. 2014-12-21 21:03:55 -06:00
John-David Dalton
0b1e2a6107 Add test for _.noConflict. 2014-12-21 21:03:55 -06:00
John-David Dalton
c78edf3fff Remove "always" from test titles. 2014-12-21 21:03:55 -06:00
John-David Dalton
6fcd99c6da Adjust test for builds without noConflict. 2014-12-21 21:03:55 -06:00
John-David Dalton
b42f3a5400 Ensure _.isMatch handle customizer functions correctly. 2014-12-20 20:00:58 -06:00
John-David Dalton
bb543920a6 Update Underscore version in LICENSE.txt. [ci skip] 2014-12-20 20:00:58 -06:00
John-David Dalton
0845758023 Add isMatch to lodash doc. [ci skip] 2014-12-20 17:42:45 -06:00
John-David Dalton
816f81260a Tweak _.matches docs. [ci skip] 2014-12-20 16:59:50 -06:00
John-David Dalton
a9583f4440 Cleanup tests. 2014-12-20 16:56:43 -06:00
John-David Dalton
4e52c9cc65 Add _.isMatch tests. 2014-12-20 16:56:43 -06:00
John-David Dalton
8299dded0b Remove default false from param docs. [ci skip] 2014-12-20 16:56:42 -06:00
John-David Dalton
5d83cafc50 Add baseIsMatch and _.isMatch. 2014-12-20 16:56:42 -06:00
John-David Dalton
9819e60aae Update Chrome extension doc link. [ci skip] 2014-12-20 16:56:42 -06:00
John-David Dalton
1182eb4a9f Remove unneeded partial use to reduce deps. 2014-12-20 16:56:42 -06:00
John-David Dalton
48a0986c14 Move idCounter into runInContext. 2014-12-20 16:56:42 -06:00
John-David Dalton
6c2f7046d1 Consolidate sortedIndex method tests and add one for array of undefined. 2014-12-20 16:56:42 -06:00
John-David Dalton
9735bffae5 Cleanup length checks. 2014-12-20 16:56:42 -06:00
John-David Dalton
56a11910db Remove _.identity from binaryIndex. 2014-12-17 23:57:06 -08:00
John-David Dalton
70b00dc4e3 Cleanup doc formatting. [ci skip] 2014-12-17 23:39:51 -08:00
John-David Dalton
56c1bf01a4 Ensure trim methods and _.words work as an iteratee for _.map with string objects. 2014-12-17 20:35:54 -08:00
John-David Dalton
022b295aaa Make _.indexOf and _.lastIndexOf used binaryIndex instead of _.sortedIndex and _.sortedLastIndex. 2014-12-17 20:35:54 -08:00
John-David Dalton
fd977895ab Tweak docs for _.after. [ci skip] 2014-12-17 20:35:54 -08:00
John-David Dalton
ad1f3ddbad Update Chrome and Firefox versions tested by Sauce. 2014-12-17 20:35:53 -08:00
John-David Dalton
c8b159e38c Reorg method categories. 2014-12-17 00:42:16 -08:00
John-David Dalton
7405e3c12a Simplify methods like _.defer and _.once. 2014-12-15 19:28:10 -08:00
John-David Dalton
1b8ca164c9 Increase code coverage. 2014-12-15 17:42:55 -08:00
John-David Dalton
74cdaa9fcb Clarify _.pick and _.omit docs. [ci skip] [closes #826] 2014-12-15 17:42:55 -08:00
John-David Dalton
0ba331485a Cleanup _.isEqual benchmarks. 2014-12-15 17:42:54 -08:00
John-David Dalton
f5b3c0affc Fix QUnit hidepass display. 2014-12-15 17:42:54 -08:00
John-David Dalton
316ae0c785 Update qunit-extras and backbone test to work with QUnit 1.16.0. 2014-12-15 17:42:54 -08:00
John-David Dalton
c2d2fa2579 Add more large array tests for sortedIndex methods. 2014-12-15 17:42:54 -08:00
John-David Dalton
d683eb2dd1 Reorg data merged by mergeData and remove dead code. 2014-12-14 19:30:53 -08:00
John-David Dalton
470d35e96c Simplify equalObjects. 2014-12-14 19:30:53 -08:00
John-David Dalton
7464d82243 Fix test fails in old IE. 2014-12-14 13:03:56 -08:00
John-David Dalton
c61fed32db Fix failing Rhino and Ringo tests. 2014-12-14 11:03:29 -08:00
John-David Dalton
c4cdec5531 Fix circular dep reference of baseIsEqual. 2014-12-14 10:40:10 -08:00
John-David Dalton
3ad9d38063 Add argsToObject, baseIsEqualDeep, equalArrays, equalByClass, and equalObjects helpers. 2014-12-14 10:31:48 -08:00
John-David Dalton
f8b95abf0c Add @d10 to the contributors list. 2014-12-13 23:33:06 -08:00
John-David Dalton
579794666a Update QUnit to 1.16.0. 2014-12-13 23:32:58 -08:00
John-David Dalton
2ef25b6338 Cleanup baseBinaryIndex and _.pull. [ci skip] 2014-12-12 22:49:30 -08:00
John-David Dalton
faddd94518 Add more large array tests for sortedIndex methods. 2014-12-11 09:03:24 -08:00
John-David Dalton
cd5f9b8bd4 Update _.result to execute default values if they're functions. 2014-12-11 07:05:09 -08:00
John-David Dalton
94fd20e864 Minor lodash doc nit. [ci skip] 2014-12-11 07:05:09 -08:00
John-David Dalton
3558eef66b Cleanup tests. 2014-12-11 07:05:03 -08:00
John-David Dalton
ee66e2154d Allow sourceURL option of _.template to be falsey. 2014-12-10 23:10:24 -08:00
John-David Dalton
5500a86f0b Add _.pluck test for undefined properties. 2014-12-09 23:39:08 -08:00
John-David Dalton
9b1c1774cd Expand _.assign doc example. [closes #819] [ci skip] 2014-12-09 23:33:41 -08:00
John-David Dalton
a8e31469c5 Optimize baseIsEqual for arrays. 2014-12-09 23:33:33 -08:00
John-David Dalton
b70bafaf51 Rename baseSortedIndex and edgeSortedIndex to binaryIndex and baseBinaryIndex respectively. 2014-12-09 21:32:17 -08:00
John-David Dalton
d393349b4d Add _.invoke tests. 2014-12-09 09:19:41 -08:00
John-David Dalton
0904724694 Tweak _.includes test. 2014-12-09 08:56:13 -08:00
John-David Dalton
eff4825000 Optimize _.escape, _.escapeRegExp, and _.unescape. 2014-12-09 08:55:48 -08:00
John-David Dalton
091c00229a Add edgeSortedIndex. 2014-12-09 08:34:13 -08:00
John-David Dalton
126f0d6036 Add more chaining docs. [ci skip] 2014-12-07 22:45:11 -08:00
John-David Dalton
f99bc6d8f9 Remove doc note for deep defaults. [ci skip] 2014-12-07 22:44:48 -08:00
John-David Dalton
3da0117838 Rebuild dist. 2014-12-07 09:31:47 -08:00
John-David Dalton
3d8cf6a90b Update vendors. 2014-12-07 00:00:12 -08:00
John-David Dalton
ac44663f04 Update lodash urls in source to use https. [ci skip] 2014-12-06 23:50:32 -08:00
John-David Dalton
57113b21ed Update readme with new entries and examples. [ci skip] 2014-12-06 15:09:32 -08:00
John-David Dalton
57d5ace61c Add _.ary tests. 2014-12-06 15:06:03 -08:00
John-David Dalton
f4da80e7c6 No need to assign the rusult of mergeData. 2014-12-06 14:40:47 -08:00
John-David Dalton
df3ca5c7c8 Fix _.ary unit test fail in old IE. 2014-12-06 14:36:23 -08:00
John-David Dalton
4b676df37f Move merge logic to mergeData. 2014-12-06 14:23:49 -08:00
John-David Dalton
5dc04266ea Update chaining docs. [ci skip] 2014-12-06 13:23:39 -08:00
John-David Dalton
dbcfe3f5d2 Add internal isObjectLike. 2014-12-06 13:12:03 -08:00
John-David Dalton
fdbec5b0d2 Allow metadata to be used for curried functions that have _.ary and or _.rearg applied. 2014-12-06 10:48:48 -08:00
John-David Dalton
3ea129b4f8 Add icon field to package.json and update Mathias' website url. 2014-12-05 00:15:18 -08:00
John-David Dalton
48a7e40520 Add _.ary. [closes #814] 2014-12-05 00:13:30 -08:00
John-David Dalton
08b956cf88 Adust code example in readme. [ci skip] [closes #811] 2014-12-02 23:43:28 -08:00
John-David Dalton
93b1e1f5ac Add placeholder docs. [ci skip] 2014-12-02 23:41:41 -08:00
John-David Dalton
bdecf6baf5 Cleanup test titles. 2014-12-01 22:21:47 -08:00
John-David Dalton
4528311d77 Add _.create and _.includes tests. 2014-12-01 22:20:41 -08:00
John-David Dalton
0bc1761dae Update ecstatic in travis.yml. 2014-12-01 01:09:04 -08:00
John-David Dalton
f690b0edf6 Update dev deps. 2014-11-30 22:20:29 -08:00
John-David Dalton
10851772af Fix paths in test.js. 2014-11-30 19:45:35 -08:00
John-David Dalton
66e7b28195 Use _.include instead of _.includes in perf.js for Underscore compat. 2014-11-30 19:42:23 -08:00
John-David Dalton
76021fb582 Move some vendors to devDependencies. 2014-11-30 19:41:52 -08:00
John-David Dalton
db50adbd9f Cleanup and add "Mobile" note to Safari 8 JIT bug test. [ci skip] 2014-11-29 10:08:53 -08:00
John-David Dalton
5c7cc146a1 Rebuild dist. 2014-11-28 15:43:43 -08:00
John-David Dalton
fa3b384c6f Add MapCache tests. 2014-11-28 15:38:54 -08:00
John-David Dalton
3f9a878b03 Correct name jsdoc entries. [ci skip] 2014-11-28 14:23:56 -08:00
John-David Dalton
ab3b972185 Add mapDelete. 2014-11-28 14:00:42 -08:00
John-David Dalton
fb9118a044 Ensure objects work in a lazy chain sequence. [closes #796] 2014-11-28 14:00:41 -08:00
Evgeny Boxer
5cce5b6707 Add a spec to catch a Safari JIT bug. [closes #798] 2014-11-28 14:00:41 -08:00
John-David Dalton
3256c9b3f5 Add _.parseInt test for its bizarro form. 2014-11-28 14:00:41 -08:00
John-David Dalton
8b43b2b69d Make more methods use isIterateeCall. 2014-11-27 00:22:17 -08:00
John-David Dalton
02a862684d Rename _.sortByMultiple to _.sortByAll. 2014-11-25 00:36:27 -08:00
John-David Dalton
c15f5b5106 Cleanup tests. 2014-11-25 00:35:33 -08:00
John-David Dalton
0f06d51065 Add more "hot" method tests. 2014-11-24 23:57:35 -08:00
John-David Dalton
8abfa419e8 Use _.includes instead of _.contains in saucelabs.js. 2014-11-24 23:57:35 -08:00
John-David Dalton
c3c90ab78b Fix typo in saucelabs.js. 2014-11-24 23:57:35 -08:00
John-David Dalton
666be21f59 Update vendors. 2014-11-24 23:57:34 -08:00
John-David Dalton
0fe8197100 Add _.sortByMultiple. 2014-11-23 23:26:11 -08:00
John-David Dalton
d8a7a7792a Comment cleanup. [ci skip] 2014-11-23 23:25:34 -08:00
John-David Dalton
82b9a0c949 Rename _.contains to _.includes. 2014-11-23 18:38:32 -08:00
John-David Dalton
a3083d2990 Add V8 bug note to setData. 2014-11-23 15:36:10 -08:00
John-David Dalton
3c62914304 Cleanup createWrapper and mergeData. 2014-11-23 15:35:49 -08:00
John-David Dalton
a094768469 Move sourceURL to the beginning of the function body to avoid errors in narwhal. 2014-11-23 14:53:57 -08:00
John-David Dalton
3965f063d3 Rename wrapper vars to wrapped. 2014-11-22 14:34:44 -08:00
John-David Dalton
2b7c295bf1 Use slice() instead of map() in tests. 2014-11-22 14:31:52 -08:00
John-David Dalton
2fd297c1e1 Ensure reverse returns a LodashWrapper instance when chaining. 2014-11-22 14:31:32 -08:00
John-David Dalton
263c04aeb2 Merge pull request #793 from FilipZawada/reverse
Fix broken lazy reverse.
2014-11-22 13:10:50 -08:00
Filip Zawada
8f2b5e195e Fix broken lazy reverse 2014-11-22 17:27:46 +01:00
John-David Dalton
7e3dd2b8cc Cleanup previous commit. 2014-11-22 00:09:01 -08:00
John-David Dalton
49c027537e Merge pull request #790 from FilipZawada/lazy-first-last
Fix non-lazy calls not executed before `first` & `last`.
2014-11-21 14:02:42 -08:00
Filip Zawada
a1a6095295 Fix non-lazy methods not executed when used with lazy .first() or .last() 2014-11-21 22:45:04 +01:00
John-David Dalton
5f7dcc9b78 Add lazy _.compact test and cleanup previous fix. 2014-11-21 01:33:38 -08:00
John-David Dalton
1705bf4f3c Rename shadowedProps to shadowProps. 2014-11-21 00:39:59 -08:00
Filip Zawada
8612946bf5 Fix lazy methods to execute non-lazy methods performed in between. 2014-11-20 21:05:53 -08:00
John-David Dalton
7cf40576dd Uncomment Android now that Sauce has fixed their issue. 2014-11-20 21:04:03 -08:00
John-David Dalton
239f35d830 Add mergeData helper. 2014-11-20 21:03:52 -08:00
John-David Dalton
05ff42b767 Use collection more in place of "the collection" in docs. [ci skip] 2014-11-18 06:11:40 +01:00
John-David Dalton
7bab4817f2 Tweak lazy _.pluck and _.where methods. 2014-11-17 07:17:13 +01:00
John-David Dalton
0d87b7d720 More comment cleanup. [ci skip] 2014-11-16 08:45:36 +01:00
John-David Dalton
6b72adbeee Don't use metadata for rearg'ed functions if previously partially applied. 2014-11-15 23:57:56 +01:00
John-David Dalton
db97ae46e5 Cleanup lazy _.pluck and _.where. 2014-11-15 23:52:50 +01:00
John-David Dalton
fc6c084693 Simulate Safari 8's typed array constructor issue better. 2014-11-14 19:19:28 -08:00
John-David Dalton
9e01cc5705 Clarify _.isFunction fallback note. [ci skip] 2014-11-14 19:16:14 -08:00
John-David Dalton
f9ce45c058 Avoid errors in modularized build runs. 2014-11-14 11:52:18 -08:00
John-David Dalton
056ff4b6ea Tweak _.isFunction fallback check. 2014-11-14 11:35:23 -08:00
John-David Dalton
52653f73b9 Fix failing phantomjs test. 2014-11-14 09:19:57 -08:00
Filip Zawada
a06207b814 Add lazy _.pluck and _.where. [closes #776] 2014-11-14 07:36:11 -08:00
Benjamin Tan
3b3ef411a4 Minor cleanup in _.invoke, _.sortBy, and lazy wrapper for _.filter. 2014-11-14 07:34:19 -08:00
John-David Dalton
6418f78fdb Add a test for _.rearg used on already rearged functions. 2014-11-13 23:12:57 -08:00
John-David Dalton
5d4187bf03 Add _.isFunction test for its fallback. 2014-11-13 23:12:27 -08:00
John-David Dalton
cfffad73eb Make cloneBuffer use _.constant instead of _.identity. 2014-11-13 23:10:27 -08:00
John-David Dalton
ef7db87b82 Capitalize and punctuate comments. [ci skip] 2014-11-13 00:46:03 -08:00
John-David Dalton
212eea9cf5 Avoid JIT bug in Safari 8. 2014-11-12 21:56:44 -08:00
John-David Dalton
da792cc272 Cleanup baseDifference. 2014-11-12 21:56:26 -08:00
John-David Dalton
2ae2142b35 Rebuild dist. 2014-11-12 00:00:10 -08:00
John-David Dalton
a00f5f308a Rename MemCache to MapCache. 2014-11-11 23:12:53 -08:00
John-David Dalton
81cfde12f3 Remove Android 4.0 from Sauce until their issue is resolved. 2014-11-11 18:16:17 -08:00
John-David Dalton
1a53d38dae Fix failing tests in Node. 2014-11-11 01:36:39 -08:00
John-David Dalton
b834fdbc5e Reorganize wrappers, adding SetCache as a hybrid cache combining ES6 Set and object lookups, 2014-11-11 01:13:15 -08:00
John-David Dalton
1cb2db03ed Add isIndex helper. 2014-11-10 14:24:47 -08:00
John-David Dalton
57bca50ed0 Fix _.template benchmarks. 2014-11-09 22:48:23 -08:00
John-David Dalton
94386583e2 Remove less useful benchmarks from perf.js. 2014-11-09 22:48:09 -08:00
John-David Dalton
b1ab63d549 Use available value var in _.difference. 2014-11-09 22:45:47 -08:00
John-David Dalton
ad56bdd354 Move isArray check higher up in lodash function. 2014-11-09 22:43:50 -08:00
John-David Dalton
65e30c13e2 Clarify comments on _.support.spliceObjects and _.isFunction. [ci skip] 2014-11-09 09:52:24 -08:00
John-David Dalton
0c54fac651 Whitespace nit in _.propertyOf doc example. [ci skip] 2014-11-09 01:38:43 -08:00
John-David Dalton
9660c22a9f Make unicode chars lower case. 2014-11-09 01:34:24 -08:00
John-David Dalton
31e8df4a59 Tweak _.parseInt doc note. [ci skip] 2014-11-09 00:07:11 -08:00
John-David Dalton
8e6ecaf8d4 Remove period from comment to conform to style. [ci skip] 2014-11-09 00:05:40 -08:00
John-David Dalton
4d69a0ce29 Add comments to _.isFunction. [ci skip] 2014-11-09 00:02:00 -08:00
John-David Dalton
1b842f86ca Optimize _.chunk. 2014-11-08 19:34:37 -08:00
John-David Dalton
a2330fb630 Fix test fails on old Android & Safari. 2014-11-08 09:28:47 -08:00
John-David Dalton
30f0232d71 Tweak docs for _.property and _.propertyOf. [ci skip] 2014-11-08 08:54:43 -08:00
John-David Dalton
404e658a5d Fix _.isFunction and _.isNative for Safari 8. 2014-11-08 02:47:17 -08:00
John-David Dalton
f5682397c2 Remove Rhino guards from curry tests and add a partial test. 2014-11-07 22:57:16 -08:00
John-David Dalton
4896810258 Add Safari 8 to Sauce tests. 2014-11-07 21:50:30 -08:00
John-David Dalton
dd0de8b6e1 Doc cleanup. [ci skip]
Conflicts:
	lodash.js
2014-11-07 21:44:56 -08:00
John-David Dalton
2a9f9f7ebd Don't set data on functions created by a curried function. 2014-11-07 21:44:56 -08:00
John-David Dalton
2f3afd3637 Add _.propertyOf. 2014-11-07 21:44:56 -08:00
John-David Dalton
f0a2c88fdc Add more _.identity for nullish args tests. 2014-11-07 21:44:56 -08:00
John-David Dalton
c3a5b12cd3 Make _.wrap use _.identity when wrapper is nullish. [closes #767] 2014-11-07 21:44:56 -08:00
John-David Dalton
d7b0e66270 Comment out Android 4.3 test in Sauce until they resolve their issue. 2014-11-07 21:44:17 -08:00
John-David Dalton
1871ed5441 Avoid modularized test fails for Rhino. 2014-11-06 22:23:54 -08:00
John-David Dalton
5ea6948127 Add _.rearg tests. 2014-11-06 20:46:27 -08:00
John-David Dalton
9bd77d36f1 Add _.pullAt tests. 2014-11-06 20:46:03 -08:00
John-David Dalton
3ffa6cd1ac Add test for _.at and non-index keys on array-like values. 2014-11-06 20:45:18 -08:00
John-David Dalton
ad87df3168 Make shimKeys style more consistent with keysIn. 2014-11-06 20:44:40 -08:00
John-David Dalton
8bd0d32fd2 Remove isArrayLike and isPlainObject guards from baseMerge. 2014-11-06 20:44:16 -08:00
John-David Dalton
f182675a6e Ensure baseAt uses undefined for non-index values for array-like collections. 2014-11-06 20:43:34 -08:00
John-David Dalton
56ce89e04f Tweak _.curry and _.curryRight docs. [ci skip] 2014-11-06 20:42:33 -08:00
John-David Dalton
062ec036f8 Cleanup _.rearg docs and simplify reorder. 2014-11-06 20:41:50 -08:00
John-David Dalton
8089242b2f Add Firefox 33 to sauce tests. 2014-11-05 23:51:16 -08:00
John-David Dalton
8efa1a0032 Experiment with _.defer in createHybridWrapper. 2014-11-05 01:59:41 -08:00
John-David Dalton
7ce8304ce6 Make _.defer and _.delay slice arguments in the timeout callback. 2014-11-05 01:59:17 -08:00
John-David Dalton
233adab647 Add _.rearg. 2014-11-05 01:09:05 -08:00
John-David Dalton
475c86d100 Tweak code comments. [ci skip] 2014-11-02 23:43:10 -08:00
John-David Dalton
f754654dae Rebuild dist. 2014-11-02 14:33:24 -08:00
John-David Dalton
53ce20c0df Comma nit in getView doc. [ci skip] 2014-11-02 14:33:09 -08:00
John-David Dalton
ad91e3a344 Make lazy chaining tests a bit more complex. 2014-11-02 14:19:38 -08:00
John-David Dalton
4f2b33f80f Cleanup docs for _.slice and _.range. [ci skip] 2014-11-02 11:30:32 -08:00
John-David Dalton
2b24d42f8d Add getView and cleanup Lazy chaining. 2014-11-02 11:30:06 -08:00
John-David Dalton
ab70f306cd Make iteration fix in _.keysIn less constructor specific. 2014-11-01 01:24:10 -07:00
John-David Dalton
4fb83fe0a5 Assorted doc cleanup. [ci skip] 2014-10-31 21:36:28 -07:00
John-David Dalton
9c6ef34270 Remove dropdown menu entries for unsupported builds. 2014-10-31 00:19:34 -07:00
John-David Dalton
481eb8e5dc Cleanup test/asset/worker.js. 2014-10-31 00:17:08 -07:00
John-David Dalton
7cf65b899b Add another [[DontEnum]] test. 2014-10-30 23:54:43 -07:00
John-David Dalton
dd70fcb9bc Cleanup _.dropRightWhile and _.takeRightWhile. 2014-10-30 23:53:39 -07:00
John-David Dalton
6dd8c05533 Cleanup _.keysIn. 2014-10-30 23:53:28 -07:00
John-David Dalton
0b900d94f7 Ensure root is set correctly when required by a greasemonkey userscript. [closes #759] 2014-10-30 22:01:00 -07:00
John-David Dalton
cf724c43cb Simplify lazy chaining. 2014-10-30 20:57:24 -07:00
John-David Dalton
cdf5ac4fc4 Ensure _.keysIn skips inheritedconstructor properties. 2014-10-29 22:41:51 -07:00
John-David Dalton
b768ce4ca4 Add test for inherited shadowed props. 2014-10-29 22:40:49 -07:00
John-David Dalton
0115503af9 Fix _.keysIn for inherited non-enumerable props. 2014-10-28 23:19:08 -07:00
John-David Dalton
08dd30c5bf Make lazy _.drop test more complex. 2014-10-26 21:38:53 -07:00
John-David Dalton
72270013c8 Cleanup assignment method tests. 2014-10-25 00:30:56 -07:00
John-David Dalton
a2a59cbeae Add find method tests. 2014-10-24 23:30:12 -07:00
John-David Dalton
20a38d2dbe Test order nits. 2014-10-24 23:29:43 -07:00
John-David Dalton
9aade0a2da Remove backbone build from .gitignore. 2014-10-24 22:32:51 -07:00
John-David Dalton
9af1d1af52 Remove underscore build test runs from travis.yml. 2014-10-24 22:06:10 -07:00
John-David Dalton
8bb69cd6da Rebuild dist. 2014-10-24 22:01:39 -07:00
John-David Dalton
84a84a1687 Remove underscore build config from Underscore tests. 2014-10-24 21:53:57 -07:00
John-David Dalton
462c43434b Add _.callback test. 2014-10-23 23:46:05 -07:00
John-David Dalton
b830691611 Add more _.assign, _.defaults, _.merge, and _.transform tests. 2014-10-23 23:21:26 -07:00
John-David Dalton
204f1747cf Ensure old Opera avoids a false positive for support of isHostObject. 2014-10-23 21:46:46 -07:00
John-David Dalton
13c9d80a3b Use the new operator to ensure constructors of other realms produce objects of those realms. 2014-10-23 20:43:49 -07:00
John-David Dalton
64f45b061b Avoid testing arguments object constructor which may be Array in some old browsers. 2014-10-23 20:42:32 -07:00
John-David Dalton
c1202fd127 Fix isArrayLike in older IE. 2014-10-23 17:04:13 -07:00
John-David Dalton
2060f3f59a Ensure _.at and _.pullAt work with falsey array and collection values when keys are provided. 2014-10-23 17:04:13 -07:00
John-David Dalton
1fb92df2e7 Fix test fails. 2014-10-23 17:04:06 -07:00
John-David Dalton
848301bf70 Add tests for clone methods and objects from other realms. 2014-10-22 22:58:25 -07:00
John-David Dalton
08b5b71fcb Cleanup test titles. 2014-10-22 22:29:04 -07:00
John-David Dalton
5414d4a9e4 Add tests for _.transform and objects from other realms. 2014-10-22 22:28:47 -07:00
John-David Dalton
b930bd7326 Add isLength helper. 2014-10-22 22:28:24 -07:00
John-David Dalton
d1d1be49ba Reduce lazy wrapper for lazy first and last. 2014-10-21 08:04:29 -07:00
John-David Dalton
6ad7963347 Fix _.merge doc typo. [ci skip] [closes #754] 2014-10-21 07:41:34 -07:00
John-David Dalton
2dcda2487a Cleanup test titles. 2014-10-20 22:18:10 -07:00
John-David Dalton
55911eac7a Add lazy tests for _.first and _.last. 2014-10-20 22:17:48 -07:00
John-David Dalton
176b109ae7 Rebuild dist. 2014-10-20 20:10:25 -07:00
Benjamin Tan
0f12d43a59 Simplify _.keys and _.keysIn. 2014-10-20 19:58:05 -07:00
John-David Dalton
6dfc2aca4b Add LazyWrapper#slice. 2014-10-20 11:33:03 -07:00
John-David Dalton
f5a34d5191 Add indexOf method test for empty arrays. 2014-10-20 11:33:02 -07:00
John-David Dalton
bc3a7f70e4 Test title cleanup. 2014-10-20 11:33:02 -07:00
John-David Dalton
dcabee8d5e Expand function test for _.matches. 2014-10-20 11:33:02 -07:00
John-David Dalton
d7e290dc68 Add more isIterateeCall guards. 2014-10-20 11:33:02 -07:00
John-David Dalton
2e2341c8b2 Add arrayMin and arrayMax helpers. 2014-10-19 03:25:26 -07:00
John-David Dalton
0ee717342b Minor format nit in travis.yml. 2014-10-19 03:25:26 -07:00
John-David Dalton
9f372b3146 Update tested version of Opera in readme. [ci skip] 2014-10-19 03:25:26 -07:00
John-David Dalton
dd92e36feb Ensure Node 0.8 runs modern build tests in travis. 2014-10-18 11:31:45 -07:00
John-David Dalton
c25738c62c Avoid logging npm warnings to travis. 2014-10-18 11:31:45 -07:00
John-David Dalton
c264e98e6e Fix travis run. 2014-10-18 11:31:45 -07:00
John-David Dalton
f2780bcbc2 Add isCloneable and clonePassthru. 2014-10-18 11:31:44 -07:00
John-David Dalton
050b703fc0 Update npm used in travis.yml. 2014-10-18 11:31:44 -07:00
John-David Dalton
eed09f64f7 Cleanup _.matches. 2014-10-18 11:31:44 -07:00
John-David Dalton
28c4ad1501 Cleanup _.zipObject. 2014-10-18 11:31:44 -07:00
John-David Dalton
28d1dad629 Cleanup _.template tests. 2014-10-18 11:31:44 -07:00
John-David Dalton
b5f0672888 Fix failing clone tests. 2014-10-18 11:31:44 -07:00
John-David Dalton
71fc4faae7 Update vendor/benchmark.js. 2014-10-18 11:31:44 -07:00
John-David Dalton
8bff1e8bc4 Ensure a customer function works on deep cloned objects. 2014-10-18 11:31:44 -07:00
John-David Dalton
af67dd6610 Tweak _.clone and _.cloneDeep docs. [ci skip] 2014-10-18 11:31:44 -07:00
John-David Dalton
c46c700f7c Change source order of arrayFilter and arrayMap. 2014-10-18 11:31:44 -07:00
John-David Dalton
2a2de2efdc Make _.clone and _.cloneDeep return an empty object for unsupported types. 2014-10-18 11:31:44 -07:00
John-David Dalton
f384c42de5 Updated tested Chrome version in Sauce Labs. 2014-10-18 11:31:44 -07:00
John-David Dalton
bf1c54e5a3 Add lazy _.filter and _.reject tests. 2014-10-18 11:31:43 -07:00
John-David Dalton
d8f2cc50df Add getUnwrappedValue test helper to fix npm modularized builds. 2014-10-18 11:31:43 -07:00
John-David Dalton
06c25ba998 Use https protocol for downloading travis resources from lodash.com. 2014-10-18 11:31:43 -07:00
John-David Dalton
58654a3f3a Use https for lodash.com references in readme. [ci skip] 2014-10-18 11:31:43 -07:00
John-David Dalton
32521cd1b6 Add comment to lazy flags. [ci skip] 2014-10-12 12:56:33 -07:00
John-David Dalton
e072fe6ea9 Move LodashWrapper.prototype and MemCache assignments out of the method assignments block. 2014-10-12 12:38:59 -07:00
John-David Dalton
b5897fdb62 Add more lazy_.drop, _.dropRight, _.take, _.takeRight tests. 2014-10-10 09:48:27 -07:00
John-David Dalton
55df525f1b Update tested Chrome version in readme. [ci skip] 2014-10-09 09:50:48 -07:00
John-David Dalton
e6dde68924 Excuse Underscore _.memoize test. 2014-10-09 09:50:27 -07:00
John-David Dalton
b3e2305dea Fix typo and add lazy tests. 2014-10-09 09:50:08 -07:00
John-David Dalton
ec3e3ed1fd Simplify lazyValue. 2014-10-09 00:16:56 -07:00
John-David Dalton
30fc97eef6 Fix shortcut fusion. 2014-10-08 23:44:45 -07:00
John-David Dalton
5939692616 Remove multi-line comment wrap from _.template sourceURLs. [closes #738] 2014-10-08 09:17:15 -07:00
Tiago Ribeiro
9ce3176b59 Rename stop to end in _.range docs. [ci skip] 2014-10-06 09:38:46 -07:00
John-David Dalton
497d35b03b Continued chaining cleanup. 2014-10-06 09:38:46 -07:00
John-David Dalton
6a1191de31 Add docs to MemCache and LazyWrapper methods and reduce LazyWrapper scaffolding. 2014-10-05 18:51:57 -07:00
John-David Dalton
6c3a17de71 Add lazy chaining benchmark. 2014-10-04 11:13:28 -07:00
John-David Dalton
22cf82e44b Add note to whitespace test and add back non-character BOM test. 2014-10-04 11:11:52 -07:00
John-David Dalton
10c7e49273 Qualify listed contributors in readme. [ci skip] [closes #732] 2014-10-03 14:28:55 -07:00
John-David Dalton
4900eae751 Correct result of methods that should not return a wrapped value. 2014-10-03 00:14:10 -07:00
John-David Dalton
5334c599f0 Cleanup lazyValue. 2014-10-03 00:13:19 -07:00
John-David Dalton
ad10a1eba5 Rename var chain to chainAll in _.mixin. 2014-10-02 09:47:11 -07:00
John-David Dalton
3ca626f2a9 Add lazy drop, dropRight, initial, last, rest, reverse, and takeRight. 2014-10-02 09:46:37 -07:00
John-David Dalton
e7ad40d8f4 Make _.initial use _.dropRight and _.rest use _.drop. 2014-10-02 09:45:11 -07:00
Benjamin Tan
d38ab1145a createCompounder: Remove unused words argument 2014-10-02 00:38:41 -07:00
Benjamin Tan
f31360e1a4 _.once: Use basePartial instead of partial 2014-10-02 00:36:29 -07:00
Benjamin Tan
059fead736 Minor doc updates. [ci skip] 2014-10-02 00:34:48 -07:00
John-David Dalton
4e8360c030 Remove BOM from _.trim test. 2014-10-02 00:21:09 -07:00
John-David Dalton
fbd80746a5 Refactor lazy evaluation. 2014-10-02 00:21:04 -07:00
John-David Dalton
072a5de1c5 Cleanup _.memoize.Cache. 2014-09-29 20:41:18 -07:00
John-David Dalton
5c3c5a5521 Cleanup _.memoize tests. 2014-09-28 15:14:45 -07:00
Filip Zawada
461b294bc7 Add support for lazy evaluation to chaining syntax. [closes #247, #678] 2014-09-28 08:51:59 -07:00
John-David Dalton
71de0f2d08 Make support references align with templateSetting references. 2014-09-26 09:43:33 -07:00
John-David Dalton
2ffdc4f2ef Minor style nit. [ci skip] 2014-09-25 09:42:47 -07:00
John-David Dalton
dc9b320c4a Ensure _.indexOf and _.lastIndexOf match NaN when performing a binary search. 2014-09-25 09:42:27 -07:00
John-David Dalton
a6a93148b4 Clarify documented default params of identity as _.identity. [ci skip] 2014-09-24 22:46:06 -07:00
jabclab
f7dc3b9ce4 Add _.memoize.Cache to allow using ES6 Map/WeakMap. 2014-09-24 13:40:00 -07:00
John-David Dalton
12ad5d53c9 Rebuild dist. 2014-09-24 11:14:32 -07:00
John-David Dalton
54dc1e2e15 Exit early from _.contains if length is 0 to avoid potentially mucking up getIndexOf by passing it an undefined collection. 2014-09-24 11:13:16 -07:00
John-David Dalton
073f715f17 Qualify isIterateeCall use. 2014-09-24 09:48:59 -07:00
John-David Dalton
7ff50893dc Doc cleanup. [ci skip] 2014-09-24 09:32:51 -07:00
John-David Dalton
d128082b23 Add indexOfNaN and remove checks from baseIndexOf. 2014-09-24 09:32:51 -07:00
John-David Dalton
1b8f89c3f1 Update sauce browser versions. 2014-09-24 09:32:51 -07:00
John-David Dalton
8eb138e0b3 Add more tests for methods used as an iteratee for _.map. 2014-09-24 09:32:51 -07:00
John-David Dalton
8256579310 Add _.words tests and tweak reWords regexp. 2014-09-24 09:32:51 -07:00
John-David Dalton
41f1fb8d95 Minor source tweak of _.template. 2014-09-22 10:53:33 -07:00
John-David Dalton
277d91afce Minor code format tweak for _.isBoolean, _.isElement, _.isNumber, and _.isString. 2014-09-22 09:44:54 -07:00
John-David Dalton
aaa840ebef Add isIterateeCall and make more methods support being used as a callback for methods like _.map. 2014-09-22 09:44:13 -07:00
John-David Dalton
29ffdadabb Ensure _.trunc and _.words work as a callback for methods like _.map 2014-09-22 09:43:03 -07:00
John-David Dalton
e5f19fe037 Minor whitespace nit. [ci skip] 2014-09-21 23:26:01 -07:00
John-David Dalton
5791d71e9f Add _.deburr and _.words tests. 2014-09-21 23:25:39 -07:00
John-David Dalton
104a7022fb Remove es6 scaffolding from html test files. 2014-09-21 23:24:28 -07:00
John-David Dalton
6210b613be Since we're using the caret no need for minor version in travis.yml. 2014-09-20 18:55:59 -07:00
John-David Dalton
2ba9380616 Avoid carrot use in travis.yml deps for pre 1.0 deps. [ci skip] 2014-09-20 16:47:14 -07:00
John-David Dalton
59042bc2e2 Update request dep in travis.yml. [ci skip] 2014-09-20 12:11:57 -07:00
John-David Dalton
ccfd8e51ea Rebuild dist. 2014-09-20 12:05:52 -07:00
John-David Dalton
1aafb6c2c1 Use type checks when checking for a prototype property. 2014-09-20 12:04:53 -07:00
John-David Dalton
7976aa4b28 Cleanup _.template doc examples. [ci skip] 2014-09-20 12:04:53 -07:00
John-David Dalton
1b4e175c0c Adjust the docs of _.forEach, _.after, _.before, _.debounce, & _.throttle. [closes #710] [ci skip] 2014-09-20 12:04:53 -07:00
John-David Dalton
3ef955c139 Fix failing npm test. 2014-09-18 19:55:49 -07:00
John-David Dalton
51990ed0e5 Fix failing IE9 test. 2014-09-18 19:55:49 -07:00
John-David Dalton
138523bab3 Add _.deburr, _.thru, and _.words to the features section of the readme. [closes #709] [ci skip] 2014-09-18 19:55:49 -07:00
John-David Dalton
995ec2b104 Add array chaining tests and fix _#unshift. 2014-09-18 09:43:42 -07:00
John-David Dalton
d13f8749d4 Minor cleanup of baseIsEqual. 2014-09-17 21:28:38 -07:00
John-David Dalton
0350443810 Reduce deps in baseIsEqual, shimIsPlainObject, omit, & pick. 2014-09-17 20:52:06 -07:00
John-David Dalton
c5841dccbb Remove toObject use from _.keysIn. 2014-09-17 12:50:22 -07:00
John-David Dalton
a0c50f9ef5 Remove type check in _.transform. 2014-09-17 12:34:46 -07:00
John-David Dalton
120020b4db Avoid toObject in the shimKeys path of _.keys. 2014-09-17 12:34:19 -07:00
John-David Dalton
676747467a Make the support checks in shimKeys consistent with keysIn. 2014-09-17 12:33:34 -07:00
John-David Dalton
e2d13541dc Update tested node version in readme. [ci skip] 2014-09-17 00:52:54 -07:00
John-David Dalton
057cbc76b3 Add toObject to baseFor and baseForRight. 2014-09-17 00:47:18 -07:00
John-David Dalton
48035187d2 Comment test. [ci skip] 2014-09-17 00:47:18 -07:00
John-David Dalton
f05f60f929 Ensure _.sample chains correctly. 2014-09-16 09:17:08 -07:00
John-David Dalton
3ab19e81ac Cleanup _.transform and make baseEach and baseEachRight use toObject. 2014-09-16 01:51:46 -07:00
John-David Dalton
532be6cd87 Minor _.transform test title nits. [ci skip] 2014-09-16 01:51:45 -07:00
John-David Dalton
21a492fa43 Simplify _.mixin. 2014-09-15 01:29:18 -07:00
John-David Dalton
edf83823f1 Fix baseSortedIndex on large arrays by avoiding >>> use. 2014-09-15 01:29:12 -07:00
John-David Dalton
8d6f7de046 Increase _.sample and _.sortedIndex coverage. 2014-09-15 01:15:03 -07:00
John-David Dalton
a7de4f3663 Fix _.sample test. 2014-09-15 01:15:02 -07:00
John-David Dalton
e538f16315 Use var wrapped for wrapped values instead of actual. 2014-09-15 01:15:02 -07:00
John-David Dalton
3f8b3e2baa Fix failing npm tests. 2014-09-14 18:57:59 -07:00
John-David Dalton
a90ecde389 Wrapper doc tweaks. [ci skip] 2014-09-14 18:57:59 -07:00
John-David Dalton
1ad65bb66b Add trailing slash to _.escapeRegExp doc example. [ci skip] 2014-09-14 16:21:48 -07:00
John-David Dalton
d85bb3bce1 Remove unused descriptor var. 2014-09-13 15:20:42 -07:00
John-David Dalton
8cd4732321 Reduce code related to array method chaining. 2014-09-13 01:36:07 -07:00
John-David Dalton
6957b02c27 Remove handling of function queue values from wrapperValueOf. 2014-09-12 12:07:33 -07:00
John-David Dalton
adcadf08d1 Add iteration order note to _.pluck doc and adjust similar notes. [closes #703] [ci skip] 2014-09-12 09:43:32 -07:00
John-David Dalton
3b36145257 More cleanup of chaining code. 2014-09-12 09:16:23 -07:00
John-David Dalton
c3e5eaf8da Cleanup join, pop, shift chaining setup code. 2014-09-12 00:24:53 -07:00
John-David Dalton
fd176107ae Simplify mixin use. 2014-09-12 00:03:07 -07:00
John-David Dalton
ad203e1461 Fix deferred chaining test fails. 2014-09-11 23:36:12 -07:00
John-David Dalton
1fe9ba5879 Make string methods work with latin-1 characters by default. 2014-09-10 23:47:49 -07:00
John-David Dalton
678321bb2f Make _.unescape doc example align with _.escape. [ci skip] 2014-09-09 23:33:05 -07:00
John-David Dalton
967ce824f7 Add _.thru doc example and add pattern param to _.words. [ci skip] 2014-09-09 23:32:14 -07:00
John-David Dalton
336e5e0ff7 Excuse additional underscore test. 2014-09-09 00:17:30 -07:00
John-David Dalton
7a94f472c7 Add _.deburr, _.thru, & _.words. 2014-09-09 00:17:01 -07:00
John-David Dalton
70b41a2a6e Adjust how words are deburred. 2014-09-08 00:54:19 -07:00
John-David Dalton
216e7f3b10 Tweak docs for array params. [ci skip] 2014-09-08 00:09:18 -07:00
John-David Dalton
0717da6e37 Make chaining actions deferred until value is called. 2014-09-08 00:09:14 -07:00
John-David Dalton
3f64316e00 Make _.camelCase process words as lower cased. 2014-09-07 01:20:18 -07:00
John-David Dalton
172eaf84b5 Ensure string case methods work with words in all caps. 2014-09-06 10:14:03 -07:00
John-David Dalton
0c20889a17 Minor comment nit. [ci skip] 2014-09-06 00:30:25 -07:00
John-David Dalton
62523d537b Change default sauce param values. 2014-09-06 00:23:45 -07:00
John-David Dalton
6643252019 Fix qunit-extras sauce reporter. 2014-09-06 00:23:24 -07:00
John-David Dalton
13022a6bb0 Realign baseSortedIndex with _.sortBy. 2014-09-05 09:25:48 -07:00
John-David Dalton
fc018691e5 Change name to user in docs and tests to avoid this.name. 2014-09-05 09:01:51 -07:00
John-David Dalton
56666c4bf4 Use a string of keywords in package.json. 2014-09-04 23:57:36 -07:00
John-David Dalton
379da81f85 Add support for Sauce reports to qunit-extras. 2014-09-04 23:57:07 -07:00
John-David Dalton
9ce6d4b72a Add test for _.sortBy sorting undefined and NaN values. 2014-09-03 23:43:32 -07:00
John-David Dalton
be46c31c74 Update tested version of Firefox in readme. [ci skip] 2014-09-03 23:21:11 -07:00
John-David Dalton
cd4029dc61 Make _.sortBy moveundefined and NaN to the end of the array. 2014-09-03 09:32:09 -07:00
John-David Dalton
d2aa55a3bd Rebuild dist. 2014-09-02 09:25:42 -07:00
John-David Dalton
838be0846d Update tested Opera version in readme. [ci skip] 2014-09-02 09:25:36 -07:00
John-David Dalton
9414cb97b5 Add _.isNative doc example. 2014-09-02 09:21:43 -07:00
John-David Dalton
d6883a077a Add Lang category. 2014-09-02 09:21:43 -07:00
John-David Dalton
aa60b8399b Fix tests for the npm build. 2014-09-02 09:21:43 -07:00
John-David Dalton
cbe504df77 Fix test in IE. 2014-09-02 09:21:43 -07:00
John-David Dalton
e0efcc1f25 Fix test fails when using a non-requirejs loader. 2014-09-02 09:21:43 -07:00
John-David Dalton
c6e536a768 Use metaMap inference instead of WeakMap. 2014-09-01 23:44:37 -07:00
John-David Dalton
77ba53bda7 Remove defineProperty forks of baseSetData and getData. 2014-09-01 20:39:39 -07:00
John-David Dalton
c2c6f1493a Add tests for pop, shift, and slice. 2014-09-01 20:39:39 -07:00
John-David Dalton
debaed6e5e Allow _.before and _.after to accept func as the first argument 2014-09-01 17:13:07 -07:00
John-David Dalton
0d6279617b Add _.isEqual tests for arrays and objects from different documents. 2014-09-01 17:13:07 -07:00
John-David Dalton
3435314400 Remove unneeded "bugs" entry in package.json. [ci skip] 2014-09-01 13:26:09 -07:00
John-David Dalton
f248a8383b Add tests to ensure length is computed before iteration. 2014-09-01 13:25:51 -07:00
John-David Dalton
5458b007d1 Cleanup default assignment of placeholders. 2014-08-28 00:09:16 -07:00
John-David Dalton
6735291c99 Try to avoid an inconsistent false fail on ipad simulator. 2014-08-27 08:58:49 -07:00
John-David Dalton
6ad7a20c07 Update Underscore build compat to 1.7.0. 2014-08-27 07:30:39 -07:00
John-David Dalton
3191825ecc Cleanup features list and update tested Chrome version in readme. [ci skip] 2014-08-27 00:53:55 -07:00
John-David Dalton
baee6b9738 Update deps. 2014-08-26 23:55:39 -07:00
John-David Dalton
c4a7f899db Fix tests for rhino -require. 2014-08-26 21:36:04 -07:00
John-David Dalton
c01623ba56 Avoid false fail in environments that add an enumerable constructor property to Date objects. 2014-08-26 09:33:46 -07:00
John-David Dalton
81d0d5c59f Adjust mocking to ensure coverage in modularized builds. 2014-08-26 09:33:03 -07:00
John-David Dalton
cc4fdfd852 Ensure arity is not less than 0. 2014-08-25 23:14:28 -07:00
John-David Dalton
ba7be29153 Remove defineProperty mock. 2014-08-25 23:03:10 -07:00
John-David Dalton
4eae95b88d Ensure node version is consistent with its shorthand alias travis.yml. 2014-08-25 20:32:57 -07:00
John-David Dalton
06d8281f16 Add more bizarro support changes. 2014-08-25 10:25:01 -07:00
John-David Dalton
87c21ba75e Add coverage for WeakMap usage. 2014-08-25 09:32:26 -07:00
John-David Dalton
7f88a7c9bb Add more hot method tests. 2014-08-25 09:02:02 -07:00
John-David Dalton
38c57a662c Rebuild dist. 2014-08-24 21:34:59 -07:00
John-David Dalton
36f5ddc543 Add test for hot methods. 2014-08-24 21:33:44 -07:00
John-David Dalton
8b873b6b1b Make breaker trip when greater than or equal to HOT_COUNT. 2014-08-24 21:33:44 -07:00
John-David Dalton
68bd881ca8 Cleanup test names. [ci skip] 2014-08-24 18:02:19 -07:00
John-David Dalton
c3e717a3ef Rename _.consume to _.flow. 2014-08-24 18:02:06 -07:00
John-David Dalton
d9be6f8a9a Add _.consume and _.isNative to the features section of readme. [ci skip] 2014-08-24 13:54:09 -07:00
John-David Dalton
3bfb9d65f4 Prevent fails in older browsers due to timer drift. 2014-08-24 12:39:35 -07:00
John-David Dalton
9ad26f943f Minor doc nit and update lodash chaining doc to include _.consume and _.consumeRight. [ci skip] 2014-08-24 12:31:22 -07:00
John-David Dalton
c5112cb24e Add _.consume and _.consumeRight and make _.compose an alias of _.consumeRight. [closes #667] 2014-08-24 12:17:50 -07:00
John-David Dalton
c17e1f9e75 Doc tweak standardizing on "invoke" and "call". [ci skip] 2014-08-24 12:08:46 -07:00
John-David Dalton
b48b454909 Track down inconsistent sauce fail. 2014-08-24 00:02:01 -07:00
John-David Dalton
6b59a924e8 Avoid false fails on Sauce mocked alert/prompt functions. 2014-08-23 13:36:29 -07:00
John-David Dalton
87879a6784 Make _.isArguments length check consistent with its fallback. 2014-08-23 12:13:10 -07:00
John-David Dalton
fca5fda9da Avoid circular dep with isHostObject. 2014-08-23 12:12:24 -07:00
John-David Dalton
691d566482 Add test for string as object when passed as the third param to _.forEach callbacks. 2014-08-22 22:27:13 -07:00
John-David Dalton
61578f4dca Add missing semicolon. [ci skip] 2014-08-21 20:24:09 -07:00
John-David Dalton
9f4a7fc0da Ensure wrapped arrays are compared correctly in _.isEqual. [closes #676] 2014-08-21 09:29:27 -07:00
Benjamin Tan
200a5d84c7 Update docs. [closes #674] [ci skip] 2014-08-20 23:52:18 -07:00
John-David Dalton
309a2ad0a3 Rebuild dist. 2014-08-20 23:11:04 -07:00
John-David Dalton
e696331e2a Tweak property order note in method docs. [ci skip] 2014-08-20 23:08:04 -07:00
John-David Dalton
c3126e24ce Add _.support.hostObject and rename isNode to isHostObject. 2014-08-20 23:08:04 -07:00
John-David Dalton
bde931f2f5 Avoid testing constructors which may be shimmed. 2014-08-20 23:08:03 -07:00
John-David Dalton
58b3e9f201 Avoid test issues with error objects across environments. 2014-08-20 23:08:03 -07:00
John-David Dalton
1423dcb619 _.sortBy should not error on nullish elements when sorting by multiple properties. 2014-08-20 23:08:03 -07:00
John-David Dalton
df3540b0f9 Expose _.isNative. 2014-08-19 23:57:54 -07:00
John-David Dalton
921209580a Add DOM node check to _.isFunction test. 2014-08-19 23:57:54 -07:00
John-David Dalton
d4e058a844 Add _.negate unit test. 2014-08-19 23:57:53 -07:00
John-David Dalton
8f9eed154e Cleanup setData. 2014-08-18 09:31:30 -07:00
John-David Dalton
1416655d53 Minor whitespace nit. 2014-08-18 09:31:30 -07:00
John-David Dalton
9a147218ce Add console.log shim to avoid errors while deving. 2014-08-18 09:31:30 -07:00
John-David Dalton
34b575da03 Minor var nit in createPartialWrapper. 2014-08-18 09:31:30 -07:00
John-David Dalton
54d22a23b5 Avoid metadata cache for perf tests of slow paths of _.bind and _.partial. 2014-08-18 09:31:30 -07:00
John-David Dalton
ee10e17ce7 Fix perf regression of _.zip. 2014-08-18 09:31:30 -07:00
John-David Dalton
8ff97468cc Minor style nits. 2014-08-18 09:31:30 -07:00
John-David Dalton
6f898c6c97 Fix perf regression in _.omit & _.reject. 2014-08-18 09:31:30 -07:00
John-David Dalton
cfeb8d053f Attempt to throttle seData. 2014-08-18 09:31:29 -07:00
John-David Dalton
d317171a45 Remove sauce testing of older Firefox. 2014-08-18 09:31:29 -07:00
John-David Dalton
9b0aadccf8 Fix accidental leaked var. 2014-08-14 23:55:24 -07:00
John-David Dalton
d6850ab358 Use WeakMaps if available to store function metadata. 2014-08-14 23:55:23 -07:00
John-David Dalton
c139a0d9ed Avoid internally passing around metadata arrays. 2014-08-14 23:55:23 -07:00
John-David Dalton
67b0c4cddd Use _.createCallback if _.matches is unavailable for the perf test. 2014-08-14 23:55:23 -07:00
John-David Dalton
ce36bf6134 Update tested Firefox versions. 2014-08-14 23:55:23 -07:00
Benjamin Tan
e2dd65a403 Add more emphasis on the Note sections 2014-08-12 09:26:25 -07:00
John-David Dalton
a2595d5107 Remove native String#contains use in _.contains. 2014-08-12 09:26:25 -07:00
John-David Dalton
6dc0cf0c44 Typo nit in _.uniq tests. 2014-08-11 09:25:35 -07:00
John-David Dalton
faac630001 Update tested version of Node in readme. [ci skip] 2014-08-11 09:25:35 -07:00
John-David Dalton
0deacc7229 Add tests for large arrays and NaN values. 2014-08-11 09:25:35 -07:00
John-David Dalton
c849fe1496 Cleanup _.pull. 2014-08-09 09:43:31 -07:00
John-David Dalton
4238e84ec4 Add tests for matching NaN. 2014-08-09 09:43:31 -07:00
John-David Dalton
df4e306c64 Add length check to avoid extra work in initArrayClone. 2014-08-08 10:43:39 -07:00
John-David Dalton
916c728d70 Remove unneeded flag from baseClone call in _.matches. 2014-08-08 10:28:18 -07:00
John-David Dalton
476d85915b Revert rename of baseSlice and add initArrayClone and initObjectClone. 2014-08-08 10:27:11 -07:00
John-David Dalton
e54b8ead72 Rename cloneBuffer to bufferClone, split basePick into pickByArray and pickByCallback, and add arrayClone. 2014-08-07 00:23:32 -07:00
John-David Dalton
d2444d2992 Remove !source check from _.mixin. 2014-08-04 00:05:19 -07:00
John-David Dalton
48acda2c3c Add _.iteratee alias of _.callback. 2014-08-03 22:40:31 -07:00
John-David Dalton
264f7b1d30 Fix tests in old IE. 2014-08-03 14:03:36 -07:00
John-David Dalton
fc44d54607 Fix test fail. 2014-08-02 23:25:20 -07:00
John-David Dalton
afc3698578 Minor whitespace nits in test.js. [ci skip] 2014-08-02 22:08:37 -07:00
John-David Dalton
c3cd94b695 Fix coercing arity in baseCurry. 2014-08-02 22:08:17 -07:00
John-David Dalton
ea219f683e Rename noIterator to noIteratee. [ci skip] 2014-08-02 13:05:55 -07:00
John-David Dalton
faf6584652 Ensure _.mixin does not extend lodash when an object is provided with an empty options object. [closes #650] 2014-08-01 16:36:44 -07:00
John-David Dalton
4dc41749fb Cleanup NaN handling in baseIndexOf and _.lastINdexOf. 2014-08-01 11:27:37 -07:00
John-David Dalton
2aa94301a8 Rename iterator to iteratee. 2014-08-01 11:13:58 -07:00
John-David Dalton
d2870b6df7 Change strict equality matches to SameValueZero matches. 2014-07-31 17:25:58 -07:00
John-David Dalton
5cbc44610c Simplify support property detection. 2014-07-30 09:21:25 -07:00
John-David Dalton
9032cc0ecc Updated tested Chrome versions in Sauce. 2014-07-29 22:21:22 -07:00
John-David Dalton
e48b314ad0 Avoid type coercion of size in _.chunk unless needed. 2014-07-29 09:37:25 -07:00
John-David Dalton
6fdaf905c4 Update "features" section of readme. [ci skip] 2014-07-29 09:36:39 -07:00
John-David Dalton
79b706fb5c Add parentheses to clarify things. 2014-07-29 08:48:04 -07:00
John-David Dalton
eaee188244 Use resIndex where applied easily. 2014-07-29 08:47:23 -07:00
John-David Dalton
a6ac62d628 Update tested versions of Opera and PhantomJS. [ci skip] 2014-07-28 23:23:43 -07:00
John-David Dalton
7a7f12504b Consistent empty bracket style. 2014-07-28 09:33:24 -07:00
John-David Dalton
55c83d17e1 Fix sortedIndex method tests for phantomjs. 2014-07-28 01:26:01 -07:00
John-David Dalton
8009c1b7eb Rebuild dist. 2014-07-28 00:57:56 -07:00
John-David Dalton
1580453f4b Ensure _.sortedIndex and _.sortedLastIndex align with _.sortBy. 2014-07-27 19:40:10 -07:00
John-David Dalton
9cc8f5dd07 Add bizarro tests for _.parseInt. 2014-07-27 17:42:56 -07:00
John-David Dalton
7e326b8431 Simplify support.nonEnumArgs and increase code coverage. 2014-07-27 17:42:56 -07:00
John-David Dalton
8bddb47fab Add test for _.slice where start >= end. 2014-07-27 17:42:56 -07:00
John-David Dalton
b1b462d22b Add/cleanup tests for using methods as a callback for _.map and _.reduce. 2014-07-27 17:42:56 -07:00
John-David Dalton
d5847faaba Add toObject and optimize use of toIterable in _.sample. 2014-07-27 17:42:55 -07:00
John-David Dalton
4c9f3aee74 Make baseSortedIndex handle NaN correctly when comparing numbers. 2014-07-27 17:42:55 -07:00
John-David Dalton
ff4e0cb1c2 Use prefix increment operator where easily done. 2014-07-27 17:42:55 -07:00
John-David Dalton
c159da1fbc Ensure _.toIterable converts primitives to objects for easier detection of callback signatures. 2014-07-25 07:46:08 -07:00
John-David Dalton
d5e55f9dbd Copy ./dist/lodash.$BUILD.js to ./dist/lodash.js for coverage run. 2014-07-24 22:17:21 -07:00
John-David Dalton
642ed4061a Ensure EXPANDO doesn't disable fast properties in v8. 2014-07-24 22:17:21 -07:00
John-David Dalton
5178c3e67f Comma and whitespace nits. [ci skip] 2014-07-24 22:17:21 -07:00
John-David Dalton
e402347d73 Fix placeholder support without metadata. 2014-07-24 22:17:21 -07:00
John-David Dalton
3004c58798 Add guard param doc to _.parseInt. [ci skip] 2014-07-24 22:17:21 -07:00
John-David Dalton
15a44fe650 Make _.random and _.range work as callbacks to _.map. 2014-07-24 22:17:21 -07:00
John-David Dalton
e37a96a94a Make _.parseInt work as a callback to _.map. 2014-07-24 22:17:21 -07:00
John-David Dalton
e475a3b64c Remove unneeded branch of _.slice. 2014-07-24 22:17:21 -07:00
John-David Dalton
663ebd25ea Add more placeholder tests. 2014-07-23 19:52:32 -07:00
John-David Dalton
e6bec0de72 Simplify _.slice. 2014-07-23 19:52:26 -07:00
John-David Dalton
f513effd47 Make Float64Array mock more accurately handle its arg signature. 2014-07-22 22:53:38 -07:00
John-David Dalton
dd05e898cc Fix errors in Android 4.3 tests. 2014-07-22 22:52:44 -07:00
John-David Dalton
49a88e75e6 Fix test fails in Safari 5. 2014-07-22 09:42:34 -07:00
John-David Dalton
14a99471f4 Use a better Float64Array mock. 2014-07-22 09:16:09 -07:00
John-David Dalton
bdbc181e38 Ensure testing array buffers hits all parts of cloneBuffer. 2014-07-22 07:15:38 -07:00
John-David Dalton
133b1151bd Add Float64Array even in the non-bizarro test case. 2014-07-22 00:52:16 -07:00
John-David Dalton
653aab2358 Fix typo in the ArrayBuffer#slice mock for node. 2014-07-22 00:18:40 -07:00
John-David Dalton
13669313d4 Fix ArrayBuffer#slice test mock. 2014-07-21 22:13:27 -07:00
John-David Dalton
e84d79ccf3 Increase typed array coverage for node test runs. 2014-07-21 20:35:39 -07:00
John-David Dalton
34077f9624 Fix html test runner errors. 2014-07-21 20:34:58 -07:00
John-David Dalton
28ba64a4db Another attempt at fixing _.isElement bizarro tests. 2014-07-21 11:54:16 -07:00
John-David Dalton
0eefd3e140 Fix typed array tests in Safari. 2014-07-21 11:53:46 -07:00
John-David Dalton
20bbfc5917 Use the dist/lodash.js build for coveralls so it can map correctly to it. 2014-07-21 09:36:15 -07:00
John-David Dalton
9d6832224e Rebuild dist. 2014-07-21 09:27:30 -07:00
John-David Dalton
2cf17b19dc Cleanup appendHolders. 2014-07-21 08:50:35 -07:00
John-David Dalton
390cf2114a Fix bizarro _.isElement test. 2014-07-21 08:33:49 -07:00
John-David Dalton
8bff019b5d Allow placeholders to be customizable. 2014-07-21 00:36:19 -07:00
John-David Dalton
7d221f3be9 Add doc reference to David Corbacho's post for _.debounce and _.throttle. [ci skip] 2014-07-20 13:26:31 -07:00
John-David Dalton
b8628b9772 Add _.flattenDeep and allow _.template to be called with its legacy options param signature. 2014-07-20 12:38:32 -07:00
John-David Dalton
cda4d9e1b2 Correct isWhitespace docs. [ci skip] 2014-07-20 10:39:53 -07:00
John-David Dalton
f5d7a4d41e Remove unneeded checks in arrayXyz functions. 2014-07-20 10:38:54 -07:00
John-David Dalton
94486302f5 Correct ArrayBuffer bizarro shims. 2014-07-20 10:38:08 -07:00
John-David Dalton
4f4a7409f6 Cleanup isWhitespace use. 2014-07-19 21:42:38 -07:00
John-David Dalton
60f57f9e4b Cleanup prototype references of built-ins and the _.isElement bizarro tests. 2014-07-18 23:59:32 -07:00
Breck Yunits
2f98cd9eb0 Fixed comment typo and refactored duplicate code. 2014-07-18 23:59:18 -07:00
John-David Dalton
f77586f13d Add second part of the bizarro ArrayBuffer#slice tests. 2014-07-18 08:57:21 -07:00
Benjamin Tan
fa82091989 Update test descriptions 2014-07-18 08:49:22 -07:00
John-David Dalton
66e9c68da4 Add bizarro tests for shimmed ArrayBuffer#slice. 2014-07-18 08:49:14 -07:00
John-David Dalton
c97c2fee37 Ensure shallow clones of typed arrays don't clone the buffer. 2014-07-17 06:57:05 -07:00
John-David Dalton
fd03500786 Update tested version of Chrome in readme. [ci skip] 2014-07-17 06:39:39 -07:00
John-David Dalton
83d5c31a0c Update deps in travis.yml. 2014-07-17 06:34:28 -07:00
John-David Dalton
7f19c10da9 Use the correct _.isRegExp for the underscore build. 2014-07-16 11:30:34 -07:00
John-David Dalton
c10ea527a0 Minor doc nit. [ci skip] 2014-07-16 08:57:36 -07:00
John-David Dalton
5a54c1520a Remove nativeIsNaN use from the underscore build of _.isFinite. [closes #633] 2014-07-16 08:49:07 -07:00
Benjamin Tan
3f2732be7b Fix documentation for toIterable
[ci skip]
2014-07-16 20:55:37 +08:00
John-David Dalton
d504b1f90f Add tests for overwriting native Number.isFinite. 2014-07-16 00:19:21 -07:00
John-David Dalton
210dac058d Rebuild dist. 2014-07-15 23:54:00 -07:00
John-David Dalton
ccb3012e5a Remove unused native isNaN reference. 2014-07-15 23:51:18 -07:00
John-David Dalton
c94f2e6f07 Doc tweaks. [ci skip] 2014-07-15 23:51:18 -07:00
John-David Dalton
e31d7178b4 Add tests for "_.pluck" style callbacks to _.max, _.min, and _.uniq. 2014-07-15 23:51:18 -07:00
jrajav
b3a4b8085c Add example to docs for nested template delimiters. [closes #628] [ci skip] 2014-07-15 23:51:18 -07:00
John-David Dalton
b56d7ab9c3 Cleanup test titles for "_.pluck" and "_.where" style callbacks. 2014-07-15 23:51:18 -07:00
John-David Dalton
c63e270921 Remove old docs until new can be generated. [ci skip] 2014-07-15 23:51:17 -07:00
John-David Dalton
cffbae3a13 Minor test cleanup. 2014-07-15 23:51:17 -07:00
John-David Dalton
d2d03228ee Consistent use of wrapped values in test titles. 2014-07-15 23:51:17 -07:00
John-David Dalton
30458fa536 Expand test coverage. 2014-07-15 23:51:17 -07:00
John-David Dalton
0e60831f46 Remove sliceBuffer, add typed array tests, and ensure typed array clones have the correct byteOffset and length. 2014-07-14 08:59:28 -07:00
John-David Dalton
69238bf8e8 Cleanup _.max and _.min. 2014-07-14 07:57:46 -07:00
Benjamin Tan
db483df9a6 Fix issue with cloning typed arrays
Closes #624
2014-07-14 07:52:11 -07:00
Benjamin Tan
1dc95f5d3a Improve tests for ArrayBuffers 2014-07-14 07:52:11 -07:00
John-David Dalton
37caef10b1 Optimize non-array iteration of _.max and _.min when no iterator is provided. 2014-07-14 01:02:11 -07:00
John-David Dalton
381ecd8f70 Fix skipTest count for a _.uniq test. 2014-07-14 00:14:17 -07:00
John-David Dalton
f2a829362b Use == instead of === when comparing functions. 2014-07-13 22:24:33 -07:00
John-David Dalton
fe2e994f2d Cleanup previous commit. 2014-07-13 16:09:49 -07:00
megawac
95ba6bf040 Separate _.uniq isSorted logic to a helper 2014-07-13 16:09:48 -07:00
John-David Dalton
6f937e8958 Simplify coveralls command in travis.yml. 2014-07-13 12:17:46 -07:00
John-David Dalton
12f04650de Ignore isSorted if _.indexOf is customized. 2014-07-13 09:57:58 -07:00
John-David Dalton
f7330cce14 Ensure _.escape, _.escapeRegExp, & _.unescape can replacing multiple characters. 2014-07-12 07:08:49 -07:00
John-David Dalton
ba56f95da8 Use TRAVIS_SECURE_ENV_VARS instead of TRAVIS_PULL_REQUEST. 2014-07-11 09:18:35 -07:00
John-David Dalton
46704724e3 Add comments to _.escape and _.repeat. [ci skip] 2014-07-11 08:57:58 -07:00
John-David Dalton
caadd5bb32 Optimize _.escape, _.escapeRegExp, and _.unescape. 2014-07-11 08:42:52 -07:00
John-David Dalton
faa221f162 Make _.isArguments fallback align with other array-like checks. 2014-07-10 23:54:04 -07:00
John-David Dalton
a814d5438a Tweak _.isXyz method docs. [ci skip] 2014-07-10 23:53:24 -07:00
John-David Dalton
ab43c4cf2a Merge branch 'master' of github.com:lodash/lodash 2014-07-10 21:23:27 -07:00
John-David Dalton
d781e2dfb8 Merge pull request #613 from d10/docs
Fix typos [ci skip]
2014-07-10 20:41:21 -07:00
Benjamin Tan
968ef1560f Fix typos [ci skip] 2014-07-11 11:29:48 +08:00
John-David Dalton
1631ceedb3 Add fast path for objects with a single primitive value back to _.matches and add isStrictComparable helper to reduce _.matches and _.isEqual. 2014-07-10 09:26:20 -07:00
John-David Dalton
884c2af17d Add _.matches benchmark. 2014-07-10 09:05:43 -07:00
John-David Dalton
51ab030541 Remove argCount from _.callback and add getCallback helper. 2014-07-09 13:02:28 -07:00
John-David Dalton
2a1e063641 Cleanup tests and add a _.callback test for argCount. 2014-07-09 08:24:30 -07:00
John-David Dalton
62b3120ffd Merge branch 'master' of github.com:lodash/lodash 2014-07-09 08:07:42 -07:00
John-David Dalton
ea17b3d7c9 Use provide instead of pass to avoid confusing test wording. 2014-07-09 08:06:29 -07:00
John-David Dalton
f3e98fc71c Merge pull request #611 from megawac/patch-1
Test coverage: explicitly setting curry arity.
2014-07-09 08:01:15 -07:00
John-David Dalton
5034e11f22 Merge branch 'master' of github.com:lodash/lodash 2014-07-09 07:56:06 -07:00
John-David Dalton
560473d70b Clarify _.runInContext docs and usage example. [ci skip] 2014-07-09 07:54:51 -07:00
Graeme Yeates
10e53509bd Test coverage: explicitly setting curry arity 2014-07-09 10:46:08 -04:00
John-David Dalton
27afb02482 Merge pull request #610 from megawac/patch-1
Variadic curry test coverage.
2014-07-09 07:38:09 -07:00
Graeme Yeates
07fd0989ea Variadic curry test coverage 2014-07-09 10:28:31 -04:00
John-David Dalton
d7c38aea50 Rebuild dist. 2014-07-09 00:52:09 -07:00
John-David Dalton
20d57e27c9 Minor doc nit. [ci skip] 2014-07-09 00:51:17 -07:00
John-David Dalton
4606c8092f Ensure _.match deep comparison isn't affected by changes to source objects. 2014-07-09 00:51:16 -07:00
John-David Dalton
30f256aad2 Reuse length var in _.compose. 2014-07-09 00:51:16 -07:00
John-David Dalton
1b9dbd0e62 Tweak docs and var names of at, baseAt, and zipObject. 2014-07-09 00:51:16 -07:00
John-David Dalton
225c8871f9 Avoid changes to object affecting the result of a match function. 2014-07-08 09:45:31 -07:00
John-David Dalton
d0333134d5 Add more _.uniq and _.matches tests. 2014-07-08 09:11:14 -07:00
John-David Dalton
b24b8315d3 Fix _.shuffle on small collections. [closes #609] 2014-07-08 08:28:50 -07:00
John-David Dalton
4ddc3b518b Optimize _.shuffle. 2014-07-08 00:40:00 -07:00
John-David Dalton
479a7e441d Use _.isError in _.attempt docs and _.template. 2014-07-07 20:09:30 -07:00
John-David Dalton
af5ae8d656 Move some _.where tests to _.matches. 2014-07-07 12:15:44 -07:00
John-David Dalton
1365882de4 Simplify test condition. 2014-07-07 07:53:33 -07:00
John-David Dalton
7854cd1f94 Avoid fails for workers when testing in Sauce Labs. 2014-07-07 07:53:06 -07:00
John-David Dalton
12a1a14527 Fix tests in old IE. 2014-07-07 07:48:40 -07:00
John-David Dalton
a71cc552c9 Avoid test path for non node/phantom. 2014-07-07 01:51:48 -07:00
John-David Dalton
e42d091502 Change case of constants in test/test.js. 2014-07-07 01:40:55 -07:00
John-David Dalton
d89d5befa0 Add lodashBizarro tests for cloning typed arrays. 2014-07-06 17:05:37 -07:00
John-David Dalton
92e5ae29c9 Add FLOAT64_BYTES_PER_ELEMENT for easier test mocking. 2014-07-06 08:24:58 -05:00
John-David Dalton
65aeb97e3e Increate code coverage for AMD build of the root module. 2014-07-06 08:08:08 -05:00
John-David Dalton
08a9ef1072 Fix test fail in older Firefoxes. 2014-07-05 13:44:07 -05:00
John-David Dalton
9c3f297e97 Rebuild dist. 2014-07-05 11:51:51 -05:00
John-David Dalton
2554871c64 Move _.template comment on .source. [ci skip] 2014-07-05 11:51:05 -05:00
John-David Dalton
404edebdff Cleanup unwrapped chaining tests and add a chaining test for _.attempt. 2014-07-05 07:39:31 -05:00
John-David Dalton
2f2030babf Add _.attempt. 2014-07-05 07:23:54 -05:00
John-David Dalton
b560b35175 Remove test which will now lock up _.times. 2014-07-04 23:12:50 -05:00
John-David Dalton
3063b19e1d Replace "shortcut" with "reference" in code comments. [ci skip] 2014-07-04 15:38:34 -05:00
John-David Dalton
a17fb54c37 Avoid >>> use. 2014-07-04 15:36:32 -05:00
John-David Dalton
c1b8a8594d Bump tested browser versions in test/saucelabs.js. 2014-07-03 12:33:02 -07:00
John-David Dalton
0a7fc6c48c Cleanup error object fork in baseIsEqual. 2014-07-03 12:26:47 -07:00
John-David Dalton
79d59ff9ca Add more docs for metadata. 2014-07-03 09:50:46 -07:00
John-David Dalton
c7d3c78e72 Make _.unzip its own method. 2014-07-03 09:46:39 -07:00
John-David Dalton
d56322a032 Consistent use of undefined with .apply instead of null. 2014-07-02 22:26:09 -07:00
John-David Dalton
aac3c4d5c7 Minor style nits. 2014-07-02 18:20:36 -07:00
John-David Dalton
9ba1ddc2dd Cleanup _.isEqual and make _.where of an empty array match all arrays similar to empty objects matching all objects. 2014-07-02 10:36:42 -07:00
John-David Dalton
61eeaa0496 Minor cleanup. 2014-07-02 09:12:05 -07:00
John-David Dalton
d3b6f9975c Add @type to help the Underscore build method alternatives. [ci skip] 2014-07-01 21:22:52 -07:00
John-David Dalton
5200c8d659 Remove unneeded n validation from _.before. 2014-07-01 12:21:11 -07:00
John-David Dalton
e2c6f57859 Minor test cleanup. 2014-07-01 11:58:09 -07:00
John-David Dalton
b084210705 Add _.before. 2014-07-01 11:57:45 -07:00
John-David Dalton
6622922468 Optimize _.clone. 2014-07-01 09:11:06 -07:00
John-David Dalton
caf31eb6d3 Doc tweaks. [ci skip] 2014-06-30 23:54:50 -07:00
John-David Dalton
464691f129 Optimize _.reduce and _.reduceRight. 2014-06-30 21:24:07 -07:00
Mariano Desanze
afcf539e6e Fix doc typo as _.support.ownLast is false in all but IE < 9. [ci skip] 2014-06-30 14:19:11 -07:00
John-David Dalton
bf2c1a2df2 Fix binary search benchmarks. [ci skip] 2014-06-30 12:59:18 -07:00
John-David Dalton
7400064cd5 Added _.sortedLastIndex and allow _.lastIndexOf to work with sorted arrays and _.sortedLastIndex. 2014-06-30 09:40:55 -07:00
John-David Dalton
7eb3754807 Doc and source cleanup. 2014-06-29 18:13:47 -07:00
John-David Dalton
a9cc2fdb54 Add toIterable to reduce support.unindexedChars use and optimize/simplify methods. [closes #601] 2014-06-29 14:14:16 -07:00
John-David Dalton
212282e77c Rebuild dist. 2014-06-29 01:25:31 -07:00
John-David Dalton
1e8a820108 Split _.every, _.filter, _.map, _.reduce, & _.some into arrayXYZ and baseXYZ forms as well as specialize for _.bind and _.partial. 2014-06-28 23:33:15 -07:00
John-David Dalton
0117341b7e Fix _.template and _.flatten use in perf/perf.js. 2014-06-28 23:33:15 -07:00
John-David Dalton
d21eac8b18 Cleanup _.forEach docs. [ci skip] 2014-06-28 23:33:15 -07:00
Steve Heffernan
af4edc3b76 Updated forEach object example to include the keys. [ci skip] [closes #596]
The forEach object example is a little ambiguous where it says "logs each number", since both the key and value of the object are technically numbers. I've read it a few times now (skipping over the function description of course) and wanted it to be a little more obvious.
2014-06-28 23:33:15 -07:00
John-David Dalton
8a959896bf Reduce code inbaseBind and baseCreateWrapper and optimize _.bind by adding createCtorWrapper. 2014-06-26 09:02:31 -07:00
John-David Dalton
ba5107e801 Add unit tests for _.curryRight. 2014-06-26 09:00:56 -07:00
John-David Dalton
d7de4a3579 Doc tweaks for _.curryRight and basePartial. [ci skip] 2014-06-26 09:00:56 -07:00
John-David Dalton
175b14860e Update Benchmark.js to be compatible with v3.0.0-pre. 2014-06-26 09:00:56 -07:00
John-David Dalton
72fcb4ebda Simplify baseCallback. 2014-06-26 09:00:56 -07:00
John-David Dalton
3a221f9b6e Cleanup _.compose. 2014-06-26 09:00:55 -07:00
Graeme Yeates
1241fb54f3 Simplify _.*RightWhile loops 2014-06-26 09:00:55 -07:00
John-David Dalton
b291dcadc6 Add _.curryRight. 2014-06-26 09:00:55 -07:00
John-David Dalton
4105b19f75 Drop Narwhal from test/run-test.sh and contributing text. [ci skip] 2014-06-26 09:00:55 -07:00
John-David Dalton
b7b8ad7760 Updated tested Node version in readme. [ci skip] 2014-06-26 09:00:55 -07:00
John-David Dalton
8465e3061a Cleanup error messages for jobs that fail to start . 2014-06-26 09:00:55 -07:00
John-David Dalton
6b09cd61d2 Ensure _.keysIn treats primitives like objects and both _.keys and _.keysIn return empty arrays for null and undefined values. 2014-06-22 18:54:19 -07:00
John-David Dalton
aac609cc38 Avoid test fails in IE 9. 2014-06-22 18:54:19 -07:00
John-David Dalton
0b1d16f9db Excuse _.isFinite tests in test/underscore.html. 2014-06-22 16:56:18 -07:00
John-David Dalton
7374f6dc4f Simplify charsLeftIndex and charsRightIndex. 2014-06-22 16:38:23 -07:00
John-David Dalton
9577d80fc2 Simplify _.dropRightWhile, _.dropWhile, _.takeRightWhile, and _.takeWhile. 2014-06-22 16:38:23 -07:00
John-David Dalton
c550e27d21 Ensure _.omit and _.pick work with primitives. 2014-06-22 16:38:23 -07:00
John-David Dalton
423730da76 Make _.isFinite use ES6 Number.isFinite when available. 2014-06-22 16:38:23 -07:00
John-David Dalton
78a4c6f525 Minor whitespace nits. [ci skip] 2014-06-22 16:38:23 -07:00
John-David Dalton
0d3ac21ae0 Fix test in IE. 2014-06-22 16:38:23 -07:00
John-David Dalton
2cae3245aa Make make nullish check consistent in _.isEmpty. 2014-06-22 16:38:22 -07:00
John-David Dalton
e143a0ec6b Make _.isFinite follow ES6 Number.isFinite. 2014-06-22 16:38:22 -07:00
John-David Dalton
35ce087f3b Use Object(...) instead of new String, new Boolean, and new Number. 2014-06-22 16:38:22 -07:00
John-David Dalton
e787bc8ae4 Add semicolons. 2014-06-22 16:38:22 -07:00
John-David Dalton
4937052475 Minor test cleanup. 2014-06-22 00:28:58 -07:00
John-David Dalton
739eb67bec Add _.isError to host object test. 2014-06-22 00:28:58 -07:00
John-David Dalton
a3049b6f94 Ensure _.compose returns a noop function when no arguments are provided. 2014-06-22 00:28:26 -07:00
John-David Dalton
2f1346fefa Add more _.noop use in test.js. 2014-06-22 00:27:47 -07:00
John-David Dalton
f116db3108 Make categories singular. 2014-06-21 21:25:17 -07:00
John-David Dalton
87a8780cca Fix failing tests in older IE related to iteration order. 2014-06-21 15:12:49 -07:00
John-David Dalton
d2de62283b Rename callback params to iterator or customizer where appropriate. 2014-06-21 15:12:49 -07:00
John-David Dalton
11c16139c2 Avoid nullish being treated as plain objects in _.keysIn. 2014-06-21 15:12:49 -07:00
John-David Dalton
1c91ec69ba Simplify _.isObject check in _.trunc. 2014-06-21 15:12:49 -07:00
John-David Dalton
73429e7779 Remove _.isObject use from _.omit and _.pick. 2014-06-21 15:12:48 -07:00
John-David Dalton
fe5aff0c72 More lodash cleanup. 2014-06-21 15:12:48 -07:00
John-David Dalton
c36d29a896 Minor nit in readme. [ci skip] 2014-06-21 15:12:48 -07:00
John-David Dalton
e3b5395905 Remove falsey array check in baseFlatten. 2014-06-21 15:12:48 -07:00
John-David Dalton
3a25ecbbc9 Rework lodash. 2014-06-21 15:12:48 -07:00
John-David Dalton
7d63970293 Remove sorting from _.functions. 2014-06-21 15:12:48 -07:00
John-David Dalton
ee267d23ba Correct _.template use in saucelabs.js. 2014-06-21 15:12:48 -07:00
John-David Dalton
e0e4eed26b Adjust unit tests. 2014-06-19 09:32:13 -07:00
John-David Dalton
5b280bd60d Add excused tests for _.first, _.initial, _.last, _.rest, and _.template. 2014-06-19 09:32:13 -07:00
John-David Dalton
2f9cc91b64 Simplify _.initial. 2014-06-19 09:32:13 -07:00
John-David Dalton
36bcced355 Avoid sort() use in baseFunctions. 2014-06-19 09:32:12 -07:00
John-David Dalton
9a9b17d38d Make _.chain use lodash instead of lodashWrapper. 2014-06-19 09:32:12 -07:00
John-David Dalton
e2cd275ac5 Remove the data param from _.template. 2014-06-19 09:32:12 -07:00
John-David Dalton
61eb5d906c Doc tweaks to _.flatten and other methods. [ci skip] 2014-06-19 09:32:12 -07:00
John-David Dalton
a113dc0861 Remove overloading from _.first, _.last, _.initial, & _.rest. 2014-06-19 09:32:12 -07:00
John-David Dalton
6a164a235d Add methods to the lodash wrapped/unwrapped chaining docs. [ci skip] 2014-06-19 09:32:12 -07:00
John-David Dalton
c1eaa90c2b Move callback above constant. 2014-06-17 10:31:06 -07:00
John-David Dalton
00e00eb7b5 Doc tweaks for boolean params. [ci skip] 2014-06-17 09:16:09 -07:00
John-David Dalton
0d2db28908 Rename _.createCallback to _.callback. 2014-06-17 01:07:04 -07:00
John-David Dalton
20202b793b Remove callback support from _.flatten and make it shallow by default. 2014-06-17 00:59:19 -07:00
John-David Dalton
62e84e73ae Add _.clone and _.flatten tests. 2014-06-17 00:08:33 -07:00
John-David Dalton
73f6fd49d0 Align _.keys with ES6 and coerce primitives to objects. 2014-06-16 12:27:21 -07:00
John-David Dalton
4f9da35b76 Make _.max and _.min return unwrapped values when chaining. 2014-06-16 09:07:47 -07:00
John-David Dalton
cc7b413a2a Update request in travis.yml. 2014-06-16 00:31:14 -07:00
John-David Dalton
fcf29f357d Minor readme nit. [ci skip] 2014-06-16 00:31:08 -07:00
John-David Dalton
4fd1eae84f Fix typo to fix AMD tests. 2014-06-15 18:32:16 -07:00
John-David Dalton
1c770a3c66 Drop testing Node 0.6. and bump in name only to v3.0.0-pre. 2014-06-15 17:07:51 -07:00
John-David Dalton
e152f54903 Make tests work with es6 transpiled code. 2014-06-15 16:18:07 -07:00
John-David Dalton
5d3a9d817a make ui.isModularize set to true if coming from lodash-es6. 2014-06-15 14:24:37 -07:00
John-David Dalton
e884916275 Rebuild dist. 2014-06-15 13:46:51 -07:00
John-David Dalton
5b7b16416b Fix _.zip use with arguments objects. 2014-06-15 13:46:08 -07:00
John-David Dalton
04b93aeaf2 Make object check style consistent. 2014-06-15 11:45:04 -07:00
John-David Dalton
39bdd37615 Correct the resolution of length in _.zip. 2014-06-15 11:45:04 -07:00
John-David Dalton
4ccb3810c2 Make nullish check consistent in variations of _.matches returned function. 2014-06-14 23:21:58 -07:00
John-David Dalton
1065ebb0aa Simplify baseFlatten. 2014-06-14 10:23:26 -07:00
John-David Dalton
74c08de530 Cleanup nonEnumProps assignment. 2014-06-14 10:19:16 -07:00
John-David Dalton
b195fdbf60 Optimize _.matches. 2014-06-13 23:54:33 -07:00
John-David Dalton
f68efe6674 Make _.partial and _.partialRight docs complement each other. [ci skip] [closes #586] 2014-06-13 09:33:33 -07:00
John-David Dalton
ed309182bf Add _.chunk to the features section of the readme. [ci skip] 2014-06-12 23:42:46 -07:00
John-David Dalton
50c6b276f9 Remove _.pluck use from _.zip. 2014-06-12 20:50:47 -07:00
John-David Dalton
4c1a8f358a Add more _.chunk tests. 2014-06-12 09:29:05 -07:00
John-David Dalton
05ff79f347 Avoid using passing in test descriptions. 2014-06-12 09:17:59 -07:00
John-David Dalton
3ae328898d Reduce _.omit. 2014-06-12 09:11:47 -07:00
John-David Dalton
7d35c43def Minor doc / source cleanup. 2014-06-12 08:48:33 -07:00
John-David Dalton
d4f857b739 Move _.chunk to the Arrays category and make it use a default chunkSize of 1. 2014-06-12 08:39:30 -07:00
John-David Dalton
b6bc844b4d Remove support for cloning arrays and make _.isEqual more robust when comparing errors. 2014-06-12 08:38:35 -07:00
John-David Dalton
d06a477371 Add "enumerable" to _.isEmpty doc. [ci skip] 2014-06-11 22:59:30 -07:00
John-David Dalton
c128c029f3 Merge pull request #585 from phated/master
Initial implementation of _.chunk - close #465
2014-06-11 19:00:45 -07:00
Blaine Bublitz
a58ad5006f Initial implementation of _.chunk - close #465 2014-06-11 17:37:06 -07:00
John-David Dalton
3c5655fc3d Rebuild dist. 2014-06-11 12:29:06 -07:00
John-David Dalton
6ab04866ec Fix failing tests. 2014-06-11 12:24:18 -07:00
John-David Dalton
1f07f9d127 Fix _.isEqual test in environment w/o typed arrays. 2014-06-11 12:24:17 -07:00
John-David Dalton
e5ccfc4446 Ensure _.where returns elements that contain all source array values. [closes #583] 2014-06-11 12:24:17 -07:00
John-David Dalton
ec89382e35 Add error object tests to _.isEqual. 2014-06-11 12:24:17 -07:00
John-David Dalton
4a7873ef77 Update tested Firefox in the readme. [ci skip] 2014-06-11 12:24:17 -07:00
John-David Dalton
ff2fd45ff0 Only use ctorByClass if typed array constructor is incorrect. 2014-06-10 20:28:02 -07:00
John-David Dalton
e8cfeec0cf Cleanup tests and ensure the Worker test waits no more than 30 seconds (including retries). 2014-06-10 20:28:02 -07:00
John-David Dalton
c72171d1da Add _.once tests for memorized return values. 2014-06-10 09:50:10 -07:00
John-David Dalton
885b56000b Make less stable tests leverage the retry count of asyncTest. 2014-06-10 09:40:53 -07:00
John-David Dalton
3d1ee9dcf0 Clarify AMD exports comment. [ci skip] 2014-06-09 23:00:32 -07:00
John-David Dalton
5d2133a483 Fix unit test for rhino/ringo. 2014-06-09 09:37:14 -07:00
John-David Dalton
52bb56ba43 Remove support.argsObject. 2014-06-09 02:05:54 -07:00
John-David Dalton
d2edf11726 Ensure _.callback supports binding built-in methods. [closes #576] 2014-06-09 01:40:02 -07:00
John-David Dalton
9a152c23bb Minor _.sortBy doc nit. [ci skip] 2014-06-09 00:17:25 -07:00
John-David Dalton
8572445f57 Optimize _.isEqual by using _.keys and ensure arguments objects are compared correctly. 2014-06-08 19:42:11 -07:00
John-David Dalton
9940d73167 Update requires. 2014-06-07 06:53:02 -07:00
John-David Dalton
8b8a9ae854 Attempt to fix Safari 4. 2014-06-06 15:00:36 -07:00
John-David Dalton
036bf92223 Ensure a byte length is passed. 2014-06-05 07:13:07 -07:00
John-David Dalton
410969743f Avoid subarray for mobile Safari. 2014-06-05 00:47:37 -07:00
John-David Dalton
14da67121c Add Safari 4 to saucelabs.js. 2014-06-05 00:47:25 -07:00
John-David Dalton
681d3e09ba Rebuild dist. 2014-06-04 08:57:01 -07:00
John-David Dalton
0ce130efa7 Cleanup readme and update Opera versions. [ci skip] 2014-06-04 08:56:13 -07:00
John-David Dalton
d14d7ade85 Fix baseIsEqual doc param typo. [ci skip] 2014-06-04 08:56:13 -07:00
John-David Dalton
7b4fd28ef1 Ensure _.merge ignores undefined values of source object properties. [closes #573] 2014-06-04 08:56:13 -07:00
John-David Dalton
b2280b2d72 Fixed _.keys in Safari 5.0.5. 2014-06-02 09:29:40 -07:00
John-David Dalton
b41826c332 Fixed cloneBuffer in PhantomJS. 2014-06-02 09:29:40 -07:00
John-David Dalton
3d93ed9059 Fix failing tests in Safari > 5. 2014-06-02 08:15:19 -07:00
John-David Dalton
35a0756e5a Add fallback for ArrayBuffer#slice. 2014-06-01 23:02:39 -07:00
John-David Dalton
10419366f9 Rename num to n in doc examples. [ci skip] 2014-06-01 23:02:39 -07:00
John-David Dalton
8373d31013 Cleanup readme. [ci skip] 2014-06-01 23:02:39 -07:00
John-David Dalton
0c89a8f145 Remove narwhal from travis.yml testing. 2014-06-01 23:02:39 -07:00
John-David Dalton
257ac4d37e Remove unused vendor files. 2014-05-31 19:38:27 -05:00
John-David Dalton
653aee8b07 Update to version info to 2.5.0-pre. 2014-05-31 19:38:27 -05:00
John-David Dalton
88726aff8c Update readme. [ ci skip] 2014-05-31 19:38:27 -05:00
Alex Elder
baabdb4ac2 Updated README.md
This commit adds links to Lo-Dash documentation under a specific "Documentation" heading, hopefully improving usability for users searching for the API docs.
2014-05-31 19:38:26 -05:00
Benjamin Tan
6277510557 Use Markdown links formatting. [ci skip] 2014-05-31 19:38:26 -05:00
John-David Dalton
e9ab17fcb1 Fix failing test. 2014-05-31 19:38:26 -05:00
John-David Dalton
2f9ba719d4 Add clone tests for array buffers. 2014-05-30 15:27:32 -04:00
John-David Dalton
e259f300b1 Remove unused fork in baseAssign and baseMerge. 2014-05-30 14:58:47 -04:00
John-David Dalton
fcc357ddd1 Source cleanup of onJobStart. 2014-05-30 14:58:36 -04:00
John-David Dalton
e613198af7 Detect sauce error message in result. 2014-05-30 14:58:08 -04:00
John-David Dalton
e3c1214971 Fix test stability. 2014-05-30 13:15:32 -04:00
John-David Dalton
1c3f9f7fbf Ensure tests that timeout are marked as errors. 2014-05-30 13:06:06 -04:00
John-David Dalton
f4a1573586 Rename _.truncate to _.trunc to align with ES6. 2014-05-30 13:04:56 -04:00
John-David Dalton
95db668c3c Make reError more robust and leverage console.log sugar more. 2014-05-30 10:03:06 -04:00
John-David Dalton
691e21fa78 Delay status completion until there is a valid job ID. 2014-05-28 16:38:27 -04:00
John-David Dalton
c555681c8b Add extra object in doc examples of _.assign and _.defaults. [ci skip] 2014-05-28 15:35:00 -04:00
John-David Dalton
ae7ef24196 Minor source nit in test/test.js. 2014-05-28 15:23:40 -04:00
John-David Dalton
f935b141f1 Fix test typo. 2014-05-28 15:23:40 -04:00
John-David Dalton
a893d43d16 Move test error catching code before any other script files. 2014-05-28 15:23:40 -04:00
John-David Dalton
7cb47c8494 Add chaining tests to string methods. 2014-05-27 23:21:03 -04:00
John-David Dalton
5ef4c763b6 Add chaining tests. 2014-05-26 16:56:15 -06:00
John-David Dalton
459b5bd89c Adjust callback arg counts and fast paths. 2014-05-26 07:17:35 -07:00
John-David Dalton
c5237a926d Update vendor. 2014-05-25 23:55:59 -07:00
John-David Dalton
2e5052a7fa Bump the tested Opera version in readme. [ci skip] 2014-05-25 23:10:39 -07:00
John-David Dalton
cd8d9bf07c Ensure _.isEqual works on error objects and add tests for cloning and comparing errors and typed arrays. 2014-05-25 23:10:08 -07:00
John-David Dalton
7da022ebb4 Consistent test order. 2014-05-25 15:39:54 -07:00
John-David Dalton
67f9c7e0f0 Code cleanup and removal of ctorByClass. 2014-05-25 13:18:13 -07:00
John-David Dalton
1812d557b6 Minor doc nit. [ci skip] 2014-05-25 12:32:15 -07:00
John-David Dalton
34cde430a5 Add private isArrayLike helper and add object classifications for typed arrays with support for cloning and comparing them. 2014-05-25 12:24:32 -07:00
John-David Dalton
12a6b58614 Fix _.throttle doc typo. [ci skip] 2014-05-25 09:14:02 -07:00
John-David Dalton
cb81fccfaf Lots of doc tweak removing heavy will use. [ci skip] 2014-05-24 18:33:05 -07:00
John-David Dalton
1ce0fffd25 Add a cancel function to debounced functions. [closes #567] 2014-05-24 14:39:53 -07:00
John-David Dalton
0c1c4b08c7 Fix doc typo. [ci skip] 2014-05-23 23:45:45 -07:00
Mathias Bynens
c875b61003 Make _.escape escape backticks as well
In Internet Explorer ≤ 8, the backtick character can be used to break out of unquoted attribute values or HTML comments. See http://html5sec.org/#102, http://html5sec.org/#108, and http://html5sec.org/#133.
2014-05-23 10:38:05 +02:00
John-David Dalton
f4b34c8ca5 Make _.isEqual callback test circular. 2014-05-22 23:28:05 -07:00
John-David Dalton
a6b4b5e30c Update tested Chrome version in readme. [ci skip] 2014-05-22 23:08:32 -07:00
John-David Dalton
64fb8f0c53 Remove trailing comma to fix test fails in old IE. 2014-05-21 16:43:13 -07:00
John-David Dalton
78a312f61c Rebuild dist. 2014-05-21 16:07:19 -07:00
John-David Dalton
2c6c4426e8 Fix jashkenas/underscore#1621. 2014-05-21 16:06:06 -07:00
John-David Dalton
a9df0601a6 Enhance callback args tests for _.clone, _.cloneDeep, and _.isEqual. 2014-05-21 00:20:05 -07:00
John-David Dalton
4345f353a0 Fix callback use with _.isEqual. 2014-05-21 00:20:05 -07:00
John-David Dalton
96b525658e Cleanup optionToValue. 2014-05-21 00:20:05 -07:00
John-David Dalton
9525952573 Avoid variable assignments in return statements. 2014-05-21 00:20:05 -07:00
John-David Dalton
76828a87ee Optimize _.every and _.some and cleanup _.callback, _.forEach, and _.forEachRight. 2014-05-21 00:20:05 -07:00
John-David Dalton
789eb59904 Correct .npm folder permissions in travis.yml. 2014-05-21 00:20:05 -07:00
John-David Dalton
c0265f8fd9 Add _.runInContext doc example. 2014-05-21 00:20:05 -07:00
John-David Dalton
891ebb8ff6 Attempt to detect more false test errors. 2014-05-21 00:20:05 -07:00
John-David Dalton
1111c20d54 Simplify reWords. 2014-05-19 08:51:33 -07:00
John-David Dalton
387176e83d Add baseAssign, baseBindAll, baseInvoke, basePick, basePullAt, and createAssigner. 2014-05-19 01:03:22 -07:00
John-David Dalton
80a38b285d Punt on AMD testing for Android because of stability issues. 2014-05-19 01:03:22 -07:00
John-David Dalton
aa0c02a243 Avoid retrying the tunnel more times than allowed. 2014-05-19 01:03:22 -07:00
John-David Dalton
3c5932af75 Update Underscore tests and excuse tests for edge features from the Underscore build. 2014-05-19 01:03:22 -07:00
John-David Dalton
f40a7d47f5 Simplify .gitattributes. [ci skip] 2014-05-19 01:03:22 -07:00
John-David Dalton
f85543c7ff Only retry a test if it errors not because of unit test fails. 2014-05-19 01:03:21 -07:00
John-David Dalton
36d2ff7c3b Update qunit-extras assert expected count appropriately and fix typo. 2014-05-19 01:03:21 -07:00
John-David Dalton
7ba673ed89 Rename arrayRef to arrayProto for consistency. 2014-05-16 02:18:14 -07:00
John-David Dalton
a0cba79df2 Excuse assert count expected error in Backbone and add support for excusing them qunit-extras. 2014-05-16 02:18:14 -07:00
John-David Dalton
c91e8d7aa7 Avoid a false fail in slower Ringo (and other slower environments). 2014-05-16 02:18:14 -07:00
John-David Dalton
e85b0a81ba Minor style nit in test.js. 2014-05-16 02:18:13 -07:00
John-David Dalton
bfc40498bd Update vendors. 2014-05-16 02:18:13 -07:00
Benjamin Tan
41ac7062f8 Minor comment and code style fixes 2014-05-15 19:04:06 -07:00
John-David Dalton
71c19b566b Tweak escaping sourceURL in docs. [ci skip] 2014-05-15 19:04:06 -07:00
John-David Dalton
0de72f3abb Add compileFunction. 2014-05-15 19:04:06 -07:00
John-David Dalton
ce3c78d30b Ensure tunnel stops when jobs are completed. 2014-05-15 19:04:06 -07:00
John-David Dalton
7152308c25 Use result job_id instead of parsing the url and ensure tunnel can restart if the tunnel failed to start. 2014-05-15 19:04:06 -07:00
John-David Dalton
cd838d4902 Add tunnel timeout support. 2014-05-15 19:04:06 -07:00
John-David Dalton
f7799eee59 Avoid unneeded index var in baseBind. 2014-05-15 19:04:06 -07:00
John-David Dalton
247718bc6c Update sauce-tunnel. 2014-05-15 19:04:06 -07:00
John-David Dalton
6b5521fbf7 Rename testId to taskId. 2014-05-15 19:04:06 -07:00
John-David Dalton
13e00379ae Cleanup baseIsEqual and baseMerge. 2014-05-13 08:58:01 -07:00
John-David Dalton
347663716c Null _timerId in Job#status. 2014-05-13 08:58:01 -07:00
John-David Dalton
69415ea966 Update tested Firefox version on Sauce. 2014-05-13 08:58:01 -07:00
John-David Dalton
6c71e3c583 Pass more callback args to custom callbacks of _.clone, _.cloneDeep, and _.isEqual. 2014-05-13 08:58:01 -07:00
John-David Dalton
06861ceb55 Add Job#resetting flag. 2014-05-13 08:58:01 -07:00
John-David Dalton
6e286473ab Add more logInline calls and move state flag assignment higher in methods. 2014-05-13 08:58:00 -07:00
John-David Dalton
6091219aaf Split out stop and reset events in Tunnel#restart. 2014-05-13 08:58:00 -07:00
John-David Dalton
76cee1287a Ensure jobs are reset before the tunnel is closed. 2014-05-13 08:58:00 -07:00
John-David Dalton
ff138c6d47 Null out the descriptor.value after using it in setData. 2014-05-12 07:49:20 -07:00
Benjamin Tan
a89f8b8098 Add $ signs to bash prompts 2014-05-12 07:49:20 -07:00
John-David Dalton
f4009a9944 Make recursive test expand to _.debounce too. 2014-05-12 07:49:20 -07:00
John-David Dalton
16b479d21e Fix jobUrl typo in saucelabs.js. 2014-05-12 07:49:20 -07:00
John-David Dalton
0f8c20c3ab Add ui.isForeign, add guards for Worker tests, and remove Dojo loader filter from test. 2014-05-12 07:49:20 -07:00
John-David Dalton
d5c3b258f3 Rename assignDefaultsOwn to assignOwnDefaults and remove createAssigner and defaultsOwn. 2014-05-11 03:49:41 -07:00
John-David Dalton
ee4a703407 Add createAssigner, defaultsOwn, and expand the callback args of _.assign and _.merge. 2014-05-11 02:35:46 -07:00
John-David Dalton
e901208721 Fix typo in _.times docs. [ci skip] [closes #549] 2014-05-09 08:46:56 -07:00
John-David Dalton
5deb7371ab Rebuild dist. 2014-05-09 02:32:14 -07:00
John-David Dalton
f999195f47 Style nit on the IIFE used with mixin. 2014-05-09 02:31:25 -07:00
John-David Dalton
9b920cf813 Add baseFunctions to ensure _.mixin only iterates over own keys of source objects. 2014-05-09 02:31:25 -07:00
John-David Dalton
4155e8e0ce Add a doc note for iterating inherited properties to _.bindAll and _.functions. [ci skip] 2014-05-09 02:31:25 -07:00
John-David Dalton
b583530c66 Simplify memoize doc example. [ci skip] 2014-05-07 01:32:21 -07:00
John-David Dalton
43c13c22a8 Make _.memoize skip the __proto__ key. 2014-05-07 00:40:27 -07:00
John-David Dalton
32167b45ce Ensure _.pullAt ignores non-index values. 2014-05-07 00:12:12 -07:00
John-David Dalton
f09ae1e2e3 Fix url parsing. 2014-05-06 23:03:22 -07:00
John-David Dalton
086e1e1a74 Fix resolving job ids. 2014-05-06 21:49:33 -07:00
John-David Dalton
1020637d79 Merge pull request #541 from danallison/master
Fix old `pullAt` doc example. [ci skip]
2014-05-06 10:56:43 -07:00
Dan Allison
9c30d69d55 Fix old pullAt example 2014-05-06 10:16:51 -07:00
John-David Dalton
ff673f053b Use String instead of +'' for consistent style. 2014-05-06 09:20:44 -07:00
John-David Dalton
2514987d3e Comment nit. [ci skip] 2014-05-06 08:44:35 -07:00
John-David Dalton
e332a916b0 Add debug. 2014-05-06 08:14:19 -07:00
John-David Dalton
5eb7faec29 Specify Node 0.11.11 to avoid 0.11.13 which isn't compatible with istanbul. 2014-05-06 06:08:34 -07:00
John-David Dalton
8cfebee922 Remove id check from Job#stop. 2014-05-06 05:21:11 -07:00
John-David Dalton
f4a22f8aef Add Job#remove to remove old jobs when restarting. 2014-05-06 05:13:45 -07:00
John-David Dalton
5fd641e8c7 Add _.pullAt to features section of readme. [ci skip] 2014-05-04 19:24:43 -07:00
John-David Dalton
4cde537a7f Cleanup initialization of Job and Tunnel instances. 2014-05-04 16:13:07 -07:00
John-David Dalton
56ee4c1ae5 Remove unnecessary this binding and emit register restart callbacks so they execute sooner. 2014-05-04 16:04:24 -07:00
John-David Dalton
1874ad2ff2 Correct typo in Job#reset. 2014-05-04 15:39:50 -07:00
John-David Dalton
907ed641bf Use the chrome sauce browser identifier in place of googlechrome. 2014-05-04 13:49:54 -07:00
John-David Dalton
a23ccd863d Message format nit for logging retries. [ci skip] 2014-05-04 13:10:50 -07:00
John-David Dalton
8d145d7a32 Make threshold account for job batch sizes smaller than the throttled amount. 2014-05-04 12:28:49 -07:00
John-David Dalton
4a0419e554 Rebuild dist. 2014-05-04 10:44:25 -07:00
John-David Dalton
f23a458319 Fix typo in _.pullAt. 2014-05-04 10:43:43 -07:00
John-David Dalton
1e324103cc Tweak docs for _.at, _.omit, and _.pick. [ci skip] 2014-05-04 10:43:43 -07:00
John-David Dalton
85d8ced299 Add baseAt to reduce _.at and _.pullAt. 2014-05-04 10:43:43 -07:00
John-David Dalton
0631b8f052 Whitespace nit. 2014-05-04 02:57:22 -07:00
John-David Dalton
649994464c Tweak docs for _.pull, _.pullAt, and _.remove. [ci skip] 2014-05-04 02:57:22 -07:00
John-David Dalton
8c618780b7 Rename _.removeAt to _.pullAt. [closes #490] 2014-05-04 02:57:07 -07:00
Dan Allison
0dc2e8994b use else instead of continue 2014-05-04 02:51:55 -07:00
Dan Allison
d25ab4f204 use more descriptive variable name 2014-05-04 02:51:54 -07:00
Dan Allison
ff26080c5c fix _.removeAt with repeated indexes 2014-05-04 02:51:54 -07:00
Dan Allison
95bd2dde19 add removeAt function
(cherry picked from commit 06b3eae373484618b58f70f3cd6ecda319bfd977)
2014-05-04 02:50:23 -07:00
John-David Dalton
6ad31a5441 Restart tunnel if all *active* jobs have restarted. 2014-05-03 23:35:18 -07:00
John-David Dalton
702a82bb38 Remove args var from _.at. 2014-05-03 22:05:26 -07:00
John-David Dalton
a5e91385b0 Expand the excuse window of load errors to 3 seconds or more. 2014-05-03 21:55:18 -07:00
John-David Dalton
4c690b9d4c Make documented args names of methods that accept more than one plural. [ci skip] 2014-05-03 21:44:43 -07:00
John-David Dalton
695d6e14d4 Remove _.at guard for _.map use. 2014-05-03 21:42:19 -07:00
John-David Dalton
c19f87134e Restart tunnel if all jobs have restarted. 2014-05-03 21:41:02 -07:00
John-David Dalton
3de50e8dd4 Emit restart events for Job and Tunnel. 2014-05-03 21:28:19 -07:00
John-David Dalton
fb20dae0a8 Whitespace nits. [ci skip] 2014-05-03 21:27:32 -07:00
John-David Dalton
0f8db11f53 Restrict script load error excusal a bit. 2014-05-03 07:55:11 -07:00
John-David Dalton
e3f94156f1 Update tested version of Firefox in readme. [ci skip] 2014-05-03 06:30:30 -07:00
John-David Dalton
cf468fc4d1 Update tested version of Node in readme. [ci skip] 2014-05-03 00:27:59 -07:00
John-David Dalton
849cf30b95 Rebuild dist. 2014-05-03 00:27:41 -07:00
John-David Dalton
d08febc711 Avoid reporting tests to Sauce Labs when errors occur to force a retry. 2014-05-03 00:16:15 -07:00
John-David Dalton
53bfafb84c Add doc note to _.defaults for a deep version. [ci skip] [closes #154] 2014-05-02 22:49:36 -07:00
John-David Dalton
40809e40c2 Fix _.partialRight doc example. [ci skip] [closes #540] 2014-05-02 22:33:17 -07:00
John-David Dalton
925197ae09 Add doc note on Firefox OS certified apps. [ci skip] 2014-05-02 21:41:25 -07:00
John-David Dalton
07f72de63d Use _.partial where applicable. 2014-05-02 20:55:59 -07:00
John-David Dalton
f17f62b532 Move SauceTunnel callbacks out of Tunnel#start and Tunnel#stop and use util.inherits. 2014-05-02 20:50:32 -07:00
John-David Dalton
b97bbe0572 Add Jobs#reset. 2014-05-02 19:38:10 -07:00
John-David Dalton
9e4cc7fdbc Reduce flag checking. 2014-05-02 19:37:48 -07:00
John-David Dalton
7dcb56ea5c Reset jobs when tunnel restarts. 2014-05-02 11:24:53 -07:00
John-David Dalton
a814c6d152 Fix restarting tunnels. 2014-05-02 09:35:09 -07:00
John-David Dalton
cbe3a0fde7 Add running flag to Job and Tunnel. 2014-05-02 08:48:32 -07:00
John-David Dalton
7e375370fa Fix Tunnel#stop. 2014-05-02 07:42:41 -07:00
John-David Dalton
1d149b100b Add state checks to test/saucelabs.js. 2014-05-02 01:44:18 -07:00
John-David Dalton
1bce75ed53 Add the ability to retry sauce tunnel connections. 2014-05-02 01:22:03 -07:00
John-David Dalton
d8a72fe797 Update travis deps to use ^ version indicator instead of ~. 2014-05-01 09:29:01 -07:00
John-David Dalton
5bd8319f99 Add retry limit to sauce retry message. 2014-05-01 08:52:20 -07:00
John-David Dalton
d8221b880b Remove unused color from ansiCodes. 2014-05-01 08:51:35 -07:00
John-David Dalton
1316ce5ca8 Fix dequeue. 2014-05-01 02:55:11 -07:00
John-David Dalton
d5562767a2 Cleanup test titles. 2014-05-01 01:33:02 -07:00
John-David Dalton
1a03ee8b9b Ensure _.callback doesn't error if provided a nullish func argument and a thisArg. 2014-05-01 01:32:47 -07:00
John-David Dalton
d07e53e9a0 Add Job#restart and Job#stop to test/saucelabs.js. 2014-05-01 00:47:26 -07:00
John-David Dalton
04160e6acc Make logInline treat nullish values as an empty string. 2014-05-01 00:22:03 -07:00
John-David Dalton
6f4c7ca171 Add job throttle to test/saucelabs.js. 2014-04-30 21:07:51 -07:00
John-David Dalton
2d397efcf5 Add placeholders note to the features section of the readme. [ci skip] 2014-04-30 09:24:58 -07:00
John-David Dalton
ba8e59e1bd Keep skipping placeholder tests for modularized builds. 2014-04-30 09:11:31 -07:00
John-David Dalton
568faa526f Rebuild dist. 2014-04-30 08:48:37 -07:00
John-David Dalton
b761fbaabe Fix _.mixin doc typo. 2014-04-30 08:46:25 -07:00
John-David Dalton
4a493a96d7 Remove isPreBuild checks from test/test.js. 2014-04-30 08:46:25 -07:00
John-David Dalton
601244ba74 Update formatting for tested browsers in readme. [ci skip] 2014-04-30 08:20:07 -07:00
John-David Dalton
d606197264 Try to use the tunnel-identifier key. 2014-04-30 08:20:07 -07:00
John-David Dalton
1fee10e167 Only apply idleTimeout to queued jobs. 2014-04-30 08:20:07 -07:00
John-David Dalton
674802abe4 Make _.mixin chainable and make it assign to this instead of hard coding assignment to lodash. 2014-04-30 00:11:45 -07:00
John-David Dalton
179422a84b Add more _.where tests. 2014-04-29 19:15:09 -07:00
John-David Dalton
5c9e4685db _.where should perform a partial comparison of *all* objects within arrays of source. [closes #536] 2014-04-29 09:28:56 -07:00
John-David Dalton
c59f8c734a Apply idle-timeout to queued jobs too. 2014-04-29 08:18:36 -07:00
John-David Dalton
d2fa2be5af Fix doc typos fourty to forty. [ci skip] 2014-04-29 08:18:36 -07:00
Max Bucknell
2d3d66e9d1 Fix spelling mistake 2014-04-29 08:18:36 -07:00
John-David Dalton
21713801ad Add some debug. 2014-04-29 01:51:49 -07:00
John-David Dalton
598e2adebe Adjust modern build testing for older Android. 2014-04-29 00:38:56 -07:00
John-David Dalton
8bbb84fdc7 Try to stabilize sauce results. 2014-04-29 00:17:51 -07:00
John-David Dalton
59b7bc7b98 Correct browserName output. 2014-04-28 23:35:51 -07:00
John-David Dalton
55d52be3c2 Add missing comma in test/saucelabs.js. 2014-04-28 10:21:36 -07:00
John-David Dalton
3aa4e45bdb Rebuild dist. 2014-04-28 09:03:21 -07:00
John-David Dalton
534976e64f Cleanup platforms in test/saucelabs.js. 2014-04-28 08:43:43 -07:00
John-David Dalton
3efa9d2030 Remove IIFE in test/saucelabs.js. 2014-04-28 08:41:24 -07:00
John-David Dalton
2c4657355f Ensure that _.transform checks that object is an object before using it as the accumulator [[Prototype]]. 2014-04-28 08:39:35 -07:00
John-David Dalton
68702ca43f More _.isObject cleanup. 2014-04-28 08:34:54 -07:00
John-David Dalton
54a0de9b52 Make _.merge align with _.assign exit early snippet. 2014-04-28 08:31:54 -07:00
John-David Dalton
94832f3f81 Simplify _.defaults. 2014-04-28 08:31:06 -07:00
John-David Dalton
fb00ba9efd Cleanup _.isObject and _.isRegExp. 2014-04-28 08:30:32 -07:00
John-David Dalton
96736cf1de Tweak _.max, _.min, and trim helper comments. [ci skip] 2014-04-28 08:29:43 -07:00
John-David Dalton
834c55ec6f Add _.escapeRegExp, pad, & trim tests. 2014-04-28 08:28:13 -07:00
John-David Dalton
6528a434ce Add / to characters escaped by _.escapeRegExp 2014-04-28 08:27:47 -07:00
John-David Dalton
a24ee0a331 Update vendor/qunit-extras. 2014-04-28 00:47:21 -07:00
John-David Dalton
e86144bb06 Try mobile browsers with sauce rest api. 2014-04-27 12:01:05 -07:00
John-David Dalton
ce7cb16cfe Rebuild dist. 2014-04-27 11:44:11 -07:00
John-David Dalton
754bafc069 Add doc examples for _.max and _.min for +/-Infinity. [ci skip] 2014-04-27 11:41:09 -07:00
John-David Dalton
7eff6fde7c Avoid RegExp#teat error in older Opera. 2014-04-27 11:41:09 -07:00
John-David Dalton
626dac600a Add more DOM element tests. 2014-04-27 11:41:08 -07:00
John-David Dalton
f1b2d4340d Move the dom/function check up in baseIsEqual. 2014-04-26 08:02:16 -07:00
John-David Dalton
aea4d73e61 Cleanup throbber interval in vendor/qunit-extras. 2014-04-26 08:02:10 -07:00
John-David Dalton
3d6c74ead1 Add list of modern browser version ranges to readme. [ci skip] 2014-04-25 10:06:22 -07:00
John-David Dalton
c606f80fe3 Clarify _.uniq docs on callback. [ci skip] 2014-04-25 10:06:04 -07:00
John-David Dalton
250ca36f05 Ensure _.max and _.min return the correct value when callback computes +/-Infinity. 2014-04-25 07:21:10 -07:00
John-David Dalton
4c63be066f Change wording to retry. 2014-04-24 09:55:17 -07:00
John-David Dalton
b559eeb7e6 Try documented tunnel identifier key over undocumented one. 2014-04-23 23:24:44 -07:00
John-David Dalton
a9742dbdc6 Update ecstatic sauce test dep. 2014-04-23 23:24:38 -07:00
John-David Dalton
5feaade1c7 Correct attempt count in test/saucelabs.js. 2014-04-21 21:49:43 -07:00
John-David Dalton
31747dfecd Rebuild dist. 2014-04-20 13:41:36 -07:00
John-David Dalton
eda9484413 Allow getIndexOf to work when there is no external _.indexOf defined. 2014-04-20 13:40:05 -07:00
John-David Dalton
7e904c1d15 Update tested browsers in sauce. 2014-04-20 13:40:05 -07:00
John-David Dalton
5f8527ba04 Ensure error objects from iframes are tested. 2014-04-20 13:40:05 -07:00
John-David Dalton
082e95b700 Increase test coverage. 2014-04-20 13:40:05 -07:00
John-David Dalton
aef5c61415 Fix missing comma in test/test.js. 2014-04-20 13:40:05 -07:00
John-David Dalton
68fdac532f Liberal use of parentheses. 2014-04-19 12:18:14 -07:00
John-David Dalton
f718284538 Ensure _.keys and _.keysIn always skip the constructor property on prototype objects. 2014-04-19 11:55:07 -07:00
John-David Dalton
966283dd6d Minor test cleanup. [ci skip] 2014-04-19 11:55:07 -07:00
John-David Dalton
0f3ec9ad73 Newline nits. [ci skip] 2014-04-19 11:55:07 -07:00
John-David Dalton
cb685904ef Add _.isError to the features section of the readme. [ci skip] 2014-04-19 11:55:06 -07:00
John-David Dalton
5bf545ee90 Cleanup _.isError and add more tests. 2014-04-19 09:48:51 -07:00
Mike Pennisi
b018ada5c8 Implement _.isError 2014-04-19 09:48:51 -07:00
John-David Dalton
976e81be43 Update vendor/qunit-extras. 2014-04-18 09:24:47 -07:00
John-David Dalton
694cb18256 Add an error message to each TypeError. 2014-04-18 09:12:52 -07:00
John-David Dalton
a715a5fa37 Don't designate \x85 as whitespace. 2014-04-17 21:42:43 -07:00
John-David Dalton
1e10c9d508 Remove more native trim test scaffolding . 2014-04-17 21:42:43 -07:00
John-David Dalton
2aacfea8ea Update tested Chrome version in readme. [ci skip] 2014-04-17 21:42:43 -07:00
John-David Dalton
43c2cb4ba8 Remove unneeded lodashBizarro tests. 2014-04-17 07:33:14 -07:00
John-David Dalton
c93f708bc8 Add whitespace tests. 2014-04-17 07:33:14 -07:00
John-David Dalton
353416a088 Treat \x85 as whitespace. 2014-04-17 07:33:14 -07:00
John-David Dalton
93b98abb8d Remove native trim, trimLeft, & trimRight use. 2014-04-17 07:33:14 -07:00
John-David Dalton
5e28e38c98 Fix assert count. 2014-04-17 07:33:14 -07:00
John-David Dalton
0e828e5b3b Ensure _.difference works with arrays regardless of arg position. 2014-04-16 08:50:16 -07:00
John-David Dalton
c331d12678 Add _.difference, _.intersection, and _.xor tests. 2014-04-16 08:34:11 -07:00
John-David Dalton
f0817b2461 Whitespace nits in test/test.js. [ci skip] 2014-04-16 08:33:16 -07:00
John-David Dalton
d3f2cd5321 Add _.intersection and _.union tests. 2014-04-16 00:25:36 -07:00
John-David Dalton
7017766591 Rebuild dist. 2014-04-15 23:21:37 -07:00
John-David Dalton
841890c178 Add tests for _.pluck, _.findWhere, and _.where for their key or source arguments. 2014-04-15 23:19:39 -07:00
John-David Dalton
4f5189b0dd Use _.noop more in test/test.js. 2014-04-15 23:04:24 -07:00
John-David Dalton
250ecd13bd Avoid != in createCallback. 2014-04-15 22:41:01 -07:00
John-David Dalton
34133b094b Ensure pluck always used property and findWhere and where always use matches. 2014-04-15 22:40:26 -07:00
John-David Dalton
75c3939c88 Simplify _.isEmpty. 2014-04-15 22:13:28 -07:00
John-David Dalton
cb44430a3f Update underscore tests and vendor again. 2014-04-15 17:51:30 -07:00
John-David Dalton
be88b5aba2 Fix error in Firefox < 4. 2014-04-15 17:39:27 -07:00
John-David Dalton
3d0f7b8e7e Make more underscore tests pass. 2014-04-15 09:24:16 -07:00
John-David Dalton
a53d5dc791 Prevent test fails for the npm build. 2014-04-15 02:17:07 -07:00
John-David Dalton
7f1164b6a6 Remove _.isObject use from _.findWhere and _.where. 2014-04-15 01:36:01 -07:00
John-David Dalton
2174f10db5 Excuse invalid underscore _.intersection tests. 2014-04-15 01:21:55 -07:00
John-David Dalton
e3c218092c Add _.findWhere as its own method. 2014-04-15 01:17:55 -07:00
John-David Dalton
cf73ba2905 Update other vendors. 2014-04-15 01:02:14 -07:00
John-David Dalton
d653b951e3 Update vendor/underscore and underscore tests. 2014-04-15 01:01:18 -07:00
John-David Dalton
900c0eafac Use matched instead of found in docs. [ci skip] 2014-04-15 00:56:58 -07:00
John-David Dalton
bf6eaaf625 Make _.where work with empty sources. 2014-04-14 23:11:11 -07:00
John-David Dalton
32f3d214cb Rebuild dist. 2014-04-14 21:39:55 -07:00
John-David Dalton
cd62b2a209 Add more tests for null thisArg arguments. 2014-04-14 21:35:10 -07:00
John-David Dalton
ff25b4cb46 Ensure resolver provided to _.memoize is a function if it's truthy. 2014-04-14 21:33:45 -07:00
John-David Dalton
5c07dd995e Use arrayEach for baseClone, baseMerge, and transform. 2014-04-14 19:53:30 -07:00
John-David Dalton
f54cc28a43 Move doc node from shimIsPlainObject to _.isPlainObject. [ci skip] 2014-04-14 09:01:42 -07:00
John-David Dalton
9b1c7bb1e3 More doc tweaks. [ci skip] 2014-04-13 23:06:17 -07:00
John-David Dalton
ffe8a729b7 Add doc note to _.isPlainObject for objects created by Object.create(null). [closes #526] [ci skip] 2014-04-13 19:03:56 -07:00
John-David Dalton
a47f356021 Cleanup tests. 2014-04-13 19:03:09 -07:00
John-David Dalton
7d7a34c733 Increase code coverage when testing AMD modules. 2014-04-13 16:12:08 -07:00
John-David Dalton
e306959ebe Ensure _.matches is tested against sources with more than one property too. 2014-04-13 00:36:40 -07:00
John-David Dalton
ce16c4d37f Update narwhal, rhino, and ringo source links in travis.yml. 2014-04-12 23:53:18 -07:00
John-David Dalton
565cc05b48 Avoid strict comparison to function reference in _.callback test. 2014-04-12 23:51:55 -07:00
John-David Dalton
287839e498 Add test for custom _.indexOf methods, _.contains, and objects. 2014-04-12 18:57:39 -07:00
John-David Dalton
4be0969098 Rebuild dist. 2014-04-12 17:35:18 -07:00
John-David Dalton
f1008b1abf Simplify _.contains. Thanks @phated. 2014-04-12 17:35:04 -07:00
John-David Dalton
8d8b3c2194 Inline partitionInitializer. 2014-04-12 17:15:17 -07:00
John-David Dalton
6631b57fc0 Case nit in test/saucelabs.js. 2014-04-12 16:51:31 -07:00
John-David Dalton
88b4bc3753 Add comment blocks and browserName helper to test/saucelabs.js. 2014-04-12 01:59:10 -07:00
John-David Dalton
23a4dde10f Update sauce-tunnel require call. 2014-04-12 01:33:00 -07:00
John-David Dalton
5a47eb8559 Rebuild dist. 2014-04-12 01:03:27 -07:00
John-David Dalton
81cd990052 Remove source initialization from matches. 2014-04-12 01:02:58 -07:00
John-David Dalton
dd9e7cf665 Update sauce-tunnel in travis.yml. 2014-04-12 00:57:24 -07:00
John-David Dalton
b2f50b5327 Add mutation notes to _.pull and _.remove. [ci skip] 2014-04-12 00:22:14 -07:00
John-David Dalton
b21fe4b2fc Fix semicolon/comma typo. 2014-04-12 00:00:11 -07:00
John-David Dalton
5f23a3143c Whitespace nits. 2014-04-11 23:48:56 -07:00
John-David Dalton
ef136c9d00 Doc nit for _.pairs. [ci skip] 2014-04-11 23:24:45 -07:00
John-David Dalton
c7e8b724c7 Add arrayEach, arrayEachRight and arrayMap helpers. 2014-04-11 23:24:09 -07:00
John-David Dalton
0243e7ba8b Add partitionInitializer helper. 2014-04-11 23:23:20 -07:00
John-David Dalton
b3f5375283 Ensure functions created by _.matches don't error when comparing falsey object values. [closes #523] 2014-04-10 03:05:08 -07:00
John-David Dalton
f90f683be5 Add doc note to _.isEqual about not supporting comparing DOM nodes or functions. [ci skip] 2014-04-10 01:20:23 -07:00
John-David Dalton
bd23666b45 Ensure _.contains works with a fromIndex for objects. 2014-04-10 00:54:27 -07:00
John-David Dalton
a620c2ec1a Add more falsey value tests. 2014-04-09 09:27:35 -07:00
John-David Dalton
a723612141 Add null and undefined values tests for thisArg. 2014-04-08 08:57:26 -07:00
John-David Dalton
2d7d4212c1 Minor comment nit. [ci skip] 2014-04-08 01:29:55 -07:00
John-David Dalton
52cca034cf Add more _.callback tests. 2014-04-08 01:21:21 -07:00
John-David Dalton
79ec1f5a02 Add JSON.stringify test. 2014-04-08 00:44:20 -07:00
John-David Dalton
68729a9696 Test format cleanup. 2014-04-08 00:43:38 -07:00
John-David Dalton
93383204b3 Rebuild dist. 2014-04-07 09:24:36 -07:00
John-David Dalton
78f17bd083 Add toJSON alias of valueOf. [closes #521] 2014-04-07 09:23:40 -07:00
John-David Dalton
ea87006150 Remove unneeded @type tag from the underscore build. [ci skip] 2014-04-07 00:33:45 -07:00
John-David Dalton
c0027c377b Avoid var conflicts in the support IIFE in minified builds. 2014-04-06 17:39:41 -07:00
John-David Dalton
77b84c1de0 Use ok when appropriate in test/test.js. 2014-04-06 16:16:39 -07:00
John-David Dalton
a14e2fedcf More doc tweaks. [ci skip] 2014-04-06 11:30:47 -07:00
John-David Dalton
0341399e54 Merge pull request #520 from d10/docs
Fix doc typos. [ci skip]
2014-04-06 11:19:05 -07:00
Benjamin Tan
1dcf3585fb Fix typos [ci skip] 2014-04-06 21:47:01 +08:00
John-David Dalton
dbb48cf086 Newline nit fixed by lodash-cli patch. [ci skip] 2014-04-05 23:12:42 -07:00
John-David Dalton
064c8adcf2 Add more _.endsWith and _.startsWith tests. 2014-04-05 00:36:32 -07:00
John-David Dalton
cff83e095a Make _.where return all elements when the props object is empty. 2014-04-05 00:35:43 -07:00
John-David Dalton
ff9aecca48 Add _.startsWith and _.endsWith tests. 2014-04-04 09:07:39 -07:00
John-David Dalton
53c529a12c Cleanup tests. 2014-04-04 09:07:11 -07:00
John-David Dalton
78454ba876 Add more -Infinity, NaN, and Infinity tests. 2014-04-04 00:37:12 -07:00
John-David Dalton
c3c1702d2b Change _.forEach to _.each in tests. 2014-04-04 00:27:43 -07:00
John-David Dalton
bffc777b58 Tweak support property comments and nonEnumArgs test. 2014-04-03 01:31:55 -07:00
John-David Dalton
fcec6a8fdf Replace equal with strictEqual and fix ok test typo. 2014-04-02 19:01:36 -07:00
John-David Dalton
a842f25f89 Rebuild dist. 2014-04-02 02:48:10 -07:00
John-David Dalton
9f2bea8ac1 Wrap support.nonEnumArgs assignment in a try-catch to avoid errors in Ringo, Rhino, and Narwhal. 2014-04-02 02:46:34 -07:00
John-David Dalton
7f9a2a2d34 Ensure _.initial and _.last work with NaN values for n. 2014-04-02 00:40:23 -07:00
John-David Dalton
3225f17f5a Comment and cleanup support properties. 2014-04-01 23:28:56 -07:00
John-David Dalton
2f8b1dff27 Add noglobals=true to some sauce test runs in travis.yml. 2014-04-01 23:28:56 -07:00
John-David Dalton
7884f972ea Remove unused index var and prevent leaking keyIndex var. 2014-04-01 23:28:56 -07:00
John-David Dalton
bfce264537 Cover nonEnumArgs in modern builds too. 2014-04-01 02:04:58 -07:00
John-David Dalton
dee5f4c96a Rebuild dist. 2014-03-31 23:56:37 -07:00
John-David Dalton
6bd83137fb Only check indexes for arrays in _.keysIn dense array support. 2014-03-31 20:57:38 -07:00
John-David Dalton
6c6c38679a Add _.keys and _.keysIn tests. 2014-03-31 20:57:38 -07:00
John-David Dalton
ca0c700afa More adjustments to coerced values. 2014-03-29 19:15:21 -07:00
John-David Dalton
cc2e434f3d Avoid unnecessarily coercing start to a number. 2014-03-29 19:15:21 -07:00
John-David Dalton
4d337f0bee Fix typo in _.once test. 2014-03-29 19:15:21 -07:00
John-David Dalton
539c10883b Add placeholder tests to for _.bindKey. 2014-03-29 19:15:21 -07:00
John-David Dalton
ae8796a570 Tweak var names in _.once tests. 2014-03-29 19:15:20 -07:00
John-David Dalton
141227d846 Add placeholder support to _.curry. 2014-03-29 02:14:27 -07:00
John-David Dalton
bb42b87f4e Make nativeMax style consistent. 2014-03-29 02:14:27 -07:00
John-David Dalton
866d9dacb6 Add isPreBuild flag and cleanup tests. 2014-03-29 02:14:27 -07:00
John-David Dalton
006e32077c Add _.support.nonEnumStrings and coerce key to a number in _.keysIn and shimKeys. 2014-03-28 02:06:40 -07:00
John-David Dalton
0aca1c6c7c Cleanup fromIndex coercions. 2014-03-28 00:24:17 -07:00
John-David Dalton
d906d56505 Add _.keys test for string objects. 2014-03-27 22:17:16 -07:00
John-David Dalton
3b9ebf358c Simplify _.camelCase and add tests. 2014-03-27 22:17:16 -07:00
John-David Dalton
1c643cda5b Remove unused vars. 2014-03-27 13:13:56 -07:00
John-David Dalton
e5697a8070 Ensure _.camelCase handles acronyms and numbers. 2014-03-27 09:22:17 -07:00
John-David Dalton
07f1a13cbf Remove Bitdeli badge. [ci skip] 2014-03-26 19:10:31 -07:00
John-David Dalton
4c88f3ad64 Remove tab as a character to escape in template strings. 2014-03-26 09:02:17 -07:00
John-David Dalton
c099d60393 Fix test title typos. [ci skip] 2014-03-26 02:49:11 -07:00
John-David Dalton
5e0d48b40f Tweak _.union tests. 2014-03-26 02:26:32 -07:00
John-David Dalton
c4f8e83d02 Cleanup test wording. 2014-03-26 02:26:06 -07:00
John-David Dalton
a768c1e6c0 Add _.intersection test for working with only secondary arguments. 2014-03-26 02:24:52 -07:00
John-David Dalton
540325dc20 Rebuild dist. 2014-03-26 02:07:08 -07:00
John-David Dalton
2e57f76c12 Fix perf regression in _.intersection. 2014-03-26 02:03:54 -07:00
John-David Dalton
e71fd6f8b4 Avoid formal param use in _.difference. 2014-03-26 02:03:54 -07:00
John-David Dalton
c721721fc5 Ensure sparse arrays are treated as dense by _.keys and _.keysIn and ensure support for string objects in _.keys and _.keysIn. 2014-03-25 09:26:20 -07:00
John-David Dalton
0ab5d6a7b8 Merge branch 'master' of github.com:lodash/lodash 2014-03-25 07:30:07 -07:00
John-David Dalton
66599e5770 Merge pull request #510 from d10/docs
More doc cleanup. [ci skip]
2014-03-25 07:27:12 -07:00
Benjamin Tan
d7c7463380 Improve docs [ci skip] 2014-03-25 22:13:15 +08:00
Benjamin Tan
491a4468dc Formalize all instances of meta data as metadata [ci skip] 2014-03-25 22:11:57 +08:00
John-David Dalton
c85150aaea Merge branch 'master' of github.com:lodash/lodash 2014-03-24 22:22:20 -07:00
John-David Dalton
c7ba6d2a82 Update link to curry post in readme. [ci skip] 2014-03-24 22:11:54 -07:00
John-David Dalton
ace64cf50f Merge pull request #509 from d10/chain
Simplify `_.chain`.
2014-03-24 21:57:14 -07:00
John-David Dalton
cd6d4f6f47 Merge pull request #508 from d10/docs
Docs improvements. [ci skip]
2014-03-24 21:48:17 -07:00
Benjamin Tan
1bdf74951a Simplify _.chain 2014-03-25 11:30:06 +08:00
Benjamin Tan
eda2b38f46 Update Underscore license year [ci skip] 2014-03-25 11:26:12 +08:00
Benjamin Tan
f14e85d6c4 Update docs [ci skip] 2014-03-25 11:25:10 +08:00
John-David Dalton
76f668dddd Add tests for _.map, _.invoke, _.shuffle, and _.sortBy for treating numbers as empty. 2014-03-24 09:14:28 -07:00
John-David Dalton
ce01d696a0 Add _.isEqual test for arguments objects and tweak phantom detection. 2014-03-23 16:31:35 -07:00
John-David Dalton
8179a3a349 Rebuild dist. 2014-03-23 15:00:02 -07:00
John-David Dalton
e5c397203e Fix baseIsEqual in Rhino, Ringo, Narwhal. 2014-03-23 14:59:46 -07:00
John-David Dalton
60aeba732d Adjust _.camelCase, _.kebabCase and _.snakeCase doc examples and tests. 2014-03-23 14:38:39 -07:00
John-David Dalton
de70ef1ef6 Remove a and b use from baseIsEqual. 2014-03-23 14:20:05 -07:00
John-David Dalton
1d02c288b3 Avoid a, b variable names and cleanup _.isEqual docs. 2014-03-22 23:18:54 -07:00
John-David Dalton
3776920807 Update vendor/jquery 2014-03-21 21:22:00 -07:00
John-David Dalton
7d54cde8eb Add chalk to test/saucelabs.js. 2014-03-21 01:01:37 -07:00
John-David Dalton
1bab2061bd Avoid ^ caret use in travis until they update npm. 2014-03-20 20:56:24 -07:00
John-David Dalton
34e30cba0d More cleanup in test/saucelabs.js. 2014-03-20 19:32:31 -07:00
John-David Dalton
ed600c9077 Comment nit. [ci skip] 2014-03-19 23:46:52 -07:00
John-David Dalton
30dc6d2b19 Rewrite test/saucelabs.js. 2014-03-19 19:31:45 -07:00
John-David Dalton
77c3b4636e Update supported Firefox version in readme. [ci skip] 2014-03-18 22:43:53 -07:00
John-David Dalton
25edcbaff9 Rebuild dist. [ci skip] 2014-03-18 22:43:19 -07:00
John-David Dalton
553b8fb2e0 Add Underscore _.now test to the excused list. 2014-03-17 07:51:21 -07:00
John-David Dalton
461b401e28 Remove unneeded parenthesis from .travis.yml. 2014-03-17 01:21:46 -07:00
John-David Dalton
d2a4611d1e Update vendor/backbone and vendor/requirejs. 2014-03-17 00:43:13 -07:00
John-David Dalton
65c3dbba2c Update .travis.yml dependencies. 2014-03-17 00:20:51 -07:00
John-David Dalton
7ef0b5b428 Remove legacy and mobile from .gitignore. [ci skip] 2014-03-16 23:41:03 -07:00
John-David Dalton
89589d7ef5 Add doc notes for deprecated arguments of _.first, _.initial, _.last, and _.rest. [ci skip] 2014-03-16 20:56:00 -07:00
John-David Dalton
70b782c7e7 Use the argument predicate instead of func for _.negate. 2014-03-16 18:20:42 -07:00
John-David Dalton
9732b0a636 Add more methods to the features section of the README. [ci skip] 2014-03-16 18:01:35 -07:00
John-David Dalton
00acaa56b9 Update tested Chrome version range in README. [ci skip] 2014-03-16 17:15:47 -07:00
John-David Dalton
1cea2be9c1 Rebuild dist. 2014-03-16 14:51:21 -07:00
John-David Dalton
94381bd899 Clarify _.isEmpty and add tests for array-like objects for _.isEmpty and _.size. 2014-03-16 14:48:02 -07:00
John-David Dalton
23d935d7ec Add maxSafeInteger to tests and rename LARGE_ARRAY_SIZE to largeArraySize. 2014-03-16 14:48:02 -07:00
John-David Dalton
69da13b261 Simplify _.find by having it use _.findIndex. 2014-03-16 14:48:02 -07:00
John-David Dalton
a6519e0ff7 Whitespace nit. [ci skip] 2014-03-16 14:48:02 -07:00
John-David Dalton
b701a36e21 Comment nits. [ci skip] 2014-03-16 11:08:17 -07:00
John-David Dalton
24a34088d8 Add baseFind to simplify _.find, _.findLast, _.findKey, _.findLastKey. 2014-03-16 11:07:20 -07:00
John-David Dalton
0eeb092aad Add large array test for _.intersection that tests large arrays combined with missing arguments. 2014-03-16 01:27:05 -07:00
John-David Dalton
7d4726d12e Cleanup large array tests. 2014-03-16 01:01:09 -07:00
John-David Dalton
e13bf164ea Rebuild dist. 2014-03-15 04:02:03 -07:00
John-David Dalton
07434b19ae Ensure find methods work with strings. 2014-03-15 04:00:14 -07:00
John-David Dalton
819fa88eb7 Ensure _.find and _.findLast pass "Collections" tests for the compat build. 2014-03-15 02:41:37 -07:00
John-David Dalton
95976814f5 Add array-like tests for "Collections" methods. 2014-03-15 02:40:55 -07:00
John-David Dalton
0a2dd2a330 Avoid returning assignDefaults if no object is provided to _.defaults. 2014-03-15 01:21:43 -07:00
John-David Dalton
65f125d998 Allow null or undefined elements in _.pluck, _.property, and _.invoke. 2014-03-15 01:21:43 -07:00
John-David Dalton
7a2f6ebfd5 Remove toLength. 2014-03-14 09:43:22 -07:00
John-David Dalton
5d89fa3f07 Rebuild dist. 2014-03-14 01:32:19 -07:00
John-David Dalton
4a66e28584 Tweak support.nonEnumArgs assignment. 2014-03-14 01:30:30 -07:00
John-David Dalton
85990bbeb3 Add toLength helper. 2014-03-14 01:25:57 -07:00
John-David Dalton
e0311e1530 Cleanup ticks in method docs. [ci skip] 2014-03-14 01:12:34 -07:00
John-David Dalton
6eb4dbf9cd Add slow path note to _.times with thisArg benchmark. [ci skip] 2014-03-14 00:48:33 -07:00
John-David Dalton
a90453461e Adjust fromIndex and length coercions. 2014-03-13 09:28:38 -07:00
John-David Dalton
7e04c9a909 Fix the Underscore build of _.random. 2014-03-13 01:27:22 -07:00
John-David Dalton
e51602ccfa Update vendor/qunit-extras. 2014-03-13 00:33:33 -07:00
John-David Dalton
ca7adb59db Rebuild dist. 2014-03-13 00:18:13 -07:00
John-David Dalton
3a12802a4b Use shorthand for package.json "repository" field. [ci skip] 2014-03-13 00:10:11 -07:00
John-David Dalton
c770eab3e3 Move _.range to the Utilities category. 2014-03-13 00:03:45 -07:00
John-David Dalton
079b8e7337 Reduce _.find, _.findLast, and _.defaults. 2014-03-12 23:50:55 -07:00
John-David Dalton
2e4593eee7 Update vendors benchmark.js and qunit-extras. 2014-03-12 09:27:51 -07:00
John-David Dalton
3ca80a7bf3 Ensure _.slice coerces start and end arguments appropriately. 2014-03-12 09:11:29 -07:00
John-David Dalton
a4c15e5fa5 Add doc examples for isXyz methods. [ci skip] 2014-03-12 00:37:39 -07:00
John-David Dalton
a40748e3aa Add _.range tests for NaN values for start and end arguments. 2014-03-12 00:30:01 -07:00
John-David Dalton
029aac8059 Cleanup type coercions. 2014-03-12 00:29:31 -07:00
John-David Dalton
2970f66218 Add chars test for pad methods. 2014-03-11 01:04:42 -07:00
John-David Dalton
ef238de7a7 Rebuild dist. 2014-03-11 00:57:48 -07:00
John-David Dalton
af05313dc5 Add unit tests for _.camelCase, _.kebabCase, and _.snakeCase. 2014-03-10 23:57:32 -07:00
John-David Dalton
df0d1b57a0 Fix _.camelCase with consecutive capitalized words. 2014-03-10 23:57:24 -07:00
John-David Dalton
23cff25ed5 Make the code style in test.js consistent. 2014-03-10 23:55:28 -07:00
John-David Dalton
c70b13a650 Clamp indexes and lengths where appropriate. 2014-03-10 21:59:09 -07:00
John-David Dalton
a51c6a7670 Fix minified compat/modern builds. 2014-03-10 09:34:13 -07:00
John-David Dalton
0bdb643e14 Close _.difference test coverage gap. 2014-03-10 01:14:11 -07:00
John-David Dalton
0cbbbf1287 Tweak wording on tests for options objects. [ci skip] 2014-03-10 01:13:34 -07:00
John-David Dalton
9a00b62d28 Add _.pad, _.padLeft, _.padRight, _.repeat, and _.truncate tests. 2014-03-10 01:12:27 -07:00
John-David Dalton
05dce760d6 Ensure _.truncate doesn't truncate strings if they are equal to the given length. 2014-03-10 01:11:08 -07:00
John-David Dalton
4eaf91c3dc Optimize _.without in IE. 2014-03-09 20:58:46 -07:00
John-David Dalton
818c3d6140 Add the development underscore build to the test-ui dropdown list. 2014-03-09 20:28:04 -07:00
John-David Dalton
5e19cd0084 Remove legacy/mobile tests. 2014-03-09 20:23:59 -07:00
John-David Dalton
7b06257955 Remove legacy and mobile builds from travis.yml tests. 2014-03-09 18:23:00 -07:00
John-David Dalton
2af21c8003 Remove duplicate isArguments method and movenegate to the "Functions" category. 2014-03-09 12:56:17 -07:00
John-David Dalton
db6f907946 Correct underscore builds. 2014-03-09 12:25:33 -07:00
John-David Dalton
125ed8bff2 Add object values to secondary arguments tests for _.difference, _.intersection, _.union, and _.xor. 2014-03-09 12:25:19 -07:00
John-David Dalton
1d0f2e9d31 Rebuild dist. 2014-03-08 19:59:39 -08:00
John-David Dalton
43efc930f4 Use args in _.merge where possible. 2014-03-08 19:51:17 -08:00
John-David Dalton
737e18d2de Ensure _.intersection handles non-array secondary values correctly. 2014-03-08 16:36:05 -08:00
John-David Dalton
445445603f Remove _.isObject dep from _.merge and ensure _.assign and _.defaults don't error when object is null or undefined and source objects are provided. 2014-03-08 13:16:47 -08:00
John-David Dalton
5957c94958 Use _.constant where possible to cleanup tests. 2014-03-08 12:59:11 -08:00
John-David Dalton
1c41661712 Add npm package.json scripts entry to echo testing instructions. [ci skip] 2014-03-08 01:08:45 -08:00
John-David Dalton
1b2909605e Further reduce browser ranges to test in readme. [ci skip] 2014-03-07 23:50:21 -08:00
John-David Dalton
c6a13f970f Remove iteratorTemplate and compiled methods. 2014-03-07 23:28:55 -08:00
John-David Dalton
f2f57dc5a5 Deopt _.invoke. 2014-03-06 00:45:01 -08:00
John-David Dalton
c6de1ab56c Add _.negate, _.keysIn and _.valuesIn. 2014-03-06 00:42:51 -08:00
John-David Dalton
0392e37eed Lots of doc tweaks. [ci skip] 2014-03-06 00:22:21 -08:00
John-David Dalton
f630c4ec6c Reduce browser ranges to test in readme. [ci skip] 2014-03-05 08:35:00 -08:00
John-David Dalton
e668642b23 Fix newly added string methods/docs. 2014-03-05 01:23:20 -08:00
John-David Dalton
c4c0c050af Make_.dropRight, _.dropRightWhile, _.takeRight, and _.takeRightWhile their own methods. 2014-03-04 09:40:48 -08:00
John-David Dalton
b4ff8360ba Add more string methods to the features note in readme. [ci skip] 2014-03-04 01:21:54 -08:00
John-David Dalton
708a2ec703 Minor whitespace nits. [ci skip] 2014-03-04 01:17:20 -08:00
John-David Dalton
407cb2f7e6 Rebuild dist. 2014-03-04 01:03:23 -08:00
John-David Dalton
0b22e76b85 Separate out _.drop, _.dropWhile, _.take, and _.takeWhile and modify docs to use "predicate" where appropriate. 2014-03-04 01:03:23 -08:00
John-David Dalton
7671187160 Change truey to truthy in docs. [ci skip] 2014-03-04 01:03:00 -08:00
John-David Dalton
5695e0e6b6 Escape a few more characters for in _.escapeRegExp for better narwhal/ringo/rhino support. 2014-03-03 09:18:49 -08:00
John-David Dalton
e22b2f00dc Rebuild dist files. [ci skip] 2014-03-03 01:49:30 -08:00
John-David Dalton
2a017c3a7c Add support for _.camelCase, _.endsWith, _.escapeRegExp, _.kebabCase, _.pad, _.padLeft, _.padRight, _.repeat, _.snakeCase, _.startsWith, and _.truncate. [closes #425] 2014-03-02 23:48:48 -08:00
John-David Dalton
ce65c3113a Simplify component.json. 2014-03-02 13:47:07 -08:00
John-David Dalton
65a2ebb8ad Don't send test coverage results to coveralls for pull requests. 2014-03-01 00:46:44 -08:00
John-David Dalton
f0a542b154 Add to lodash chaining doc note. [ci skip] 2014-02-28 19:45:54 -08:00
John-David Dalton
dfe1c940bc Add partial application in _.bind to _.curry partial combo test. 2014-02-27 00:18:50 -08:00
John-David Dalton
3cd8708368 Build docs & dist including whitespace adjustments. 2014-02-26 00:30:27 -08:00
John-David Dalton
e677161e49 Remove more code from the Underscore build. 2014-02-25 08:44:33 -08:00
John-David Dalton
818c6711d8 Cleanup _.first, _.initial, _.last, and _.rest. 2014-02-24 22:40:26 -08:00
John-David Dalton
f60cc76f3e Reduce the Underscore build. 2014-02-24 22:39:56 -08:00
John-David Dalton
685321fdc5 Rebuild docs and dist. 2014-02-24 08:55:49 -08:00
John-David Dalton
303215d42f Add common case paths to _.difference and _.uniq. 2014-02-24 08:52:11 -08:00
John-David Dalton
f313752888 Update large array benchmarks in perf.js. [ci skip] 2014-02-23 21:59:16 -08:00
John-David Dalton
28b83a486e Add placeholder support tests for _.bind. 2014-02-22 20:59:02 -08:00
John-David Dalton
80289bd452 Update the tested node version in readme. [ci ckip] 2014-02-22 19:20:31 -08:00
John-David Dalton
054be39feb Add a test for _.uniq with isSorted. 2014-02-22 19:20:14 -08:00
John-David Dalton
6448e049d1 Tweak ticks around "callback" in test titles. [ci skip] 2014-02-22 19:16:00 -08:00
John-David Dalton
8e1f7c8d6f Rebuild docs and dist. 2014-02-22 18:12:34 -08:00
John-David Dalton
c4e31e7a58 Minor comment nits for -0 and +0. [ci skip] 2014-02-22 18:04:26 -08:00
John-David Dalton
0860d9712e Add test to ensure _.flatten returns empty arrays for non array-like objects. 2014-02-22 17:19:20 -08:00
John-David Dalton
1a17cbd26b Cleanup the callback assignment in _.clone and _.cloneDeep. 2014-02-22 17:11:22 -08:00
John-David Dalton
c2b1d3b551 Add falsey value optimizations for baseDifference, baseFlatten, baseUniq, _.flatten, and _.uniq. 2014-02-22 17:10:34 -08:00
John-David Dalton
d4fac798fc Optimize _.isEqual for primitives. 2014-02-22 17:08:28 -08:00
John-David Dalton
b009b23245 Merge pull request #486 from rexxars/indexby-thisarg-docfix
Fixed `_.indexBy` `thisArg` example in documentation. [ci skip]
2014-02-22 10:03:19 -08:00
Espen Hovlandsdal
f276f1e2f5 Fixed _.indexBy() thisArg example in documentation 2014-02-22 11:43:21 +01:00
John-David Dalton
154e57748f Cleanup low and high assignment in _.sortedIndex. [ci skip] 2014-02-21 23:42:40 -08:00
John-David Dalton
6854fee73e Remove array and object pools. 2014-02-21 22:26:17 -08:00
John-David Dalton
24240bfba4 Simplify baseUniq. 2014-02-21 18:01:49 -08:00
John-David Dalton
40e32daabe Fix _.template doc typo. [closes #484] [ci skip] 2014-02-21 08:32:15 -08:00
John-David Dalton
008cbc8972 Add the version of Underscore our underscore build aligns to in readme. [ci skip] 2014-02-20 22:46:42 -08:00
John-David Dalton
8a1d2b614a Templates should not reference _.escape if "escape" delimiters are not used. [closes #484] 2014-02-20 22:31:42 -08:00
John-David Dalton
b79d03d9a4 Reorganize _.template tests. 2014-02-20 22:08:29 -08:00
John-David Dalton
83fb9f84ed Rebuild docs & dist. 2014-02-18 23:10:31 -08:00
John-David Dalton
c634830b9f Reduce passing arguments to helper functions by converting them to arrays. 2014-02-18 22:49:37 -08:00
John-David Dalton
24edd68833 Fix compseArgs and composeArgsRight and cleanup and correct partial placeholder tests. 2014-02-16 16:06:16 -08:00
John-David Dalton
6913798250 Fix doc typos in _.template. [ci skip] 2014-02-16 01:06:27 -08:00
John-David Dalton
131bd2c2cd Cleanup tests. 2014-02-15 22:03:33 -08:00
John-David Dalton
55ae55c803 Add more details to the _.template docs. [ci skip] [closes #472] 2014-02-15 19:28:19 -08:00
John-David Dalton
63f0eea70c Fix AMD test fails for Underscore builds. [ci skip] 2014-02-15 18:29:01 -08:00
John-David Dalton
38aeef0760 Update Backbone tests. 2014-02-15 15:22:41 -08:00
John-David Dalton
88d5f5d76c Update Backbone tests to 1.1.1. 2014-02-15 14:32:56 -08:00
John-David Dalton
486ba5fe0a Avoid packages config for monolithic modules in tests. 2014-02-15 14:22:09 -08:00
John-David Dalton
76f85389ae Update underscore builds. 2014-02-15 13:39:28 -08:00
John-David Dalton
3d311496e0 Remove placeholder support from non-underscore builds. 2014-02-15 13:39:03 -08:00
John-David Dalton
fdbfe0f84b Update vendor/curl. 2014-02-15 01:17:11 -08:00
John-David Dalton
8a25592904 Update test files to work with underscore builds defined as named amd modules. 2014-02-15 01:17:00 -08:00
John-David Dalton
7edf024c71 Fix test fails in Rhino. 2014-02-14 01:36:25 -08:00
John-David Dalton
ee4d9890e7 Add placeholder support to _.bind, _.partial, and _.partialRight. 2014-02-14 01:36:15 -08:00
John-David Dalton
9cc06a94ec Add a module id of "underscore" to the Underscore build. 2014-02-14 00:06:08 -08:00
John-David Dalton
dd6dc1d334 Test cleanup. 2014-02-13 22:29:25 -08:00
John-David Dalton
fb2bafb49e Ensure _.throttle & _.debounce work if the system time is set backwards. 2014-02-13 22:26:26 -08:00
Benjamin Tan
bc3b8e73fe Fix minor typo [ci skip] 2014-02-13 00:16:53 -08:00
John-David Dalton
4d48441102 Tweak features bullets in readme. [ci skip] 2014-02-12 19:51:14 -08:00
John-David Dalton
c0fa980f70 Add new feature notes to its section in readme. [ci skip] 2014-02-12 09:15:58 -08:00
John-David Dalton
bb3bac9933 Remove extra var from createWrapper. 2014-02-11 23:52:34 -08:00
John-David Dalton
1ac5fa544b Update qunit-extras to respect QUnit.config.hidepassed. 2014-02-11 23:35:29 -08:00
John-David Dalton
91bb4d4b00 Remove node 0.6 fix from travis.yml as travis-ci now does it for us. 2014-02-11 21:20:04 -08:00
John-David Dalton
aecdd0fdd5 Add _.matches test and cleanup _.property and _.constant tests. 2014-02-11 21:07:28 -08:00
John-David Dalton
2e5f3cd25c Cleanup docs in _.matches and _.where. [ci skip] 2014-02-11 21:06:58 -08:00
John-David Dalton
8558c55284 Add v8 issue note to parseInt and make other v8 issue use the same protocol. [ci skip] 2014-02-11 19:00:01 -08:00
John-David Dalton
b16b49aea4 Fix copyright header in lodash.compat.js and lodash.min.js files. [ci skip] 2014-02-11 18:23:06 -08:00
John-David Dalton
09678eeef4 Update Underscore version in doc header. [ci skip] 2014-02-11 17:53:17 -08:00
John-David Dalton
fad43842a4 Rebuild docs and dist. 2014-02-11 00:39:05 -08:00
John-David Dalton
4b448a877c Update vendor/underscore to v1.6.0. 2014-02-11 00:38:32 -08:00
John-David Dalton
f090af2292 Rename _.match to _.matches. 2014-02-11 00:35:05 -08:00
John-David Dalton
7faaac94dd Update vendor/bechmark.js. [ci skip] 2014-02-11 00:35:05 -08:00
John-David Dalton
dae0b25717 Revert allowing _.omit and _.pick to work as a callback for _.map when combined with _.partialRight to be solved with _.partial placeholders in v3. 2014-02-10 00:32:10 -08:00
John-David Dalton
de3d9dca72 Minor doc tweaks to _.partition and _.zip. [ci skip] 2014-02-09 00:32:58 -08:00
John-David Dalton
a91abb3e8d Add _.partition. 2014-02-08 23:27:04 -08:00
John-David Dalton
dabea8b972 Update vendors. 2014-02-08 19:00:37 -08:00
John-David Dalton
dedffb3560 Reduce code in doc code examples. [ci skip] 2014-02-08 18:51:08 -08:00
John-David Dalton
5eb2306e9a Remove sauce labs hook, global_test_results, to add it to QUnit Extras. 2014-02-07 21:26:28 -08:00
John-David Dalton
8a2e06a713 Simplify _.every and _.some. 2014-02-06 09:06:35 -08:00
John-David Dalton
23b495aee8 Fix _.every test in perf/perf.js. 2014-02-06 09:05:41 -08:00
John-David Dalton
b9d314e64c Rebuild dist/docs. 2014-02-05 22:21:47 -08:00
John-David Dalton
5a4826e660 Optimize _.callback. 2014-02-05 22:05:03 -08:00
John-David Dalton
20bf67d352 Cleanup _.result. 2014-02-05 21:31:56 -08:00
John-David Dalton
8b4f1e1383 Fix basename in perf/perf.js. [ci skip] 2014-02-05 09:03:31 -08:00
John-David Dalton
20297e359d Rebuild docs/dists and update tested browsers in readme. 2014-02-05 00:05:05 -08:00
John-David Dalton
de7409fd07 Ensure functions can be used as default values for _.result. 2014-02-04 23:50:37 -08:00
John-David Dalton
8498f12a9d Avoid setting arity/processing args if func is not passed to methods like _.bind. 2014-02-04 23:02:32 -08:00
John-David Dalton
e949eb8623 Minor nit, add default greeting to bind benchmark. [ci skip] 2014-02-04 22:59:05 -08:00
John-David Dalton
201d17bc31 Allow _.omit and _.pick to work as a callback for _.map when combined with _.partialRight. 2014-02-04 00:57:26 -08:00
John-David Dalton
143e9bd210 Reduce code samples for _.assign and _.defaults. [ci skip] 2014-02-03 21:32:41 -08:00
John-David Dalton
9ec874d8a6 Add _.isEqual test for being used as a callback for _.every. 2014-02-03 21:32:02 -08:00
John-David Dalton
2543afebf1 Optimize _.invoke for arrays. 2014-02-02 19:45:39 -08:00
John-David Dalton
81a859604c Update vendors and the tested Node version in the readme. [ci skip] 2014-02-02 17:54:27 -08:00
John-David Dalton
d3be4bba37 Add _.isEqual test to ensure regexes are compared regardless of flag order. 2014-02-02 00:01:27 -08:00
John-David Dalton
6779c9eb36 Reduce the complexity of a minor Underscore build optimization. 2014-01-31 09:12:50 -08:00
John-David Dalton
733da570c8 Revert the backtick escape/unescape patch but keep the docs. 2014-01-31 02:05:43 -08:00
John-David Dalton
65258d5b6a Add doc note about escaping backticks. [ci skip] 2014-01-31 01:52:38 -08:00
John-David Dalton
618c8bb5ad Add ` as a character to escape/unescape and a doc note on unquoted html attribute values. 2014-01-30 09:38:01 -08:00
John-David Dalton
ba8684dfc7 Rebuild /dist files. 2014-01-30 08:46:51 -08:00
John-David Dalton
36a1bd9e0f Move browser field in package.json. [ci skip] 2014-01-30 08:46:34 -08:00
John-David Dalton
fe56c1c6f2 Make default BUILD="compat" in travis.yml. [ci skip] 2014-01-30 08:43:35 -08:00
John-David Dalton
86a37e6f8d Minor whitespace nits. [ci skip] 2014-01-30 01:37:17 -08:00
John-David Dalton
da1aad7b92 Add baseEachRight and baseForOwnRight. 2014-01-30 01:36:30 -08:00
John-David Dalton
876621f8af Merge pull request #466 from aearly/patch-1
Add "browser" field in package.json for Browserify. [ci kip]
2014-01-29 13:50:46 -08:00
Alexander Early
8a908b720f Add "browser" field for Browserify
Browserify and other CJS builders will look for a "browser" field to use as an alternate "main" when targeting the browser environment.

https://github.com/substack/node-browserify#packagejson

Pointing it to the compat build would prevent issues like #288 happening out of the box, without any extra configuration.
2014-01-29 13:33:50 -08:00
John-David Dalton
dadde52c40 More perf.js cleanup and add _.compose benchmarks. [ci skip] 2014-01-29 09:33:46 -08:00
John-David Dalton
369dd98cbe Avoid installing coveralls in travis runs when not needed. 2014-01-29 08:57:14 -08:00
John-David Dalton
8cdd6cd131 Fix test/test.js in lodash-node and carry fixes over to perf/perf.js. 2014-01-29 08:57:14 -08:00
John-David Dalton
973bc21f37 Add note to contributing.md to not worry about regenerating docs or dist files. [ci skip] 2014-01-29 08:56:55 -08:00
John-David Dalton
2ba327345d Fix underscore build modifications to match. 2014-01-29 01:44:09 -08:00
John-David Dalton
138ecc4ee1 Simplify resolving filePath in perf/perf.js. [ci skip] 2014-01-29 00:29:57 -08:00
John-David Dalton
5b9a8e9bf9 Fix tests for lodash-amd. 2014-01-29 00:29:50 -08:00
John-David Dalton
e520486892 Rebuild dist/ and docs. 2014-01-28 23:41:44 -08:00
John-David Dalton
ecb91613e8 Minor whitespace nits in _.compose and _.pull. [ci skip] 2014-01-28 23:38:29 -08:00
John-David Dalton
d4ac76081e Correct _.compose unit test. 2014-01-28 23:38:29 -08:00
John-David Dalton
63727b67ee Cleanup _.compose. 2014-01-28 22:14:10 -08:00
John-David Dalton
d969dcecbf Set LARGE_ARRAY_SIZE to 40. 2014-01-28 22:05:50 -08:00
John-David Dalton
49c9a202e0 Cleanup perf tests and adjust for LARGE_ARRAY_SIZE of 40. 2014-01-28 22:05:50 -08:00
Stephen Solka
512c8de526 Use .apply for initial function call in _.compose then use .call in loop. [closes #463, #464] 2014-01-28 22:05:19 -08:00
John-David Dalton
012a929067 Add _.cloneDeep doc note to _.clone too. [ci skip] 2014-01-27 21:59:26 -08:00
John-David Dalton
bec4e8d8e4 Fix lodash-node unit tests. 2014-01-27 21:50:50 -08:00
John-David Dalton
9f0993f29b Fix setting the selectedIndex of dropdown lists in test-ui.js and perf-ui.js. 2014-01-27 21:49:38 -08:00
John-David Dalton
1b79448ac2 Add _.zipObject test for extra values. 2014-01-27 20:00:47 -08:00
John-David Dalton
6cef7d5060 Ensure _.where handles properties with undefined properties. [closes #461] 2014-01-27 17:53:10 -08:00
John-David Dalton
752545ec0e Minor doc nit for _.runInContext. [ci skip] 2014-01-26 14:44:11 -08:00
John-David Dalton
adbebf7ecc Avoid detecting the global function in Java based environments like Rhino as the freeGlobal. 2014-01-26 13:37:31 -08:00
John-David Dalton
4d57ac0ce1 Avoid detecting the global function in Java based environments like Rhino as the freeGlobal. 2014-01-26 13:27:39 -08:00
John-David Dalton
24b77d9dcb Minor code format nit in test.js. [ci skip] 2014-01-26 13:27:01 -08:00
John-David Dalton
cc0f431c35 Minor comment nit for consistency across projects. [ci ckip] 2014-01-25 22:48:12 -08:00
John-David Dalton
1e7927fbff Consistent use of getConfig in test/index.html and test/underscore.html. 2014-01-25 19:52:49 -08:00
John-David Dalton
129e56e570 Avoid accessing body.completed if body isn't truey in saucelabs.js. 2014-01-25 18:12:00 -08:00
John-David Dalton
5beef690ad Fix loading baseEach for commonjs modularize tests. 2014-01-25 18:11:25 -08:00
John-David Dalton
b0383b0978 Update freeGlobal assignment in lodash builds, benchmark.js, and qunit-extras to work in node-webkit. [closes #419] 2014-01-25 17:02:27 -08:00
John-David Dalton
16c6a11b77 Replace _.createCallback reference in readme with _.callback. [ci skip] 2014-01-25 11:00:30 -08:00
John-David Dalton
9117b13576 Rebuild dist & docs. [ci skip] 2014-01-25 11:00:18 -08:00
John-David Dalton
af55978918 Minor test cleanup. [ci skip] 2014-01-25 10:25:50 -08:00
John-David Dalton
0446a1b3a8 Tweak documented arg name key for _.pluck. [ci skip] 2014-01-25 02:52:14 -08:00
John-David Dalton
3986dd4c32 Add baseEach tests. 2014-01-25 02:48:41 -08:00
John-David Dalton
79afa16a7f Fix test fails in older Safari and cleanup setProperty in test.js. 2014-01-24 23:16:07 -08:00
John-David Dalton
087ed0aa6a Update vendor/qunit-extras and simplify its load/install. 2014-01-24 09:42:45 -08:00
John-David Dalton
44fa3d2d07 Fix typo in throttle test. 2014-01-24 00:52:38 -08:00
John-David Dalton
8654d83a33 Drop 'use strict' in the unit tests and make its IIFE more closely resemble lodash's. 2014-01-23 23:19:13 -08:00
John-David Dalton
efb78c823c Add _.memoize test and normalize on using properties of a and b instead of x and y. 2014-01-23 23:00:49 -08:00
John-David Dalton
3bb7f0c291 Fix regression in test-ui.js. [ci skip] 2014-01-23 09:17:53 -08:00
John-David Dalton
62e0db7c9b Fix Function.prototype.toString mock in test/ to avoid errors in Firefox. 2014-01-23 00:30:59 -08:00
John-David Dalton
130695fcb3 Remove trailing slash in locationPath of test/underscore.html. 2014-01-23 00:30:24 -08:00
John-David Dalton
05fa301ecb Add freeGlobal.self checks to benchmark.js and quinit-extras to support browserified code running in a web worker. 2014-01-22 23:48:29 -08:00
Michael "Z" Goddard
ee90f730b5 Add freeGlobal.self check to support browserified code running in a web worker.
`self` is the global context name in web workers. So
`freeGlobal.self === freeGlobal` is `true` in that environment when
lodash is packaged in a library/site for use in web workers.
2014-01-22 23:38:36 -08:00
John-David Dalton
7b8a23453f Cleanup lodashBizarro code to get coverage up in AMD modules. 2014-01-22 23:09:42 -08:00
John-David Dalton
cb44479420 Add freeGlobal.self check to test/asset/set.js. 2014-01-22 23:07:50 -08:00
John-David Dalton
afb3806326 Cleanup the perf and test ui files. 2014-01-22 23:04:10 -08:00
John-David Dalton
d96bfd21b7 Comment nit in the underscore build. [ci skip] 2014-01-22 11:40:43 -08:00
John-David Dalton
bbc3100bb3 Add _.callback as an alias of _.createCallback. 2014-01-22 08:54:25 -08:00
John-David Dalton
ac1bb2a6bd Rebuild docs and updated tested Chrome version in readme. [ci skip] 2014-01-22 00:27:50 -08:00
John-David Dalton
41ef391d15 Avoid leaking a data var in compat/legacy builds and remove dead code from the underscore build. 2014-01-22 00:26:45 -08:00
John-David Dalton
e51aa5899a Dumb _.curry down for consistent feature support for old environments. 2014-01-21 22:25:08 -08:00
John-David Dalton
38bb975abd Allow legacy build tests to pass. 2014-01-21 20:49:44 -08:00
John-David Dalton
a249b315ca Make breakIndicator use expando in underscore builds. 2014-01-21 19:59:59 -08:00
John-David Dalton
eba85e1ec3 Update vendor/qunit-extras. [ci skip] 2014-01-21 19:59:31 -08:00
John-David Dalton
c1c92256ea Track arity of functions created by _.bind, _.bindKey, _.bindAll, _.partial, _.partialRight, _.curry, and _.wrap. 2014-01-21 19:59:13 -08:00
John-David Dalton
58ce97c0b4 Ensure _.flatten works with _.map in underscore builds. 2014-01-20 11:33:31 -08:00
John-David Dalton
ca58bab1f0 Cleanup assign/defaults/merge unit test. [ci skip] 2014-01-20 09:31:55 -08:00
John-David Dalton
052c484abd Update .travis.yml dep versions and make coveralls reporting optional so we don't fail when their service is down. 2014-01-20 08:46:53 -08:00
John-David Dalton
7a213c9d6f Fix test typo in test/index.html. 2014-01-20 00:39:40 -08:00
John-David Dalton
f4de7422b3 Fix large array optimization in baseDifference. 2014-01-20 00:39:20 -08:00
John-David Dalton
a3d18d0429 Add coverage for Set for environments w/o native support. 2014-01-19 23:52:27 -08:00
John-David Dalton
77fbffdc4b Use baseEach in underscore build of _.sortBy. 2014-01-19 13:41:15 -08:00
John-David Dalton
63ea01104b Conditionally define createCache base on feature inference. 2014-01-19 13:27:23 -08:00
John-David Dalton
cad0f1f396 Ensure we use an underscore build of _.result. 2014-01-19 12:28:25 -08:00
John-David Dalton
677fb93494 Use baseEach, baseForOwn and baseForIn to reduce dependencies on baseCreateCallback. 2014-01-19 12:10:09 -08:00
John-David Dalton
55cbb12701 Use ES6 Set to optimize for large arrays in _.uniq, _.difference, & _.intersection. 2014-01-18 22:51:43 -08:00
John-David Dalton
14099813f0 Fix typo in travis.yml. 2014-01-17 20:11:25 -08:00
John-David Dalton
b1fd4e853c Rebuild dist files. 2014-01-17 09:27:27 -08:00
John-David Dalton
c1d3fc1b78 Cleanup _.result default value patch. [closes #455] 2014-01-17 09:27:11 -08:00
John-David Dalton
829980a941 Ensure sauce tests run against builds created by travis-ci. 2014-01-16 23:45:06 -08:00
John-David Dalton
d1e1a90d08 Merge pull request #454 from pistacchio/master
Added default value to `_.result`.
2014-01-16 21:16:12 -08:00
John-David Dalton
d56de091f6 Missed a BIND_FLAG use in baseCreateCallback. 2014-01-16 20:18:21 -08:00
John-David Dalton
87bb926fef Make the coverage run in .travis.yml use the generated modern build. 2014-01-16 19:54:33 -08:00
pistacchio
e983f93859 Added default value to _.result 2014-01-16 18:54:20 +01:00
John-David Dalton
c721acc2fa Make each build in travis.yml so users don't have to include them in pull requests for tests to pass. 2014-01-16 08:37:57 -08:00
John-David Dalton
16fd4c83ac Indicate slow path in lodash wrapper perf test. [ci skip] [closes #452] 2014-01-16 07:34:04 -08:00
John-David Dalton
999dfb84ee Use vars to store bitmask flags to improve readability. 2014-01-15 23:52:56 -08:00
John-David Dalton
c6557e5078 Add more _.indexOf tests. 2014-01-14 22:11:10 -08:00
Johann Steinbrecher
f7aab02978 Fixing indexOf([], undefined, true) to return -1 insead 0 2014-01-14 12:55:06 -08:00
John-David Dalton
fdcd67dd6b Make stable multi prop sort unit test more complex. 2014-01-13 19:39:02 -08:00
John-David Dalton
6c611d71dd Qualify coverage claim in readme. [ci skip] 2014-01-13 09:02:49 -08:00
John-David Dalton
b7e2396269 Increase test coverage of trim methods and _.sortBy. 2014-01-13 08:59:41 -08:00
John-David Dalton
ab62875ab1 Use a more preferred command to enable npm on Node 0.6 in travis.yml. 2014-01-12 22:02:11 -08:00
John-David Dalton
a499fdbb13 Reduce objectTypes and indexTypes deps. 2014-01-12 13:31:37 -08:00
John-David Dalton
bf2f0c38ed Update _.template docs to mark data as optional. [ci skip] 2014-01-11 23:57:17 -08:00
John-David Dalton
b14c05ccae Fix the underscore build of _.memoize. 2014-01-11 23:54:55 -08:00
John-David Dalton
66e7cd41b7 Rebuild dist/lodash.underscore.js with breakIndicator and reverted _.invert. 2014-01-11 21:53:12 -08:00
John-David Dalton
e9a15d9189 Remove keyPrefix for using a simple _ prefix. 2014-01-11 21:50:36 -08:00
John-David Dalton
e4aee13e9e Merge branch 'master' of github.com:lodash/lodash 2014-01-10 22:22:45 -08:00
John-David Dalton
551f9fcdf9 Make checks for _.map and _.reduce use consistent with indexTypes. 2014-01-09 23:27:32 -08:00
John-David Dalton
2ec5e948b4 Make _.isEqual work with plain objects containing constructor properties with like object values and make _.invert assign arrays when using the multiValue flag. [closes #420] 2014-01-09 20:13:37 -08:00
John-David Dalton
60b7f504e6 Make the guard checks in _.assign and _.defaults more thorough. 2014-01-09 08:43:52 -08:00
John-David Dalton
f99668f551 Add doc note to _.bind, _.bindAll, _.partial, _.partialRight, and _.curry about not setting the resulting functions .length. [closes #444] 2014-01-09 08:41:21 -08:00
John-David Dalton
8ade41b270 Update vendors. 2014-01-09 08:10:51 -08:00
John-David Dalton
a36a5363b4 Avoid using a unique key for keyPrefix as it causes issues when lodash is modularized into individual npm packages. [closes #446] 2014-01-09 01:31:28 -08:00
John-David Dalton
cb22fb54e8 Allow _.trim, _.trimLeft, and _.trimRight to remove specified chars. 2014-01-08 23:39:52 -08:00
John-David Dalton
1dcfdfdb65 Remove test until v3.0 when we'll enforce uniform skipping of the constructor property of prototype objects. 2014-01-07 08:30:55 -08:00
John-David Dalton
d309eb8fa1 Expose _.slice. 2014-01-06 22:26:50 -08:00
John-David Dalton
16dfdbe314 Ensure shimIsPlainObject returns true for plain objects with a constructor property that has a function value. 2014-01-05 13:49:18 -06:00
John-David Dalton
b926ed7b00 Rebuild diet and docs. 2014-01-04 23:10:22 -06:00
John-David Dalton
67a6b88104 Add tests for _.capitalize. 2014-01-04 21:51:23 -06:00
John-David Dalton
631699bf80 Doc cleanup. [ci skip] 2014-01-04 21:32:01 -06:00
John-David Dalton
80801bf7d0 Add _.capitalize. 2014-01-04 20:16:19 -06:00
John-David Dalton
4850a033fa Avoid ternary operations that aren't part of an assignment. 2014-01-03 11:50:29 -06:00
John-David Dalton
0b4029f7a1 Fix lodashBizarro tests for trim, trimLeft, and trimRight. 2014-01-03 11:05:09 -06:00
John-David Dalton
c07ef0d92a Add doc note for options.init to createIterator. [ci skip] 2014-01-03 00:55:59 -06:00
John-David Dalton
ca48c5ddff Expose trim, trimLeft, and trimRight. 2014-01-03 00:37:49 -06:00
John-David Dalton
a20c362983 Rearrange source to better match the doc order. 2014-01-02 19:06:40 -06:00
John-David Dalton
7beb204b9d Remove forEach dep from mixin. 2014-01-01 23:10:27 -06:00
John-David Dalton
3e4f9451a0 Update year to 2014. [ci skip] 2014-01-01 12:08:02 -06:00
John-David Dalton
6e5846d206 Replace isWhitespaceAt with trimmedLeftIndex and trimmedRightIndex. 2014-01-01 10:57:42 -06:00
John-David Dalton
5965591934 Optimize trim. 2013-12-31 20:23:25 -06:00
John-David Dalton
78f8a03da5 Ensure the trim fallback is tested and counted for code coverage. 2013-12-31 02:01:19 -06:00
John-David Dalton
4d10584233 Beef up _.parseInt support and add trim internally. 2013-12-30 23:58:56 -06:00
John-David Dalton
106fa64060 Cleanup arrayReg and splice references. 2013-12-29 15:49:26 -06:00
John-David Dalton
95be8b2cf3 Optimize _.sortBy by adding baseCompareAscending and compareMultipleAscending. 2013-12-28 21:39:33 -06:00
John-David Dalton
53d7c6c085 Fix node 0.6 tests with npm registry's new cert. 2013-12-27 11:21:20 -06:00
John-David Dalton
e4df75519c Ensure _.random() returns 1 or 0. 2013-12-26 10:09:53 -06:00
John-David Dalton
0438fa6816 Ensure _.reduce doesn't assign accumulator a collection value if its length is 0. 2013-12-25 02:36:02 -06:00
John-David Dalton
2dab4ccf85 Fix _.reduce for modern and underscore builds. 2013-12-24 12:47:22 -06:00
John-David Dalton
b338e76649 Cleanup lodash and lodash.underscore builds. 2013-12-23 17:45:05 -06:00
John-David Dalton
c737ab764e Minor doc tweaks to _.pluck and _.match. [ci skip] 2013-12-23 11:06:54 -06:00
John-David Dalton
990e73fce6 Add _.match. 2013-12-22 23:56:28 -06:00
John-David Dalton
99fac3ae1c Go back to a version range in travis.yml now that sauce-tunnel has fixed its npm issues. 2013-12-22 23:00:54 -06:00
John-David Dalton
ad0bcc7de9 Add another _.constant test for falsey values. 2013-12-22 01:25:24 -06:00
John-David Dalton
8069853dda Fix reEscapedHtml for underscore builds. 2013-12-21 10:39:02 -06:00
John-David Dalton
14ed669eba Use a fixed version, 1.1.0, until sauce-tunnel fixes their corrupt 1.1.1 npm package. 2013-12-21 10:05:07 -06:00
John-David Dalton
9ff5fa4acf Remove trailing newlines in .html files and add .php to .editorconfig. [ci skip] 2013-12-21 10:03:40 -06:00
John-David Dalton
d026024e8c Merge branch 'master' of github.com:lodash/lodash 2013-12-21 09:45:58 -06:00
John-David Dalton
25d1491e6b Merge pull request #435 from d10/master
Add .editorconfig. [ci skip]
2013-12-21 07:41:32 -08:00
Benjamin Tan
4e1415faf2 Add .editorconfig 2013-12-21 21:15:12 +08:00
John-David Dalton
692f64a78a Reduce _.escape and _.unescape dependencies 2013-12-21 03:45:56 -06:00
John-David Dalton
b20b8af5a6 Simplify nvm use in travis.yml. 2013-12-20 03:15:19 -08:00
John-David Dalton
d34cf636d8 Use Boolean to fake out the isNative check and allow environments to test the native String#contains fork of _.contains 2013-12-20 02:38:18 -08:00
John-David Dalton
3c72ea40b4 Use node --harmony for code coverage tests. 2013-12-20 01:22:15 -08:00
John-David Dalton
f87c7833a3 Update the tested version of node in readme. [ci skip] 2013-12-19 23:04:18 -08:00
John-David Dalton
f3931140fe Add bad shim tests for String#contains and remove those for Function#bind as we don't use native bind. 2013-12-19 02:20:54 -08:00
John-David Dalton
8459117c23 Minor tweaking, moving var order. 2013-12-19 00:57:58 -08:00
John-David Dalton
bbc0c97329 Update docdown to fix doc bugs related to params that are properties of other params. [ci skip] 2013-12-19 00:00:00 -08:00
John-David Dalton
1d8b152758 Merge pull request #432 from d10/master
Fix _.template docs typo. [ci skip]
2013-12-18 23:09:01 -08:00
John-David Dalton
1c4652448c Optimize _.contains by using native String#contains when available. 2013-12-18 23:05:16 -08:00
Benjamin Tan
3a34e606b8 Fix _.template docs typo [ci skip] 2013-12-19 12:02:04 +08:00
John-David Dalton
ca55748103 Ensure AMD tests it all of the debounce coverage. 2013-12-16 23:49:13 -08:00
John-David Dalton
43fa199cfa Remove opera 9 from sauce too. 2013-12-16 22:26:31 -08:00
John-David Dalton
f288ca23ae Correct typo in iteratorTemplate code comment. [ci skip] 2013-12-16 22:10:36 -08:00
John-David Dalton
4026714461 Relax reNative as it's limited in scope. 2013-12-16 21:53:01 -08:00
John-David Dalton
39a8652708 Simplify the _.support.dom check. 2013-12-16 21:22:46 -08:00
John-David Dalton
fb432465ea Disable testing Opera 10 in sauce until they fix it. 2013-12-16 20:17:15 -08:00
John-David Dalton
42bccfe1ec Improve regexp for reNative. 2013-12-16 20:15:37 -08:00
John-David Dalton
98566150d2 Avoid chance fails by noConflict race conditions. 2013-12-16 08:47:16 -08:00
John-David Dalton
676e1705c1 Rebuild docs and dist. 2013-12-16 02:34:46 -08:00
John-David Dalton
172cc1ffea Add thisArg to _.tap. 2013-12-16 02:34:20 -08:00
John-David Dalton
6845a52e92 Avoid sparatic fails with Firefox 26 and amd tests. 2013-12-16 01:44:51 -08:00
John-David Dalton
b5dc89f0e6 Add opera 9 and 10 to sauce tests. 2013-12-16 00:28:06 -08:00
John-David Dalton
ecaea51fe0 Update Firefox version in sauce and try Opera again. 2013-12-15 23:56:12 -08:00
John-David Dalton
77baf08092 Update tested browsers in the readme. [ci skip] 2013-12-15 23:55:43 -08:00
John-David Dalton
63ff5a2fe3 Update node version to 0.10 for sauce in travis.yml since they've upgraded their node 0.10 version. 2013-12-15 23:53:46 -08:00
John-David Dalton
97662f4b3e Fix comment typo in test/index.html. [ci skip] 2013-12-15 23:34:28 -08:00
John-David Dalton
38869d5035 Add tests for _.support.funcDecomp and WinRTError. 2013-12-15 23:17:33 -08:00
John-David Dalton
08047d4ab7 Cleanup iteratorTemplate code comments. [ci skip] 2013-12-15 23:15:19 -08:00
John-David Dalton
cf33853e68 Add result of array tests. 2013-12-15 22:50:43 -08:00
John-David Dalton
768e618ed9 Fix doc typos for _.mapValues and _.sample. 2013-12-15 22:50:10 -08:00
John-David Dalton
025ed51f11 Reduce the chance of a slow script warning in some browsers in test.js. 2013-12-15 21:24:13 -08:00
John-David Dalton
ab9dae3bf3 Fix IE compat mode bug with clearTimeout and setTimeout in test/index.html. 2013-12-15 20:28:03 -08:00
John-David Dalton
74da5dfd4b Keep code coverage up for _.isElement. 2013-12-15 19:15:01 -08:00
John-David Dalton
aaaf452fdc Move "escape" and "evaluate" delimiters to their own regexes. Cleanup the _ docs and iteratorTemplate. 2013-12-15 15:47:09 -08:00
John-David Dalton
d2b97d8aea Cleanup and rebuild docs and diet. 2013-12-14 03:05:30 -08:00
John-David Dalton
8b95216493 Merge pull request #429 from d10/master
Improve links formatting for docs. [ci skip]
2013-12-14 03:01:29 -08:00
Benjamin Tan
f933fa8c78 Improve links formatting for docs 2013-12-14 18:49:01 +08:00
John-David Dalton
f955309139 Switch from chrome to googlechrome browser name in saucelabs.js. 2013-12-14 02:34:05 -08:00
John-David Dalton
9c65a82430 Avoid issues with variable window. 2013-12-14 02:19:42 -08:00
John-David Dalton
7b4dda9c73 Fix readme typo in build differences wiki link. [ci skip] [closes #428] 2013-12-14 01:59:31 -08:00
John-David Dalton
9ad7d2d977 Fix bizarro setTimeout and clearTimeout for requirejs test runs. 2013-12-14 01:53:21 -08:00
John-David Dalton
e3b4b2f667 Simplify iteratorTemplate. 2013-12-14 01:29:17 -08:00
John-David Dalton
60a1374fb4 No longer compile _.assign, _.defaults, or _.forOwn. 2013-12-13 09:11:58 -08:00
John-David Dalton
7fcbc3c003 Fix failing test in node. 2013-12-13 08:34:16 -08:00
John-David Dalton
40421f4321 Make _.isElement more robust. [closes #427] 2013-12-12 22:22:47 -08:00
John-David Dalton
ad2683b610 Add more semicolons to the docs. \ht @mathias [ci skip] 2013-12-11 19:51:07 -08:00
John-David Dalton
7d49699e5f Merge branch 'master' of github.com:lodash/lodash 2013-12-11 09:24:58 -08:00
John-David Dalton
b34a239096 Add more to the "features" section of the readme and use the github url for lodash-amd references. [ci skip] 2013-12-11 09:24:47 -08:00
John-David Dalton
02d1251fe4 Merge pull request #426 from lodash/docs
Tweak documentation for `{un,}escape`. [ci skip]
2013-12-11 09:00:51 -08:00
Mathias Bynens
95e58ebb9f Tweak documentation for {un,}escape [ci skip] 2013-12-11 17:54:08 +01:00
John-David Dalton
1cb2704f1b Add files to bower and volo ignore lists. [ci skip] 2013-12-08 18:15:56 -08:00
John-David Dalton
dea71f1aa9 Update dojo to 1.9.2. 2013-12-08 17:56:11 -08:00
John-David Dalton
aee975b7d8 Add .log files to volo's ignore list. [ci skip] 2013-12-08 17:54:24 -08:00
John-David Dalton
18b6d51644 Reduce the amount of phantomjs runs in travis.yml and tweak for 100% coverage in amd tests. 2013-12-08 14:29:03 -08:00
John-David Dalton
3a5ff851af Avoid swallowing errors in the test setup in .travis.yml. 2013-12-08 12:12:05 -08:00
John-David Dalton
cd929345e6 Ignore all log files in .gitignore. [ci skip] 2013-12-08 11:01:35 -08:00
John-David Dalton
de232dd726 Allow amd builds to test for bizarro methods. 2013-12-08 10:44:07 -08:00
John-David Dalton
8ebe99d4f5 Add support for writing the coverage.json file for phantomjs runs in test/test.js. [ci skip] 2013-12-07 23:46:39 -08:00
John-David Dalton
32f760a461 Add semantic versioning note to readme. [ci skip] 2013-12-07 23:28:02 -08:00
John-David Dalton
65eaab5cf4 Update .gitignore to ignore npm-debug.log and coverage folders. [ci skip] 2013-12-07 23:05:39 -08:00
John-David Dalton
51698944e0 Cleanup _.xor patch and add a unit test. 2013-12-06 20:34:59 -08:00
Ryan Van Etten
64fc924357 Ensure _.xor() returns new unique array. 2013-12-06 19:38:43 -08:00
John-David Dalton
c61a0cdd22 Cleanup _.compact optimization. 2013-12-06 19:34:30 -08:00
robertmesserle
9a1de81fc5 Optimized compact method by using a counter in place of Array.prototype.push() 2013-12-06 19:34:30 -08:00
John-David Dalton
3633d3cd73 Optimize _.unescape. 2013-12-06 09:13:38 -08:00
John-David Dalton
9a0465eb05 Reduce sauce timeouts. 2013-12-05 21:25:03 -08:00
John-David Dalton
088e199aa2 Cleanup docs. [ci skip] 2013-12-05 21:24:47 -08:00
John-David Dalton
bc4c043d7e Cleanup previous commit, add a _.invert unit test, and rebuild docs. 2013-12-05 09:38:42 -08:00
John-David Dalton
764299ea8a Merge pull request #420 from dr-skot/master
Add oneToMany support in _.invert.
2013-12-05 08:35:14 -08:00
Scott Shepherd
2abc87a1f2 regenerated README.md after adding oneToMany support to _.invert 2013-12-05 11:28:06 -05:00
Scott Shepherd
75fa116c88 built dist files after adding oneToMany support to _.invert 2013-12-05 11:24:46 -05:00
Scott Shepherd
cc7575adab added oneToMany option to _.invert() 2013-12-05 09:14:58 -05:00
Scott Shepherd
efb1a2c8e0 added oneToMany option to _.invert() 2013-12-05 09:12:38 -05:00
John-David Dalton
c2972fcaa0 Avoid adding Function.prototype additions to _. 2013-12-04 22:50:51 -08:00
John-David Dalton
250fd71e16 Tweak readme layout of downloads and add not about 100% code coverage. [ci skip] 2013-12-03 22:38:02 -08:00
John-David Dalton
783c165201 Add doc note to _.zip about unzipping values. [ci skip] [closes #418] 2013-12-03 20:40:15 -08:00
John-David Dalton
326a3c5932 Fix typo in test description and reduce sauce test timeouts. 2013-12-03 20:37:26 -08:00
John-David Dalton
0af1a85442 Bump to v2.4.1. 2013-12-02 23:21:16 -08:00
John-David Dalton
10e7bb97ee Add comments to baseBind use of arguments. [ci skip] [closes #416] 2013-12-02 23:11:19 -08:00
John-David Dalton
c319bbc5f3 Ensure _.isEqual performs comparisons between objects with shared property values correctly. [closes #415] 2013-12-02 21:15:00 -08:00
John-David Dalton
9e42f70e5f Add more lodashBadShim tests. 2013-12-02 01:40:20 -08:00
John-David Dalton
ff47152187 Add max-duration option to sauce config. 2013-12-01 21:40:48 -08:00
John-David Dalton
94b6ce5ca0 Excuse some underscore _.debounce and _.throttle tests in sauce. 2013-12-01 21:40:48 -08:00
John-David Dalton
8e1020f134 Tweak _.now unit test. 2013-12-01 21:40:48 -08:00
John-David Dalton
be7a0fef41 Increase sauce idle-timeout from the default of 90 to 300. 2013-12-01 21:40:48 -08:00
Bitdeli Chef
9fe7bb7362 Add a Bitdeli badge to README 2013-12-01 17:55:22 +00:00
John-David Dalton
5d4b121ac1 Remove extra props added for lodashBadShim. 2013-12-01 11:29:41 -06:00
John-David Dalton
cb424a5f78 Better error messages for sauce issues. [ci skip] 2013-11-30 23:11:16 -06:00
John-David Dalton
88ab9d0756 Fix phantomjs browser tests. 2013-11-30 19:57:42 -06:00
John-David Dalton
29f4fd40ed Try a different secure string in travis.yml. 2013-11-30 17:10:53 -06:00
John-David Dalton
b7f7ba06b9 Merge qunit clib and extras. 2013-11-30 16:02:18 -06:00
John-David Dalton
94f8ac8d1d Get test coverage to 100%. 2013-11-30 11:51:11 -06:00
John-David Dalton
72ab38bd2f Remove fork in baseUniq that is never reached and increase test coverage. 2013-11-30 00:29:50 -06:00
John-David Dalton
b3d5466131 Fix tests for commonjs module builds. [ci skip] 2013-11-29 22:11:30 -06:00
John-David Dalton
bafbd8f1b6 Add COVERALLS_REPO_TOKEN to travis.yml. 2013-11-29 21:57:21 -06:00
John-David Dalton
8c1ce03183 Ignore .coveralls.yml. 2013-11-29 21:01:12 -06:00
John-David Dalton
97490b272f Add more unit tests to increase coverage. 2013-11-29 20:54:18 -06:00
John-David Dalton
2afbe9514b Rebuild files and docs. 2013-11-29 20:37:56 -06:00
John-David Dalton
603be609a1 Add sudo to the istanbul command in travis.yml. 2013-11-29 18:48:01 -06:00
John-David Dalton
4590be7b65 Add isNative. 2013-11-29 18:47:25 -06:00
John-David Dalton
097a2f6582 Optimize _.partial and _.partialRight. 2013-11-29 11:21:48 -06:00
John-David Dalton
f818e5bc51 Whitespace nit in test.js. [ci skip] 2013-11-29 08:40:13 -06:00
John-David Dalton
34cf8fc43c Ensure _.partialRight args are applied to __bindData__ in the correct order. [closes #408] 2013-11-29 07:09:21 -06:00
John-David Dalton
7712765c3a Ensure __bindData__ is properly cloned. [closes #408] 2013-11-29 06:31:37 -06:00
John-David Dalton
eaf1304eda Rebuild with xor doc typo fixed and docs with lodash.com link. [ci skip] 2013-11-27 23:46:27 -06:00
John-David Dalton
f97f32df0f Merge pull request #406 from Delapouite/doc
Add home link in docs. [ci skip]
2013-11-27 03:45:22 -06:00
John-David Dalton
79eecd6db4 Remove extraneous test. [ci skip] 2013-11-27 03:42:59 -06:00
Delapouite
5a75d8e788 Add home link in docs. [ci skip] 2013-11-27 10:12:17 +01:00
John-David Dalton
42e58fb73a Add unit test for _.sortBy to ensure arrays returned from callbacks are coerced. 2013-11-26 15:10:55 -06:00
John-David Dalton
dba996b2c4 Fix doc typos. [ci skip] 2013-11-26 15:10:45 -06:00
John-David Dalton
647f0dd34b Bump to v2.4.0. 2013-11-25 23:14:32 -06:00
John-David Dalton
a691a519e8 Add options object to _.mixin. [closes #404] 2013-11-25 13:26:08 -06:00
John-David Dalton
86075973b5 Remove setImmediate use from _.defer. 2013-11-24 15:31:34 -06:00
John-David Dalton
97ea15300c Added unit tests for clearing the timer id of _.delay and _.defer and tests for array chaining methods. 2013-11-24 15:11:45 -06:00
John-David Dalton
a150a8fd52 Update sauce labs excused list in test/underscore.html. [ci skip] 2013-11-24 11:25:12 -06:00
John-David Dalton
ad4e20da52 Fix async test in node when testing modules. [ci skip] 2013-11-24 00:30:13 -06:00
John-David Dalton
e43ab1e46f Add missing semicolon in _#chain doc. [ci skip] 2013-11-22 22:18:53 -08:00
John-David Dalton
e32e280cf1 Update async _.throttle test. 2013-11-22 22:08:51 -08:00
John-David Dalton
c1a07e0943 Cleanup _.xor. 2013-11-22 18:43:51 -08:00
John-David Dalton
93fe641dbf Change sauce detect in test/underscore.html. [ci skip] 2013-11-22 12:42:39 -08:00
John-David Dalton
d8194c0886 Allow _.sortBy to accept an array for callback. 2013-11-22 09:35:39 -08:00
John-David Dalton
75ce4766d3 Fix _.mixin doc typo. [ci skip] 2013-11-21 22:04:59 -08:00
John-David Dalton
7eff3bf854 Add opera to sauce labs and shorten ie-compat tag. 2013-11-21 22:04:38 -08:00
John-David Dalton
af143ae7dc Update alias output in doc TOC. [ci skip] 2013-11-21 10:53:56 -08:00
John-David Dalton
a0e9140dde Use non-minified file for istanbul coverage checks. 2013-11-21 10:52:59 -08:00
John-David Dalton
33e5d46c87 Add _.constant, _.mapValues, and _.xor. 2013-11-21 09:31:55 -08:00
John-David Dalton
f74b206864 Move asyncRetries config to test/test.js. 2013-11-20 19:13:06 -08:00
John-David Dalton
f334ebe577 Revert istanbul change in travis.yml. 2013-11-20 19:11:46 -08:00
John-David Dalton
9c39394d7f Load QUnit extras for cli tests too. 2013-11-20 09:15:39 -08:00
John-David Dalton
8ea0e6977a Move _.createCallback and _.property to the "Utilities" category. 2013-11-20 08:44:53 -08:00
John-David Dalton
bf006473c0 Add _.debounce and _.throttle test for the this binding of func. 2013-11-19 23:33:43 -08:00
John-David Dalton
568af27be4 Change istanbul test file in travis.yml. 2013-11-19 22:34:18 -08:00
John-David Dalton
bd55f86203 Indicate aliases with -> in docs. 2013-11-19 21:26:06 -08:00
John-David Dalton
d95e577639 Expose lodash in the amd fork of the UMD in case it's being loaded with a shim config. [closes #400] 2013-11-19 09:24:12 -08:00
John-David Dalton
a904e54122 Fix _.throttle and _.now tests. 2013-11-19 00:06:20 -08:00
John-David Dalton
2a97655a8d Expose _.now. 2013-11-18 22:34:04 -08:00
John-David Dalton
d878718510 Update sauce platforms with newer chrome versions and more safari versions. 2013-11-18 08:41:41 -08:00
John-David Dalton
416227a2a2 Add build data to sauce. 2013-11-17 22:57:23 -08:00
John-David Dalton
7d1baa8798 Update vendor/benchmark.js. [ci skip] 2013-11-17 18:58:08 -08:00
John-David Dalton
fe2ee64ec9 Expose _.property. 2013-11-16 20:31:18 -08:00
John-David Dalton
96819628d6 Minor doc nit in saucelabs.js. [ci skip] 2013-11-16 12:09:22 -08:00
John-David Dalton
1b30d7909c Minor nit on require path in saucelabs.js. 2013-11-16 09:18:50 -08:00
John-David Dalton
baf253d44e Reduce timer waits because we've fixed the issue with asyncRetries. 2013-11-16 09:18:08 -08:00
John-David Dalton
b7a4d50007 Add coveralls to travis.yml. 2013-11-16 01:14:14 -08:00
John-David Dalton
625b4befb5 Rebuild docs and add links to sauce labs and travis-ci to readme. [ci skip] 2013-11-16 01:14:14 -08:00
John-David Dalton
30678f51bd Fix var _ assignment in index.html. 2013-11-16 01:14:14 -08:00
John-David Dalton
7a4103dd48 Make use of the wait throbber in quint and cleanup the throbber in saucelabs.js. 2013-11-15 22:18:03 -08:00
John-David Dalton
bca3ff2eac Avoid loading lodash when not needed in unit tests. 2013-11-15 22:09:30 -08:00
John-David Dalton
28e2934a89 Allow _.zipObject to accept an array of keys without assuming its an array of key/value pairs. [closes #397] 2013-11-15 00:18:29 -08:00
John-David Dalton
0563af682d Update docdown to avoid escaping characters in code snippets. [ci skip] 2013-11-14 22:40:48 -08:00
John-David Dalton
5ccd63250b Move qunit extras to qunit-extras.js. 2013-11-14 21:02:46 -08:00
John-David Dalton
f262a0745d Avoid require('vm') if testing AMD. 2013-11-14 11:37:15 -08:00
John-David Dalton
c42b63b008 Move compat mode testing to an argument instead of a query param. 2013-11-14 08:47:34 -08:00
John-David Dalton
e7ffb80877 Enable other realm tests for Node too. 2013-11-14 08:30:34 -08:00
John-David Dalton
919166212f Fix istanbul report in travis.yml and tweak async tests. 2013-11-14 01:03:20 -08:00
John-David Dalton
deb124f645 Update ES6 spec link in lodash source too. [ci skip] 2013-11-13 23:28:14 -08:00
John-David Dalton
86b1ff5125 Merge pull request #396 from Delapouite/doc
Update README link to literals string spec. [ci skip]
2013-11-13 09:46:53 -08:00
John-David Dalton
2c8c96149f Fix how sauce runner and tags are parsed. 2013-11-13 08:13:18 -08:00
Delapouite
82e4cc9951 Update README link to literals string spec [ci skip] 2013-11-13 17:06:58 +01:00
John-David Dalton
04df06404f Bump tested Chrome version in readme. [ci skip] 2013-11-13 01:11:50 -08:00
John-David Dalton
f6fcf5fce4 Attempt to make sauce tests public with names, tags, and customized options. 2013-11-13 00:24:08 -08:00
John-David Dalton
ac5e92c879 Update doc whitespace and _.template doc example. [ci skip] 2013-11-13 00:20:17 -08:00
John-David Dalton
37ccc80ba4 Fix _.size doc typo. [ci skip] [closes #394] 2013-11-12 08:59:40 -08:00
John-David Dalton
8153f97899 Update docdown to correctly detect _.noop as a function. [ci skip] 2013-11-12 00:21:45 -08:00
John-David Dalton
8dedc6d3dc Make use of _.noop more in test/test.js. 2013-11-12 00:20:42 -08:00
John-David Dalton
807d75e13a Remove exposing root._ in the AMD fork of the UMD because Lo-Dash is defined as an anonymous module and the issue it solves isn't applicable to it. 2013-11-11 22:07:56 -08:00
John-David Dalton
feac1786e1 Move min tested Node.js version up to match travis-ci to avoid local testing on top of travis-ci. [ci skip] 2013-11-11 19:37:09 -08:00
142 changed files with 49050 additions and 53144 deletions

18
.editorconfig Normal file
View File

@@ -0,0 +1,18 @@
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
[**.{js,json,md}]
indent_style = space
indent_size = 2
insert_final_newline = true
[**.html]
indent_style = tab
insert_final_newline = false

4
.gitattributes vendored
View File

@@ -1,5 +1 @@
* text=auto
*.html text eol=lf
*.js text eol=lf
*.md text eol=lf
*.sh text eol=lf

8
.gitignore vendored
View File

@@ -1,10 +1,6 @@
.DS_Store
*.custom.*
*.template.*
*.log
*.map
/*.min.*
modularize
lodash.compat.min.js
node_modules
dist/*.backbone.*
dist/*.legacy.*
dist/*.mobile.*

View File

@@ -1,80 +1,77 @@
language: node_js
node_js:
- "0.6"
- "0.8"
- "0.10"
- "0.12"
env:
global:
- BIN="node" BUILD=false COMPAT=false MAKE=false OPTION="" SAUCE_LABS=false
- SAUCE_USERNAME="jdalton"
- secure: "woILQltl1pI3DgadZ5NrcqntdPvnRmQBwIVNZL91Ht5d9snIhgyAixI6xNAS8F8BzD9RzqzVPHay5sHfn+GhNaojcaiHs1nXAbdyclevMyfP+3MQ1HGfMSU0bv1GdT35LJ+C0u4Y3SuuZSbBlNEeLXRPMngPZahf4xL8RsZz/is="
- PATTERN1="s|^.+?!support\.funcNames\b[\s\S]+?\.name\b[\s\S]+?\}\n||m"
- PATTERN2="s|\s*else\s*\{\s*iteratee\(index\);\s*\}||"
- BIN="node" BUILD="compat" ISTANBUL=false OPTION=""
- NPM_VERSION="^2.0.0" SAUCE_LABS=false SAUCE_USERNAME="lodash"
- secure: "tg1JFsIFnxzLaTboFPOnm+aJCuMm5+JdhLlESlqg9x3fwro++7KCnwHKLNovhchaPe4otC43ZMB/nfWhDnDm11dKbm/V6HlTkED+dadTsaLxVDg6J+7yK41QhokBPJOxLV78iDaNaAQVYEirAgZ0yn8kFubxmNKV+bpCGQNc9yU="
matrix:
- BUILD="compat"
- BUILD="modern"
- BUILD="legacy"
- BUILD="mobile"
- BIN="phantomjs" BUILD="compat"
- BIN="phantomjs" BUILD="legacy"
- BIN="phantomjs" BUILD="mobile"
- BUILD="modern"
- BUILD="modern" ISTANBUL=true
- BIN="phantomjs"
- BIN="rhino"
- BIN="rhino" OPTION="-require"
- BIN="ringo"
matrix:
include:
- node_js: "0.10"
env: BIN="istanbul"
- node_js: "0.10"
env: BIN="narwhal" BUILD="compat"
- node_js: "0.10"
env: BIN="narwhal" BUILD="legacy"
- node_js: "0.10"
env: BIN="rhino" BUILD="compat"
- node_js: "0.10"
env: BIN="rhino" BUILD="legacy"
- node_js: "0.10"
env: BIN="rhino" BUILD="compat" OPTION="-require"
- node_js: "0.10"
env: BIN="rhino" BUILD="legacy" OPTION="-require"
- node_js: "0.10"
env: BIN="ringo" BUILD="compat"
- node_js: "0.10"
env: BIN="ringo" BUILD="legacy"
- node_js: "io.js"
env:
- node_js: "io.js"
env: BUILD="modern"
- node_js: "0.8"
env: SAUCE_LABS=true BUILD="compat"
env: NPM_VERSION="~1.4.0"
- node_js: "0.8"
env: BUILD="modern" NPM_VERSION="~1.4.0"
- node_js: "0.10"
env:
- node_js: "0.10"
env: BUILD="modern"
- node_js: "0.12"
env: SAUCE_LABS=true
- node_js: "0.12"
env: SAUCE_LABS=true BUILD="modern"
- node_js: "0.8"
env: SAUCE_LABS=true BUILD="legacy"
- node_js: "0.8"
env: SAUCE_LABS=true BUILD="mobile"
- node_js: "0.8"
env: SAUCE_LABS=true BUILD="underscore"
git:
depth: 10
branches:
only:
- master
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/4aab6358b0e9aed0b628
on_success: change
on_failure: always
before_install:
- "([ $BUILD == 'legacy' ] || [ $BUILD == 'mobile' ] || [ $BUILD == 'modern' ]) && MAKE=true || true"
- "([ $BUILD == 'compat' ] || [ $BUILD == 'legacy' ]) && COMPAT=true || true"
- "[ $SAUCE_LABS != false ] && npm i ecstatic@\"~0.4.0\" request@\"~2.27.0\" sauce-tunnel@\"~1.1.0\" || true"
- "[ $BIN == 'istanbul' ] && npm i -g istanbul@\"~0.1.0\" || true"
- "[ $BIN == 'narwhal' ] && wget https://github.com/280north/narwhal/archive/v0.3.2.zip && sudo unzip v0.3.2 -d /opt/ && rm v0.3.2.zip || true"
- "[ $BIN == 'narwhal' ] && sudo ln -s /opt/narwhal-0.3.2/bin/narwhal /usr/local/bin/narwhal && sudo chmod +x /usr/local/bin/narwhal || true"
- "[ $BIN == 'rhino' ] && sudo mkdir /opt/rhino-1.7R5 && sudo wget -O /opt/rhino-1.7R5/js.jar https://oss.sonatype.org/content/repositories/snapshots/org/mozilla/rhino/1.7R5-SNAPSHOT/rhino-1.7R5-20120629.144839-4.jar || true"
- "[ $BIN == 'rhino' ] && echo -e '#!/bin/sh\\njava -jar /opt/rhino-1.7R5/js.jar $@' | sudo tee /usr/local/bin/rhino && sudo chmod +x /usr/local/bin/rhino || true"
- "[ $BIN == 'ringo' ] && wget http://ringojs.org/downloads/ringojs-0.9.zip && sudo unzip ringojs-0.9 -d /opt && rm ringojs-0.9.zip || true"
- "[ $BIN == 'ringo' ] && sudo ln -s /opt/ringojs-0.9/bin/ringo /usr/local/bin/ringo && sudo chmod +x /usr/local/bin/ringo || true"
- "[ $MAKE != false ] && git clone --depth=10 --branch=master git://github.com/lodash/lodash-cli.git ./node_modules/lodash-cli || true"
- "[ $MAKE != false ] && mkdir ./node_modules/lodash-cli/node_modules && cd ./node_modules/lodash-cli/node_modules/ && ln -s ../../../ ./lodash && cd ../ && npm i . && cd ../../ || true"
- "[ $MAKE != false ] && node ./node_modules/lodash-cli/bin/lodash $BUILD -o ./dist/lodash.$BUILD.js || true"
- "nvm use $TRAVIS_NODE_VERSION"
- "npm config set loglevel error"
- "npm i -g npm@\"$NPM_VERSION\""
- "[ $SAUCE_LABS == false ] || npm i chalk@\"^1.0.0\" ecstatic@\"0.7.3\" request@\"^2.0.0\" sauce-tunnel@\"2.2.3\""
- "[ $ISTANBUL == false ] || (npm i -g coveralls@\"^2.0.0\" && npm i istanbul@\"0.3.13\")"
- "[ $BIN != 'rhino' ] || (sudo mkdir /opt/rhino-1.7R5 && sudo wget --no-check-certificate -O $_/js.jar https://lodash.com/_travis/rhino-1.7R5.jar)"
- "[ $BIN != 'rhino' ] || (echo -e '#!/bin/sh\\njava -jar /opt/rhino-1.7R5/js.jar $@' | sudo tee /usr/local/bin/rhino && sudo chmod +x /usr/local/bin/rhino)"
- "[ $BIN != 'ringo' ] || (wget --no-check-certificate https://lodash.com/_travis/ringojs-0.11.zip && sudo unzip ringojs-0.11 -d /opt && rm ringojs-0.11.zip)"
- "[ $BIN != 'ringo' ] || (sudo ln -s /opt/ringojs-0.11/bin/ringo /usr/local/bin/ringo && sudo chmod +x $_)"
- "perl -pi -e 's|\"lodash\"|\"lodash-compat\"|' ./package.json"
- "git clone --depth=10 --branch=master git://github.com/lodash/lodash-cli.git ./node_modules/lodash-cli && mkdir $_/node_modules && cd $_ && ln -s ../../../ ./lodash-compat && cd ../ && npm i && cd ../../"
- "node ./node_modules/lodash-cli/bin/lodash $BUILD -o ./lodash.$BUILD.js"
script:
- "[ $BIN == 'istanbul' ] && $BIN cover ./test/test.js || true"
- "([ $SAUCE_LABS != false ] || [ $BUILD == false ]) && true || cd ./test"
- "([ $SAUCE_LABS != false ] || [ $BUILD == false ]) && true || $BIN $OPTION ./test.js ../dist/lodash.$BUILD.js"
- "([ $SAUCE_LABS != false ] || [ $BUILD == false ]) && true || $BIN $OPTION ./test.js ../dist/lodash.$BUILD.min.js"
- "([ $SAUCE_LABS == false ] || [ $BUILD == 'underscore' ]) && true || node ./test/saucelabs.js \"test/index.html?build=lodash-$BUILD\""
- "([ $SAUCE_LABS == false ] || [ $BUILD == 'underscore' ]) && true || node ./test/saucelabs.js \"test/index.html?build=../dist/lodash.$BUILD.js\""
- "[ $SAUCE_LABS == false ] && true || node ./test/saucelabs.js \"test/backbone.html?build=lodash-$BUILD\""
- "[ $SAUCE_LABS == false ] && true || node ./test/saucelabs.js \"test/backbone.html?build=../dist/lodash.$BUILD.js\""
- "[ $SAUCE_LABS == false ] && true || node ./test/saucelabs.js \"test/underscore.html?build=lodash-$BUILD\""
- "[ $SAUCE_LABS == false ] && true || node ./test/saucelabs.js \"test/underscore.html?build=../dist/lodash.$BUILD.js\""
- "([ $SAUCE_LABS == false ] || [ $COMPAT == false ]) && true || node ./test/saucelabs.js \"test/index.html?build=lodash-$BUILD&compat=7\""
- "([ $SAUCE_LABS == false ] || [ $COMPAT == false ]) && true || node ./test/saucelabs.js \"test/index.html?build=../dist/lodash.$BUILD.js&compat=7\""
- "[ $ISTANBUL == false ] || cp ./lodash.$BUILD.js ./lodash.js"
- "[ $ISTANBUL == false ] || perl -0pi -e \"$PATTERN1\" ./lodash.js && perl -0pi -e \"$PATTERN2\" $_"
- "[ $ISTANBUL == false ] || node ./node_modules/istanbul/lib/cli.js cover -x \"**/vendor/**\" --report lcovonly ./test/test.js -- ./lodash.js"
- "[ $ISTANBUL == false ] || [ $TRAVIS_SECURE_ENV_VARS == false ] || (cat ./coverage/lcov.info | coveralls)"
- "[ $SAUCE_LABS == true ] || [ $ISTANBUL == true ] || cd ./test"
- "[ $SAUCE_LABS == true ] || [ $ISTANBUL == true ] || $BIN $OPTION ./test.js ../lodash.$BUILD.js"
- "[ $SAUCE_LABS == true ] || [ $ISTANBUL == true ] || [ $TRAVIS_SECURE_ENV_VARS == false ] || $BIN $OPTION ./test.js ../lodash.$BUILD.min.js"
- "[ $SAUCE_LABS == false ] || $BIN ./test/saucelabs.js name=\"lodash tests\" runner=\"test/index.html?build=../lodash.$BUILD.js&noglobals=true\" tags=\"$BUILD,development\""
- "[ $SAUCE_LABS == false ] || $BIN ./test/saucelabs.js name=\"lodash tests\" runner=\"test/index.html?build=../lodash.$BUILD.min.js&noglobals=true\" tags=\"$BUILD,production\""
- "[ $SAUCE_LABS == false ] || [ $BUILD != 'compat' ] || $BIN ./test/saucelabs.js name=\"lodash tests\" runner=\"test/index.html?build=../lodash.$BUILD.js\" tags=\"$BUILD,development,ie-compat\" compatMode=7"
- "[ $SAUCE_LABS == false ] || [ $BUILD != 'compat' ] || $BIN ./test/saucelabs.js name=\"lodash tests\" runner=\"test/index.html?build=../lodash.$BUILD.min.js\" tags=\"$BUILD,production,ie-compat\" compatMode=7"
- "[ $SAUCE_LABS == false ] || $BIN ./test/saucelabs.js name=\"backbone tests\" runner=\"test/backbone.html?build=../lodash.$BUILD.min.js\" tags=\"$BUILD,production,backbone\""
- "[ $SAUCE_LABS == false ] || $BIN ./test/saucelabs.js name=\"backbone tests\" runner=\"test/backbone.html?build=../lodash.$BUILD.js\" tags=\"$BUILD,development,backbone\""
- "[ $SAUCE_LABS == false ] || $BIN ./test/saucelabs.js name=\"underscore tests\" runner=\"test/underscore.html?build=../lodash.$BUILD.min.js\" tags=\"$BUILD,production,underscore\""
- "[ $SAUCE_LABS == false ] || $BIN ./test/saucelabs.js name=\"underscore tests\" runner=\"test/underscore.html?build=../lodash.$BUILD.js\" tags=\"$BUILD,development,underscore\""

View File

@@ -1,18 +1,22 @@
# Contributing to Lo-Dash
# Contributing to lodash
If youd like to contribute a feature or bug fix, you can [fork](https://help.github.com/articles/fork-a-repo) Lo-Dash, commit your changes, and [send a pull request](https://help.github.com/articles/using-pull-requests).
If youd like to contribute a feature or bug fix, you can [fork](https://help.github.com/articles/fork-a-repo/) lodash, commit your changes, & [send a pull request](https://help.github.com/articles/using-pull-requests/).
Please make sure to [search the issue tracker](https://github.com/lodash/lodash/issues) first; your issue may have already been discussed or fixed in `master`.
## Tests
Include updated unit tests in the `test` directory as part of your pull request.
You can run the tests from the command line via `node test/test`, or open `test/index.html` in a web browser.
The `test/run-test.sh` script attempts to run the tests in [Rhino](https://developer.mozilla.org/en-US/docs/Rhino), [Narwhal](https://github.com/280north/narwhal), [RingoJS](http://ringojs.org/), [PhantomJS](http://phantomjs.org/), and [Node](http://nodejs.org/), before running them in your default browser.
The [Backbone](http://backbonejs.org/) and [Underscore](http://http://underscorejs.org/) test suites are included as well.
Dont worry about regenerating the documentation, lodash.js, or lodash.min.js.
Before running the unit tests youll need to install, `npm i`, [development dependencies](https://docs.npmjs.com/files/package.json#devdependencies).
Run unit tests from the command-line via `node test/test`, or open `test/index.html` in a web browser.
The `test/run-test.sh` script attempts to run the tests in [Rhino](https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino), [RingoJS](http://ringojs.org/), [PhantomJS](http://phantomjs.org/), & [Node](http://nodejs.org/), before running them in your default browser.
The [Backbone](http://backbonejs.org/) & [Underscore](http://underscorejs.org/) test suites are included as well.
## Contributor License Agreement
Lo-Dash is a member of the [Dojo Foundation](http://dojofoundation.org/).
lodash is a member of the [Dojo Foundation](http://dojofoundation.org/).
As such, we request that all contributors sign the Dojo Foundation [contributor license agreement](http://dojofoundation.org/about/claForm).
For more information about CLAs, please check out Alex Russells excellent post, [“Why Do I Need to Sign This?”](http://infrequently.org/2008/06/why-do-i-need-to-sign-this/).
@@ -25,11 +29,11 @@ In addition to the following guidelines, please follow the conventions already e
Use two spaces for indentation. No tabs.
- **Naming**:<br>
Keep variable and method names concise and descriptive.<br>
Variable names `index`, `collection`, and `callback` are preferable to `i`, `arr`, and `fn`.
Keep variable & method names concise & descriptive.<br>
Variable names `index`, `collection`, & `callback` are preferable to `i`, `arr`, & `fn`.
- **Quotes**:<br>
Single-quoted strings are preferred to double-quoted strings; however, please use a double-quoted string if the value contains a single-quote character to avoid unnecessary escaping.
- **Comments**:<br>
Please use single-line comments to annotate significant additions, and [JSDoc-style](http://www.2ality.com/2011/08/jsdoc-intro.html) comments for new methods.
Please use single-line comments to annotate significant additions, & [JSDoc-style](http://www.2ality.com/2011/08/jsdoc-intro.html) comments for new methods.

View File

@@ -1,5 +1,5 @@
Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas,
Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
Permission is hereby granted, free of charge, to any person obtaining
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

163
README.md
View File

@@ -1,156 +1,29 @@
# Lo-Dash v2.3.0
A utility library delivering consistency, [customization](http://lodash.com/custom-builds), [performance](http://lodash.com/benchmarks), & [extras](http://lodash.com/#features).
# lodash v3.7.0
## Download
Check out our [wiki]([https://github.com/lodash/lodash/wiki/build-differences]) for details over the differences between builds.
* Modern builds perfect for newer browsers/environments:<br>
[Development](https://raw.github.com/lodash/lodash/2.3.0/dist/lodash.js) &
[Production](https://raw.github.com/lodash/lodash/2.3.0/dist/lodash.min.js)
* Compatibility builds for older environment support too:<br>
[Development](https://raw.github.com/lodash/lodash/2.3.0/dist/lodash.compat.js) &
[Production](https://raw.github.com/lodash/lodash/2.3.0/dist/lodash.compat.min.js)
* Underscore builds to use as a drop-in replacement:<br>
[Development](https://raw.github.com/lodash/lodash/2.3.0/dist/lodash.underscore.js) &
[Production](https://raw.github.com/lodash/lodash/2.3.0/dist/lodash.underscore.min.js)
CDN copies are available on [cdnjs](http://cdnjs.com/libraries/lodash.js/) & [jsDelivr](http://www.jsdelivr.com/#!lodash). For smaller file sizes, create [custom builds](http://lodash.com/custom-builds) with only the features needed.
Love modules? Weve got you covered with [lodash-amd](https://npmjs.org/package/lodash-amd), [lodash-es6](https://github.com/lodash/lodash-es6), [lodash-node](https://npmjs.org/package/lodash-node), & [npm packages](https://npmjs.org/browse/keyword/lodash-modularized) per method.
## Dive in
Theres plenty of **[documentation](http://lodash.com/docs)**, [unit tests](http://lodash.com/tests), & [benchmarks](http://lodash.com/benchmarks).<br>
Check out <a href="http://devdocs.io/lodash/">DevDocs</a> as a fast, organized, & searchable interface for our documentation.
The full changelog for this release is available on our [wiki](https://github.com/lodash/lodash/wiki/Changelog).<br>
A list of upcoming features is available on our [roadmap](https://github.com/lodash/lodash/wiki/Roadmap).
## Features *not* in Underscore
* AMD loader support ([curl](https://github.com/cujojs/curl), [dojo](http://dojotoolkit.org/), [requirejs](http://requirejs.org/), etc.)
* [_(…)](http://lodash.com/docs#_) supports intuitive chaining
* [_.at](http://lodash.com/docs#at) for cherry-picking collection values
* [_.bindKey](http://lodash.com/docs#bindKey) for binding [*“lazy”*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods
* [_.clone](http://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects
* [_.cloneDeep](http://lodash.com/docs#cloneDeep) for deep cloning arrays & objects
* [_.contains](http://lodash.com/docs#contains) accepts a `fromIndex`
* [_.create](http://lodash.com/docs#create) for easier object inheritance
* [_.createCallback](http://lodash.com/docs#createCallback) for extending callbacks in methods & mixins
* [_.curry](http://lodash.com/docs#curry) for creating [curried](http://hughfdjackson.com/javascript/2013/07/06/why-curry-helps/) functions
* [_.debounce](http://lodash.com/docs#debounce) & [_.throttle](http://lodash.com/docs#throttle) accept additional `options` for more control
* [_.findIndex](http://lodash.com/docs#findIndex) & [_.findKey](http://lodash.com/docs#findKey) for finding indexes & keys
* [_.forEach](http://lodash.com/docs#forEach) is chainable & supports exiting early
* [_.forIn](http://lodash.com/docs#forIn) for iterating own & inherited properties
* [_.forOwn](http://lodash.com/docs#forOwn) for iterating own properties
* [_.isPlainObject](http://lodash.com/docs#isPlainObject) for checking if values are created by `Object`
* [_.memoize](http://lodash.com/docs#memoize) exposes the `cache` of memoized functions
* [_.merge](http://lodash.com/docs#merge) for a deep [_.extend](http://lodash.com/docs#extend)
* [_.noop](http://lodash.com/docs#noop) for function placeholders
* [_.parseInt](http://lodash.com/docs#parseInt) for consistent behavior
* [_.partialRight](http://lodash.com/docs#partialRight) for [partial application](http://lodash.com/docs#partial) from the right
* [_.pull](http://lodash.com/docs#pull) & [_.remove](http://lodash.com/docs#remove) for mutating arrays
* [_.random](http://lodash.com/docs#random) supports returning floating-point numbers
* [_.runInContext](http://lodash.com/docs#runInContext) for easier mocking
* [_.support](http://lodash.com/docs#support) for flagging environment features
* [_.template](http://lodash.com/docs#template) supports [*“imports”*](http://lodash.com/docs#templateSettings_imports) options & [ES6 template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-7.8.6)
* [_.transform](http://lodash.com/docs#transform) as a powerful alternative to [_.reduce](http://lodash.com/docs#reduce) for transforming objects
* [_.where](http://lodash.com/docs#where) supports deep object comparisons
* [_.zip](http://lodash.com/docs#zip) is capable of unzipping values
* [_.omit](http://lodash.com/docs#omit), [_.pick](http://lodash.com/docs#pick), &
[more](http://lodash.com/docs "_.assign, _.clone, _.cloneDeep, _.first, _.initial, _.isEqual, _.last, _.merge, _.rest") accept callbacks
* [_.contains](http://lodash.com/docs#contains), [_.toArray](http://lodash.com/docs#toArray), &
[more](http://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.forEach, _.forEachRight, _.groupBy, _.invoke, _.map, _.max, _.min, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy, _.where") accept strings
* [_.filter](http://lodash.com/docs#filter), [_.map](http://lodash.com/docs#map), &
[more](http://lodash.com/docs "_.countBy, _.every, _.find, _.findKey, _.findLast, _.findLastIndex, _.findLastKey, _.first, _.groupBy, _.initial, _.last, _.max, _.min, _.reject, _.rest, _.some, _.sortBy, _.sortedIndex, _.uniq") support *“_.pluck”* & *“_.where”* shorthands
* [_.findLast](http://lodash.com/docs#findLast), [_.findLastIndex](http://lodash.com/docs#findLastIndex), &
[more](http://lodash.com/docs "_.findLastKey, _.forEachRight, _.forInRight, _.forOwnRight") right-associative methods
## Resources
* Podcasts
- [JavaScript Jabber](http://javascriptjabber.com/079-jsj-lo-dash-with-john-david-dalton/)
* Posts
- [Say “Hello” to Lo-Dash](http://kitcambridge.be/blog/say-hello-to-lo-dash/)
- [Custom builds in Lo-Dash 2.0](http://kitcambridge.be/blog/custom-builds-in-lo-dash-2-dot-0/)
* Videos
- [Introduction](https://vimeo.com/44154599)
- [Origins](https://vimeo.com/44154600)
- [Optimizations & builds](https://vimeo.com/44154601)
- [Native method use](https://vimeo.com/48576012)
- [Testing](https://vimeo.com/45865290)
- [CascadiaJS 12](http://www.youtube.com/watch?v=dpPy4f_SeEk)
A list of other community created podcasts, posts, & videos is available on our [wiki](https://github.com/lodash/lodash/wiki/Resources).
## Support
Tested in Chrome 5~30, Firefox 2~25, IE 6-11, Opera 9.25~17, Safari 3-7, Node.js 0.6.8-0.10.21, Narwhal 0.3.2, PhantomJS 1.9.2, RingoJS 0.9, & Rhino 1.7RC5.
Special thanks to [Sauce Labs](https://saucelabs.com/) for providing automated browser testing.<br>
[![Sauce Labs](http://lodash.com/_img/sauce.png)](https://saucelabs.com/ "Sauce Labs: Selenium Testing & More")
## Installation & usage
In browsers:
```html
<script src="lodash.js"></script>
```
Using [`npm`](http://npmjs.org/):
The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) with packages for [Bower](http://bower.io/), [Component](http://component.github.io/), & [Volo](http://volojs.org/).
Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli):
```bash
npm i --save lodash
{sudo} npm i -g lodash
npm ln lodash
$ lodash modern -o ./lodash.js
```
In [Node.js](http://nodejs.org/) & [Ringo](http://ringojs.org/):
## Community
```js
var _ = require('lodash');
// or as Underscore
var _ = require('lodash/dist/lodash.underscore');
```
[![Join the chat at https://gitter.im/lodash/lodash](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/lodash/lodash)
**Notes:**
* Dont assign values to [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL
* If Lo-Dash is installed globally, run [`npm ln lodash`](http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/) in your projects root directory *before* requiring it
## Module formats
In [Rhino](http://www.mozilla.org/rhino/):
lodash is also available in a variety of other builds & module formats.
```js
load('lodash.js');
```
* npm packages for [modern](https://www.npmjs.com/package/lodash), [compatibility](https://www.npmjs.com/package/lodash-compat), & [per method](https://www.npmjs.com/browse/keyword/lodash-modularized) builds
* AMD modules for [modern](https://github.com/lodash/lodash/tree/3.7.0-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.7.0-amd) builds
* ES modules for the [modern](https://github.com/lodash/lodash/tree/3.7.0-es) build
In an AMD loader:
## Further Reading
```js
require({
'packages': [
{ 'name': 'lodash', 'location': 'path/to/lodash', 'main': 'lodash' }
]
},
['lodash'], function(_) {
console.log(_.VERSION);
});
```
## Author
| [![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") |
|---|
| [John-David Dalton](http://allyoucanleet.com/) |
## Contributors
| [![twitter/blainebublitz](http://gravatar.com/avatar/ac1c67fd906c9fecd823ce302283b4c1?s=70)](https://twitter.com/blainebublitz "Follow @BlaineBublitz on Twitter") | [![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter") | [![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
|---|---|---|
| [Blaine Bublitz](http://www.iceddev.com/) | [Kit Cambridge](http://kitcambridge.be/) | [Mathias Bynens](http://mathiasbynens.be/) |
* [API Documentation](https://lodash.com/docs)
* [Build Differences](https://github.com/lodash/lodash/wiki/Build-Differences)
* [Changelog](https://github.com/lodash/lodash/wiki/Changelog)
* [Release Notes](https://github.com/lodash/lodash/releases)
* [Roadmap](https://github.com/lodash/lodash/wiki/Roadmap)
* [More Resources](https://github.com/lodash/lodash/wiki/Resources)

View File

@@ -1,20 +1,17 @@
{
"name": "lodash",
"version": "2.3.0",
"main": "dist/lodash.compat.js",
"version": "3.7.0",
"main": "lodash.js",
"ignore": [
".*",
"*.custom.*",
"*.template.*",
"*.log",
"*.map",
"*.md",
"/*.min.*",
"/lodash.js",
"index.js",
"lodash.src.js",
"component.json",
"package.json",
"doc",
"modularize",
"node_modules",
"perf",
"test",

View File

@@ -1,12 +1,10 @@
{
"name": "lodash",
"repo": "lodash/lodash",
"version": "2.3.0",
"description": "A utility library delivering consistency, customization, performance, & extras.",
"version": "3.7.0",
"description": "The modern build of lodash.",
"license": "MIT",
"keywords": ["amd", "browser", "client", "functional", "server", "util"],
"scripts": [
"index.js",
"dist/lodash.compat.js"
]
"main": "lodash.js",
"keywords": ["stdlib", "util"],
"scripts": ["lodash.js"]
}

6952
dist/lodash.compat.js vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1,58 +0,0 @@
/**
* @license
* Lo-Dash 2.3.0 (Custom Build) lodash.com/license | Underscore.js 1.5.2 underscorejs.org/LICENSE
* Build: `lodash -o ./dist/lodash.compat.js`
*/
;(function(){function n(n,t,e){e=(e||0)-1;for(var r=n?n.length:0;++e<r;)if(n[e]===t)return e;return-1}function t(t,e){var r=typeof e;if(t=t.l,"boolean"==r||null==e)return t[e]?0:-1;"number"!=r&&"string"!=r&&(r="object");var u="number"==r?e:b+e;return t=(t=t[r])&&t[u],"object"==r?t&&-1<n(t,e)?0:-1:t?0:-1}function e(n){var t=this.l,e=typeof n;if("boolean"==e||null==n)t[n]=true;else{"number"!=e&&"string"!=e&&(e="object");var r="number"==e?n:b+n,t=t[e]||(t[e]={});"object"==e?(t[r]||(t[r]=[])).push(n):t[r]=true
}}function r(n){return n.charCodeAt(0)}function u(n,t){var e=n.m,r=t.m;if(e!==r){if(e>r||typeof e=="undefined")return 1;if(e<r||typeof r=="undefined")return-1}return n.n-t.n}function o(n){var t=-1,r=n.length,u=n[0],o=n[r/2|0],a=n[r-1];if(u&&typeof u=="object"&&o&&typeof o=="object"&&a&&typeof a=="object")return false;for(u=l(),u["false"]=u["null"]=u["true"]=u.undefined=false,o=l(),o.k=n,o.l=u,o.push=e;++t<r;)o.push(n[t]);return o}function a(n){return"\\"+Y[n]}function i(){return v.pop()||[]}function l(){return y.pop()||{k:null,l:null,m:null,"false":false,n:0,"null":false,number:null,object:null,push:null,string:null,"true":false,undefined:false,o:null}
}function f(n){return typeof n.toString!="function"&&typeof(n+"")=="string"}function c(n){n.length=0,v.length<w&&v.push(n)}function p(n){var t=n.l;t&&p(t),n.k=n.l=n.m=n.object=n.number=n.string=n.o=null,y.length<w&&y.push(n)}function s(n,t,e){t||(t=0),typeof e=="undefined"&&(e=n?n.length:0);var r=-1;e=e-t||0;for(var u=Array(0>e?0:e);++r<e;)u[r]=n[t+r];return u}function g(e){function v(n){return n&&typeof n=="object"&&!We(n)&&je.call(n,"__wrapped__")?n:new y(n)}function y(n,t){this.__chain__=!!t,this.__wrapped__=n
}function w(n){function t(){if(r){var n=r.slice();Ce.apply(n,arguments)}if(this instanceof t){var o=nt(e.prototype),n=e.apply(o,n||arguments);return Ct(n)?n:o}return e.apply(u,n||arguments)}var e=n[0],r=n[2],u=n[4];return Ke(t,n),t}function Y(n,t,e,r,u){if(e){var o=e(n);if(typeof o!="undefined")return o}if(!Ct(n))return n;var a=ve.call(n);if(!H[a]||!qe.nodeClass&&f(n))return n;var l=Te[a];switch(a){case T:case z:return new l(+n);case W:case M:return new l(n);case J:return o=l(n.source,S.exec(n)),o.lastIndex=n.lastIndex,o
}if(a=We(n),t){var p=!r;r||(r=i()),u||(u=i());for(var g=r.length;g--;)if(r[g]==n)return u[g];o=a?l(n.length):{}}else o=a?s(n):nr({},n);return a&&(je.call(n,"index")&&(o.index=n.index),je.call(n,"input")&&(o.input=n.input)),t?(r.push(n),u.push(o),(a?Ze:rr)(n,function(n,a){o[a]=Y(n,t,e,r,u)}),p&&(c(r),c(u)),o):o}function nt(n){return Ct(n)?Ae(n):{}}function tt(n,t,e){if(typeof n!="function")return Qt;if(typeof t=="undefined"||!("prototype"in n))return n;var r=n.__bindData__;if(typeof r=="undefined"&&(qe.funcNames&&(r=!n.name),r=r||!qe.funcDecomp,!r)){var u=_e.call(n);
qe.funcNames||(r=!I.test(u)),r||(r=B.test(u),Ke(n,r))}if(false===r||true!==r&&1&r[1])return n;switch(e){case 1:return function(e){return n.call(t,e)};case 2:return function(e,r){return n.call(t,e,r)};case 3:return function(e,r,u){return n.call(t,e,r,u)};case 4:return function(e,r,u,o){return n.call(t,e,r,u,o)}}return Ht(n,t)}function ot(n){function t(){var n=l?a:this;if(u){var h=u.slice();Ce.apply(h,arguments)}return(o||c)&&(h||(h=s(arguments)),o&&Ce.apply(h,o),c&&h.length<i)?(r|=16,ot([e,p?r:-4&r,h,null,a,i])):(h||(h=arguments),f&&(e=n[g]),this instanceof t?(n=nt(e.prototype),h=e.apply(n,h),Ct(h)?h:n):e.apply(n,h))
}var e=n[0],r=n[1],u=n[2],o=n[3],a=n[4],i=n[5],l=1&r,f=2&r,c=4&r,p=8&r,g=e;return Ke(t,n),t}function at(e,r){var u=-1,a=yt(),i=e?e.length:0,l=i>=_&&a===n,f=[];if(l){var c=o(r);c?(a=t,r=c):l=false}for(;++u<i;)c=e[u],0>a(r,c)&&f.push(c);return l&&p(r),f}function it(n,t,e,r){r=(r||0)-1;for(var u=n?n.length:0,o=[];++r<u;){var a=n[r];if(a&&typeof a=="object"&&typeof a.length=="number"&&(We(a)||bt(a))){t||(a=it(a,t,e));var i=-1,l=a.length,f=o.length;for(o.length+=l;++i<l;)o[f++]=a[i]}else e||o.push(a)}return o
}function lt(n,t,e,r,u,o){if(e){var a=e(n,t);if(typeof a!="undefined")return!!a}if(n===t)return 0!==n||1/n==1/t;if(n===n&&!(n&&X[typeof n]||t&&X[typeof t]))return false;if(null==n||null==t)return n===t;var l=ve.call(n),p=ve.call(t);if(l==$&&(l=G),p==$&&(p=G),l!=p)return false;switch(l){case T:case z:return+n==+t;case W:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case J:case M:return n==le(t)}if(p=l==L,!p){var s=je.call(n,"__wrapped__"),g=je.call(t,"__wrapped__");if(s||g)return lt(s?n.__wrapped__:n,g?t.__wrapped__:t,e,r,u,o);
if(l!=G||!qe.nodeClass&&(f(n)||f(t)))return false;if(l=!qe.argsObject&&bt(n)?ae:n.constructor,s=!qe.argsObject&&bt(t)?ae:t.constructor,l!=s&&!(xt(l)&&l instanceof l&&xt(s)&&s instanceof s)&&"constructor"in n&&"constructor"in t)return false}for(s=!u,u||(u=i()),o||(o=i()),l=u.length;l--;)if(u[l]==n)return o[l]==t;var h=0,a=true;if(u.push(n),o.push(t),p){if(l=n.length,h=t.length,a=h==n.length,!a&&!r)return a;for(;h--;)if(p=l,s=t[h],r)for(;p--&&!(a=lt(n[p],s,e,r,u,o)););else if(!(a=lt(n[h],s,e,r,u,o)))break;return a
}return er(t,function(t,i,l){return je.call(l,i)?(h++,a=je.call(n,i)&&lt(n[i],t,e,r,u,o)):void 0}),a&&!r&&er(n,function(n,t,e){return je.call(e,t)?a=-1<--h:void 0}),s&&(c(u),c(o)),a}function ft(n,t,e,r,u){(We(t)?Nt:rr)(t,function(t,o){var a,i,l=t,f=n[o];if(t&&((i=We(t))||ur(t))){for(l=r.length;l--;)if(a=r[l]==t){f=u[l];break}if(!a){var c;e&&(l=e(f,t),c=typeof l!="undefined")&&(f=l),c||(f=i?We(f)?f:[]:ur(f)?f:{}),r.push(t),u.push(f),c||ft(f,t,e,r,u)}}else e&&(l=e(f,t),typeof l=="undefined"&&(l=t)),typeof l!="undefined"&&(f=l);
n[o]=f})}function ct(n,t){return n+be(Le()*(t-n+1))}function pt(e,r,u){var a=-1,l=yt(),f=e?e.length:0,s=[],g=!r&&f>=_&&l===n,h=u||g?i():s;if(g){var v=o(h);v?(l=t,h=v):(g=false,h=u?h:(c(h),s))}for(;++a<f;){var v=e[a],y=u?u(v,a,e):v;(r?!a||h[h.length-1]!==y:0>l(h,y))&&((u||g)&&h.push(y),s.push(v))}return g?(c(h.k),p(h)):u&&c(h),s}function st(n){return function(t,e,r){var u={};if(e=v.createCallback(e,r,3),We(t)){r=-1;for(var o=t.length;++r<o;){var a=t[r];n(u,a,e(a,r,t),t)}}else Ze(t,function(t,r,o){n(u,t,e(t,r,o),o)
});return u}}function gt(n,t,e,r,u,o){var a=1&t,i=4&t,l=16&t,f=32&t;if(!(2&t||xt(n)))throw new fe;l&&!e.length&&(t&=-17,l=e=false),f&&!r.length&&(t&=-33,f=r=false);var c=n&&n.__bindData__;return c&&true!==c?(c=c.slice(),!a||1&c[1]||(c[4]=u),!a&&1&c[1]&&(t|=8),!i||4&c[1]||(c[5]=o),l&&Ce.apply(c[2]||(c[2]=[]),e),f&&Ce.apply(c[3]||(c[3]=[]),r),c[1]|=t,gt.apply(null,c)):(1==t||17===t?w:ot)([n,t,e,r,u,o])}function ht(){Q.h=F,Q.b=Q.c=Q.g=Q.i="",Q.e="t",Q.j=true;for(var n,t=0;n=arguments[t];t++)for(var e in n)Q[e]=n[e];
t=Q.a,Q.d=/^[^,]+/.exec(t)[0],n=re,t="return function("+t+"){",e=Q;var r="var n,t="+e.d+",E="+e.e+";if(!t)return E;"+e.i+";";e.b?(r+="var u=t.length;n=-1;if("+e.b+"){",qe.unindexedChars&&(r+="if(s(t)){t=t.split('')}"),r+="while(++n<u){"+e.g+";}}else{"):qe.nonEnumArgs&&(r+="var u=t.length;n=-1;if(u&&p(t)){while(++n<u){n+='';"+e.g+";}}else{"),qe.enumPrototypes&&(r+="var G=typeof t=='function';"),qe.enumErrorProps&&(r+="var F=t===k||t instanceof Error;");var u=[];if(qe.enumPrototypes&&u.push('!(G&&n=="prototype")'),qe.enumErrorProps&&u.push('!(F&&(n=="message"||n=="name"))'),e.j&&e.f)r+="var C=-1,D=B[typeof t]&&v(t),u=D?D.length:0;while(++C<u){n=D[C];",u.length&&(r+="if("+u.join("&&")+"){"),r+=e.g+";",u.length&&(r+="}"),r+="}";
else if(r+="for(n in t){",e.j&&u.push("m.call(t, n)"),u.length&&(r+="if("+u.join("&&")+"){"),r+=e.g+";",u.length&&(r+="}"),r+="}",qe.nonEnumShadows){for(r+="if(t!==A){var i=t.constructor,r=t===(i&&i.prototype),f=t===J?I:t===k?j:L.call(t),x=y[f];",k=0;7>k;k++)r+="n='"+e.h[k]+"';if((!(r&&x[n])&&m.call(t,n))",e.j||(r+="||(!x[n]&&t[n]!==A[n])"),r+="){"+e.g+"}";r+="}"}return(e.b||qe.nonEnumArgs)&&(r+="}"),r+=e.c+";return E",n("d,j,k,m,o,p,q,s,v,A,B,y,I,J,L",t+r+"}")(tt,q,pe,je,d,bt,We,Et,Q.f,se,X,ze,M,ge,ve)
}function vt(n){return Ve[n]}function yt(){var t=(t=v.indexOf)===qt?n:t;return t}function mt(n){var t,e;return!n||ve.call(n)!=G||(t=n.constructor,xt(t)&&!(t instanceof t))||!qe.argsClass&&bt(n)||!qe.nodeClass&&f(n)?false:qe.ownLast?(er(n,function(n,t,r){return e=je.call(r,t),false}),false!==e):(er(n,function(n,t){e=t}),typeof e=="undefined"||je.call(n,e))}function dt(n){return Qe[n]}function bt(n){return n&&typeof n=="object"&&typeof n.length=="number"&&ve.call(n)==$||false}function _t(n,t,e){var r=Je(n),u=r.length;
for(t=tt(t,e,3);u--&&(e=r[u],false!==t(n[e],e,n)););return n}function wt(n){var t=[];return er(n,function(n,e){xt(n)&&t.push(e)}),t.sort()}function jt(n){for(var t=-1,e=Je(n),r=e.length,u={};++t<r;){var o=e[t];u[n[o]]=o}return u}function xt(n){return typeof n=="function"}function Ct(n){return!(!n||!X[typeof n])}function kt(n){return typeof n=="number"||n&&typeof n=="object"&&ve.call(n)==W||false}function Et(n){return typeof n=="string"||n&&typeof n=="object"&&ve.call(n)==M||false}function Ot(n){for(var t=-1,e=Je(n),r=e.length,u=ne(r);++t<r;)u[t]=n[e[t]];
return u}function St(n,t,e){var r=-1,u=yt(),o=n?n.length:0,a=false;return e=(0>e?Re(0,o+e):e)||0,We(n)?a=-1<u(n,t,e):typeof o=="number"?a=-1<(Et(n)?n.indexOf(t,e):u(n,t,e)):Ze(n,function(n){return++r<e?void 0:!(a=n===t)}),a}function It(n,t,e){var r=true;if(t=v.createCallback(t,e,3),We(n)){e=-1;for(var u=n.length;++e<u&&(r=!!t(n[e],e,n)););}else Ze(n,function(n,e,u){return r=!!t(n,e,u)});return r}function At(n,t,e){var r=[];if(t=v.createCallback(t,e,3),We(n)){e=-1;for(var u=n.length;++e<u;){var o=n[e];
t(o,e,n)&&r.push(o)}}else Ze(n,function(n,e,u){t(n,e,u)&&r.push(n)});return r}function Dt(n,t,e){if(t=v.createCallback(t,e,3),!We(n)){var r;return Ze(n,function(n,e,u){return t(n,e,u)?(r=n,false):void 0}),r}e=-1;for(var u=n.length;++e<u;){var o=n[e];if(t(o,e,n))return o}}function Nt(n,t,e){if(t&&typeof e=="undefined"&&We(n)){e=-1;for(var r=n.length;++e<r&&false!==t(n[e],e,n););}else Ze(n,t,e);return n}function Bt(n,t,e){var r=n,u=n?n.length:0;if(t=t&&typeof e=="undefined"?t:tt(t,e,3),We(n))for(;u--&&false!==t(n[u],u,n););else{if(typeof u!="number")var o=Je(n),u=o.length;
else qe.unindexedChars&&Et(n)&&(r=n.split(""));Ze(n,function(n,e,a){return e=o?o[--u]:--u,t(r[e],e,a)})}return n}function Pt(n,t,e){var r=-1,u=n?n.length:0,o=ne(typeof u=="number"?u:0);if(t=v.createCallback(t,e,3),We(n))for(;++r<u;)o[r]=t(n[r],r,n);else Ze(n,function(n,e,u){o[++r]=t(n,e,u)});return o}function Rt(n,t,e){var u=-1/0,o=u;if(typeof t!="function"&&e&&e[t]===n&&(t=null),null==t&&We(n)){e=-1;for(var a=n.length;++e<a;){var i=n[e];i>o&&(o=i)}}else t=null==t&&Et(n)?r:v.createCallback(t,e,3),Ze(n,function(n,e,r){e=t(n,e,r),e>u&&(u=e,o=n)
});return o}function Ft(n,t,e,r){var u=3>arguments.length;if(t=v.createCallback(t,r,4),We(n)){var o=-1,a=n.length;for(u&&(e=n[++o]);++o<a;)e=t(e,n[o],o,n)}else Ze(n,function(n,r,o){e=u?(u=false,n):t(e,n,r,o)});return e}function $t(n,t,e,r){var u=3>arguments.length;return t=v.createCallback(t,r,4),Bt(n,function(n,r,o){e=u?(u=false,n):t(e,n,r,o)}),e}function Lt(n){var t=-1,e=n?n.length:0,r=ne(typeof e=="number"?e:0);return Nt(n,function(n){var e=ct(0,++t);r[t]=r[e],r[e]=n}),r}function Tt(n,t,e){var r;if(t=v.createCallback(t,e,3),We(n)){e=-1;
for(var u=n.length;++e<u&&!(r=t(n[e],e,n)););}else Ze(n,function(n,e,u){return!(r=t(n,e,u))});return!!r}function zt(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=-1;for(t=v.createCallback(t,e,3);++o<u&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[0]:h;return s(n,0,Fe(Re(0,r),u))}function qt(t,e,r){if(typeof r=="number"){var u=t?t.length:0;r=0>r?Re(0,u+r):r||0}else if(r)return r=Wt(t,e),t[r]===e?r:-1;return n(t,e,r)}function Kt(n,t,e){if(typeof t!="number"&&null!=t){var r=0,u=-1,o=n?n.length:0;
for(t=v.createCallback(t,e,3);++u<o&&t(n[u],u,n);)r++}else r=null==t||e?1:Re(0,t);return s(n,r)}function Wt(n,t,e,r){var u=0,o=n?n.length:u;for(e=e?v.createCallback(e,r,1):Qt,t=e(t);u<o;)r=u+o>>>1,e(n[r])<t?u=r+1:o=r;return u}function Gt(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=typeof t!="function"&&r&&r[t]===n?null:t,t=false),null!=e&&(e=v.createCallback(e,r,3)),pt(n,t,e)}function Jt(){for(var n=1<arguments.length?arguments:arguments[0],t=-1,e=n?Rt(lr(n,"length")):0,r=ne(0>e?0:e);++t<e;)r[t]=lr(n,t);
return r}function Mt(n,t){for(var e=-1,r=n?n.length:0,u={};++e<r;){var o=n[e];t?u[o]=t[e]:o&&(u[o[0]]=o[1])}return u}function Ht(n,t){return 2<arguments.length?gt(n,17,s(arguments,2),null,t):gt(n,1,null,null,t)}function Ut(n,t,e){var r,u,o,a,i,l,f,c=0,p=false,s=true;if(!xt(n))throw new fe;if(t=Re(0,t)||0,true===e)var g=true,s=false;else Ct(e)&&(g=e.leading,p="maxWait"in e&&(Re(t,e.maxWait)||0),s="trailing"in e?e.trailing:s);var v=function(){var e=t-(xe()-a);0<e?l=Ee(v,e):(u&&de(u),e=f,u=l=f=h,e&&(c=xe(),o=n.apply(i,r),l||u||(r=i=null)))
},y=function(){l&&de(l),u=l=f=h,(s||p!==t)&&(c=xe(),o=n.apply(i,r),l||u||(r=i=null))};return function(){if(r=arguments,a=xe(),i=this,f=s&&(l||!g),false===p)var e=g&&!l;else{u||g||(c=a);var h=p-(a-c),m=0>=h;m?(u&&(u=de(u)),c=a,o=n.apply(i,r)):u||(u=Ee(y,h))}return m&&l?l=de(l):l||t===p||(l=Ee(v,t)),e&&(m=true,o=n.apply(i,r)),!m||l||u||(r=i=null),o}}function Vt(n){if(!xt(n))throw new fe;var t=s(arguments,1);return Ee(function(){n.apply(h,t)},1)}function Qt(n){return n}function Xt(n,t){var e=n,r=!t||xt(e);
t||(e=y,t=n,n=v),Nt(wt(t),function(u){var o=n[u]=t[u];r&&(e.prototype[u]=function(){var t=this.__wrapped__,r=[t];return Ce.apply(r,arguments),r=o.apply(n,r),t&&typeof t=="object"&&t===r?this:(r=new e(r),r.__chain__=this.__chain__,r)})})}function Yt(){}function Zt(){return this.__wrapped__}e=e?ut.defaults(Z.Object(),e,ut.pick(Z,R)):Z;var ne=e.Array,te=e.Boolean,ee=e.Date,re=e.Function,ue=e.Math,oe=e.Number,ae=e.Object,ie=e.RegExp,le=e.String,fe=e.TypeError,ce=[],pe=e.Error.prototype,se=ae.prototype,ge=le.prototype,he=e._,ve=se.toString,ye=ie("^"+le(ve).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$"),me=ue.ceil,de=e.clearTimeout,be=ue.floor,_e=re.prototype.toString,we=ye.test(we=ae.getPrototypeOf)&&we,je=se.hasOwnProperty,xe=ye.test(xe=ee.now)&&xe||function(){return+new ee
},Ce=ce.push,ke=se.propertyIsEnumerable,Ee=e.setTimeout,Oe=ce.splice,Se=typeof(Se=rt&&et&&rt.setImmediate)=="function"&&!ye.test(Se)&&Se,Ie=function(){try{var n={},t=ye.test(t=ae.defineProperty)&&t,e=t(n,n,n)&&t}catch(r){}return e}(),Ae=ye.test(Ae=ae.create)&&Ae,De=ye.test(De=ne.isArray)&&De,Ne=e.isFinite,Be=e.isNaN,Pe=ye.test(Pe=ae.keys)&&Pe,Re=ue.max,Fe=ue.min,$e=e.parseInt,Le=ue.random,Te={};Te[L]=ne,Te[T]=te,Te[z]=ee,Te[K]=re,Te[G]=ae,Te[W]=oe,Te[J]=ie,Te[M]=le;var ze={};ze[L]=ze[z]=ze[W]={constructor:true,toLocaleString:true,toString:true,valueOf:true},ze[T]=ze[M]={constructor:true,toString:true,valueOf:true},ze[q]=ze[K]=ze[J]={constructor:true,toString:true},ze[G]={constructor:true},function(){for(var n=F.length;n--;){var t,e=F[n];
for(t in ze)je.call(ze,t)&&!je.call(ze[t],e)&&(ze[t][e]=false)}}(),y.prototype=v.prototype;var qe=v.support={};!function(){var n=function(){this.x=1},t={0:1,length:1},r=[];n.prototype={valueOf:1,y:1};for(var u in new n)r.push(u);for(u in arguments);qe.argsClass=ve.call(arguments)==$,qe.argsObject=arguments.constructor==ae&&!(arguments instanceof ne),qe.enumErrorProps=ke.call(pe,"message")||ke.call(pe,"name"),qe.enumPrototypes=ke.call(n,"prototype"),qe.funcDecomp=!ye.test(e.WinRTError)&&B.test(g),qe.funcNames=typeof re.name=="string",qe.nonEnumArgs=0!=u,qe.nonEnumShadows=!/valueOf/.test(r),qe.ownLast="x"!=r[0],qe.spliceObjects=(ce.splice.call(t,0,1),!t[0]),qe.unindexedChars="xx"!="x"[0]+ae("x")[0];
try{qe.nodeClass=!(ve.call(document)==G&&!({toString:0}+""))}catch(o){qe.nodeClass=true}}(1),v.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:A,variable:"",imports:{_:v}},Ae||(nt=function(){function n(){}return function(t){if(Ct(t)){n.prototype=t;var r=new n;n.prototype=null}return r||e.Object()}}());var Ke=Ie?function(n,t){V.value=t,Ie(n,"__bindData__",V)}:Yt;qe.argsClass||(bt=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&je.call(n,"callee")&&!ke.call(n,"callee")||false
});var We=De||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&ve.call(n)==L||false},Ge=ht({a:"z",e:"[]",i:"if(!(B[typeof z]))return E",g:"E.push(n)"}),Je=Pe?function(n){return Ct(n)?qe.enumPrototypes&&typeof n=="function"||qe.nonEnumArgs&&n.length&&bt(n)?Ge(n):Pe(n):[]}:Ge,Me={a:"g,e,K",i:"e=e&&typeof K=='undefined'?e:d(e,K,3)",b:"typeof u=='number'",v:Je,g:"if(e(t[n],n,g)===false)return E"},He={a:"z,H,l",i:"var a=arguments,b=0,c=typeof l=='number'?2:a.length;while(++b<c){t=a[b];if(t&&B[typeof t]){",v:Je,g:"if(typeof E[n]=='undefined')E[n]=t[n]",c:"}}"},Ue={i:"if(!B[typeof t])return E;"+Me.i,b:false},Ve={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Qe=jt(Ve),Xe=ie("("+Je(Qe).join("|")+")","g"),Ye=ie("["+Je(Ve).join("")+"]","g"),Ze=ht(Me),nr=ht(He,{i:He.i.replace(";",";if(c>3&&typeof a[c-2]=='function'){var e=d(a[--c-1],a[c--],2)}else if(c>2&&typeof a[c-1]=='function'){e=a[--c]}"),g:"E[n]=e?e(E[n],t[n]):t[n]"}),tr=ht(He),er=ht(Me,Ue,{j:false}),rr=ht(Me,Ue);
xt(/x/)&&(xt=function(n){return typeof n=="function"&&ve.call(n)==K});var ur=we?function(n){if(!n||ve.call(n)!=G||!qe.argsClass&&bt(n))return false;var t=n.valueOf,e=typeof t=="function"&&(e=we(t))&&we(e);return e?n==e||we(n)==e:mt(n)}:mt,or=st(function(n,t,e){je.call(n,e)?n[e]++:n[e]=1}),ar=st(function(n,t,e){(je.call(n,e)?n[e]:n[e]=[]).push(t)}),ir=st(function(n,t,e){n[e]=t}),lr=Pt;Se&&(Vt=function(n){if(!xt(n))throw new fe;return Se.apply(e,arguments)});var fr=8==$e(j+"08")?$e:function(n,t){return $e(Et(n)?n.replace(D,""):n,t||0)
};return v.after=function(n,t){if(!xt(t))throw new fe;return function(){return 1>--n?t.apply(this,arguments):void 0}},v.assign=nr,v.at=function(n){var t=arguments,e=-1,r=it(t,true,false,1),t=t[2]&&t[2][t[1]]===n?1:r.length,u=ne(t);for(qe.unindexedChars&&Et(n)&&(n=n.split(""));++e<t;)u[e]=n[r[e]];return u},v.bind=Ht,v.bindAll=function(n){for(var t=1<arguments.length?it(arguments,true,false,1):wt(n),e=-1,r=t.length;++e<r;){var u=t[e];n[u]=gt(n[u],1,null,null,n)}return n},v.bindKey=function(n,t){return 2<arguments.length?gt(t,19,s(arguments,2),null,n):gt(t,3,null,null,n)
},v.chain=function(n){return n=new y(n),n.__chain__=true,n},v.compact=function(n){for(var t=-1,e=n?n.length:0,r=[];++t<e;){var u=n[t];u&&r.push(u)}return r},v.compose=function(){for(var n=arguments,t=n.length;t--;)if(!xt(n[t]))throw new fe;return function(){for(var t=arguments,e=n.length;e--;)t=[n[e].apply(this,t)];return t[0]}},v.countBy=or,v.create=function(n,t){var e=nt(n);return t?nr(e,t):e},v.createCallback=function(n,t,e){var r=typeof n;if(null==n||"function"==r)return tt(n,t,e);if("object"!=r)return function(t){return t[n]
};var u=Je(n),o=u[0],a=n[o];return 1!=u.length||a!==a||Ct(a)?function(t){for(var e=u.length,r=false;e--&&(r=lt(t[u[e]],n[u[e]],null,true)););return r}:function(n){return n=n[o],a===n&&(0!==a||1/a==1/n)}},v.curry=function(n,t){return t=typeof t=="number"?t:+t||n.length,gt(n,4,null,null,null,t)},v.debounce=Ut,v.defaults=tr,v.defer=Vt,v.delay=function(n,t){if(!xt(n))throw new fe;var e=s(arguments,2);return Ee(function(){n.apply(h,e)},t)},v.difference=function(n){return at(n,it(arguments,true,true,1))},v.filter=At,v.flatten=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=typeof t!="function"&&r&&r[t]===n?null:t,t=false),null!=e&&(n=Pt(n,e,r)),it(n,t)
},v.forEach=Nt,v.forEachRight=Bt,v.forIn=er,v.forInRight=function(n,t,e){var r=[];er(n,function(n,t){r.push(t,n)});var u=r.length;for(t=tt(t,e,3);u--&&false!==t(r[u--],r[u],n););return n},v.forOwn=rr,v.forOwnRight=_t,v.functions=wt,v.groupBy=ar,v.indexBy=ir,v.initial=function(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=u;for(t=v.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else r=null==t||e?1:t||r;return s(n,0,Fe(Re(0,u-r),u))},v.intersection=function(e){for(var r=arguments,u=r.length,a=-1,l=i(),f=-1,s=yt(),g=e?e.length:0,h=[],v=i();++a<u;){var y=r[a];
l[a]=s===n&&(y?y.length:0)>=_&&o(a?r[a]:v)}n:for(;++f<g;){var m=l[0],y=e[f];if(0>(m?t(m,y):s(v,y))){for(a=u,(m||v).push(y);--a;)if(m=l[a],0>(m?t(m,y):s(r[a],y)))continue n;h.push(y)}}for(;u--;)(m=l[u])&&p(m);return c(l),c(v),h},v.invert=jt,v.invoke=function(n,t){var e=s(arguments,2),r=-1,u=typeof t=="function",o=n?n.length:0,a=ne(typeof o=="number"?o:0);return Nt(n,function(n){a[++r]=(u?t:n[t]).apply(n,e)}),a},v.keys=Je,v.map=Pt,v.max=Rt,v.memoize=function(n,t){if(!xt(n))throw new fe;var e=function(){var r=e.cache,u=t?t.apply(this,arguments):b+arguments[0];
return je.call(r,u)?r[u]:r[u]=n.apply(this,arguments)};return e.cache={},e},v.merge=function(n){var t=arguments,e=2;if(!Ct(n))return n;if("number"!=typeof t[2]&&(e=t.length),3<e&&"function"==typeof t[e-2])var r=tt(t[--e-1],t[e--],2);else 2<e&&"function"==typeof t[e-1]&&(r=t[--e]);for(var t=s(arguments,1,e),u=-1,o=i(),a=i();++u<e;)ft(n,t[u],r,o,a);return c(o),c(a),n},v.min=function(n,t,e){var u=1/0,o=u;if(typeof t!="function"&&e&&e[t]===n&&(t=null),null==t&&We(n)){e=-1;for(var a=n.length;++e<a;){var i=n[e];
i<o&&(o=i)}}else t=null==t&&Et(n)?r:v.createCallback(t,e,3),Ze(n,function(n,e,r){e=t(n,e,r),e<u&&(u=e,o=n)});return o},v.omit=function(n,t,e){var r={};if(typeof t!="function"){var u=[];er(n,function(n,t){u.push(t)});for(var u=at(u,it(arguments,true,false,1)),o=-1,a=u.length;++o<a;){var i=u[o];r[i]=n[i]}}else t=v.createCallback(t,e,3),er(n,function(n,e,u){t(n,e,u)||(r[e]=n)});return r},v.once=function(n){var t,e;if(!xt(n))throw new fe;return function(){return t?e:(t=true,e=n.apply(this,arguments),n=null,e)
}},v.pairs=function(n){for(var t=-1,e=Je(n),r=e.length,u=ne(r);++t<r;){var o=e[t];u[t]=[o,n[o]]}return u},v.partial=function(n){return gt(n,16,s(arguments,1))},v.partialRight=function(n){return gt(n,32,null,s(arguments,1))},v.pick=function(n,t,e){var r={};if(typeof t!="function")for(var u=-1,o=it(arguments,true,false,1),a=Ct(n)?o.length:0;++u<a;){var i=o[u];i in n&&(r[i]=n[i])}else t=v.createCallback(t,e,3),er(n,function(n,e,u){t(n,e,u)&&(r[e]=n)});return r},v.pluck=lr,v.pull=function(n){for(var t=arguments,e=0,r=t.length,u=n?n.length:0;++e<r;)for(var o=-1,a=t[e];++o<u;)n[o]===a&&(Oe.call(n,o--,1),u--);
return n},v.range=function(n,t,e){n=+n||0,e=typeof e=="number"?e:+e||1,null==t&&(t=n,n=0);var r=-1;t=Re(0,me((t-n)/(e||1)));for(var u=ne(t);++r<t;)u[r]=n,n+=e;return u},v.reject=function(n,t,e){return t=v.createCallback(t,e,3),At(n,function(n,e,r){return!t(n,e,r)})},v.remove=function(n,t,e){var r=-1,u=n?n.length:0,o=[];for(t=v.createCallback(t,e,3);++r<u;)e=n[r],t(e,r,n)&&(o.push(e),Oe.call(n,r--,1),u--);return o},v.rest=Kt,v.shuffle=Lt,v.sortBy=function(n,t,e){var r=-1,o=n?n.length:0,a=ne(typeof o=="number"?o:0);
for(t=v.createCallback(t,e,3),Nt(n,function(n,e,u){var o=a[++r]=l();o.m=t(n,e,u),o.n=r,o.o=n}),o=a.length,a.sort(u);o--;)n=a[o],a[o]=n.o,p(n);return a},v.tap=function(n,t){return t(n),n},v.throttle=function(n,t,e){var r=true,u=true;if(!xt(n))throw new fe;return false===e?r=false:Ct(e)&&(r="leading"in e?e.leading:r,u="trailing"in e?e.trailing:u),U.leading=r,U.maxWait=t,U.trailing=u,Ut(n,t,U)},v.times=function(n,t,e){n=-1<(n=+n)?n:0;var r=-1,u=ne(n);for(t=tt(t,e,1);++r<n;)u[r]=t(r);return u},v.toArray=function(n){return n&&typeof n.length=="number"?qe.unindexedChars&&Et(n)?n.split(""):s(n):Ot(n)
},v.transform=function(n,t,e,r){var u=We(n);if(null==e)if(u)e=[];else{var o=n&&n.constructor;e=nt(o&&o.prototype)}return t&&(t=v.createCallback(t,r,4),(u?Ze:rr)(n,function(n,r,u){return t(e,n,r,u)})),e},v.union=function(){return pt(it(arguments,true,true))},v.uniq=Gt,v.values=Ot,v.where=At,v.without=function(n){return at(n,s(arguments,1))},v.wrap=function(n,t){return gt(t,16,[n])},v.zip=Jt,v.zipObject=Mt,v.collect=Pt,v.drop=Kt,v.each=Nt,v.eachRight=Bt,v.extend=nr,v.methods=wt,v.object=Mt,v.select=At,v.tail=Kt,v.unique=Gt,v.unzip=Jt,Xt(v),v.clone=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=t,t=false),Y(n,t,typeof e=="function"&&tt(e,r,1))
},v.cloneDeep=function(n,t,e){return Y(n,true,typeof t=="function"&&tt(t,e,1))},v.contains=St,v.escape=function(n){return null==n?"":le(n).replace(Ye,vt)},v.every=It,v.find=Dt,v.findIndex=function(n,t,e){var r=-1,u=n?n.length:0;for(t=v.createCallback(t,e,3);++r<u;)if(t(n[r],r,n))return r;return-1},v.findKey=function(n,t,e){var r;return t=v.createCallback(t,e,3),rr(n,function(n,e,u){return t(n,e,u)?(r=e,false):void 0}),r},v.findLast=function(n,t,e){var r;return t=v.createCallback(t,e,3),Bt(n,function(n,e,u){return t(n,e,u)?(r=n,false):void 0
}),r},v.findLastIndex=function(n,t,e){var r=n?n.length:0;for(t=v.createCallback(t,e,3);r--;)if(t(n[r],r,n))return r;return-1},v.findLastKey=function(n,t,e){var r;return t=v.createCallback(t,e,3),_t(n,function(n,e,u){return t(n,e,u)?(r=e,false):void 0}),r},v.has=function(n,t){return n?je.call(n,t):false},v.identity=Qt,v.indexOf=qt,v.isArguments=bt,v.isArray=We,v.isBoolean=function(n){return true===n||false===n||n&&typeof n=="object"&&ve.call(n)==T||false},v.isDate=function(n){return n&&typeof n=="object"&&ve.call(n)==z||false
},v.isElement=function(n){return n&&1===n.nodeType||false},v.isEmpty=function(n){var t=true;if(!n)return t;var e=ve.call(n),r=n.length;return e==L||e==M||(qe.argsClass?e==$:bt(n))||e==G&&typeof r=="number"&&xt(n.splice)?!r:(rr(n,function(){return t=false}),t)},v.isEqual=function(n,t,e,r){return lt(n,t,typeof e=="function"&&tt(e,r,2))},v.isFinite=function(n){return Ne(n)&&!Be(parseFloat(n))},v.isFunction=xt,v.isNaN=function(n){return kt(n)&&n!=+n},v.isNull=function(n){return null===n},v.isNumber=kt,v.isObject=Ct,v.isPlainObject=ur,v.isRegExp=function(n){return n&&X[typeof n]&&ve.call(n)==J||false
},v.isString=Et,v.isUndefined=function(n){return typeof n=="undefined"},v.lastIndexOf=function(n,t,e){var r=n?n.length:0;for(typeof e=="number"&&(r=(0>e?Re(0,r+e):Fe(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},v.mixin=Xt,v.noConflict=function(){return e._=he,this},v.noop=Yt,v.parseInt=fr,v.random=function(n,t,e){var r=null==n,u=null==t;return null==e&&(typeof n=="boolean"&&u?(e=n,n=1):u||typeof t!="boolean"||(e=t,u=true)),r&&u&&(t=1),n=+n||0,u?(t=n,n=0):t=+t||0,e||n%1||t%1?(e=Le(),Fe(n+e*(t-n+parseFloat("1e-"+((e+"").length-1))),t)):ct(n,t)
},v.reduce=Ft,v.reduceRight=$t,v.result=function(n,t){if(n){var e=n[t];return xt(e)?n[t]():e}},v.runInContext=g,v.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:Je(n).length},v.some=Tt,v.sortedIndex=Wt,v.template=function(n,t,e){var r=v.templateSettings;n=le(n||""),e=tr({},e,r);var u,o=tr({},e.imports,r.imports),r=Je(o),o=Ot(o),i=0,l=e.interpolate||N,f="__p+='",l=ie((e.escape||N).source+"|"+l.source+"|"+(l===A?O:N).source+"|"+(e.evaluate||N).source+"|$","g");n.replace(l,function(t,e,r,o,l,c){return r||(r=o),f+=n.slice(i,c).replace(P,a),e&&(f+="'+__e("+e+")+'"),l&&(u=true,f+="';"+l+";\n__p+='"),r&&(f+="'+((__t=("+r+"))==null?'':__t)+'"),i=c+t.length,t
}),f+="';",l=e=e.variable,l||(e="obj",f="with("+e+"){"+f+"}"),f=(u?f.replace(x,""):f).replace(C,"$1").replace(E,"$1;"),f="function("+e+"){"+(l?"":e+"||("+e+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+f+"return __p}";try{var c=re(r,"return "+f).apply(h,o)}catch(p){throw p.source=f,p}return t?c(t):(c.source=f,c)},v.unescape=function(n){return null==n?"":le(n).replace(Xe,dt)},v.uniqueId=function(n){var t=++m;return le(null==n?"":n)+t
},v.all=It,v.any=Tt,v.detect=Dt,v.findWhere=Dt,v.foldl=Ft,v.foldr=$t,v.include=St,v.inject=Ft,rr(v,function(n,t){v.prototype[t]||(v.prototype[t]=function(){var t=[this.__wrapped__],e=this.__chain__;return Ce.apply(t,arguments),t=n.apply(v,t),e?new y(t,e):t})}),v.first=zt,v.last=function(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=u;for(t=v.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[u-1]:h;return s(n,Re(0,u-r))},v.sample=function(n,t,e){return n&&typeof n.length!="number"?n=Ot(n):qe.unindexedChars&&Et(n)&&(n=n.split("")),null==t||e?n?n[ct(0,n.length-1)]:h:(n=Lt(n),n.length=Fe(Re(0,t),n.length),n)
},v.take=zt,v.head=zt,rr(v,function(n,t){var e="sample"!==t;v.prototype[t]||(v.prototype[t]=function(t,r){var u=this.__chain__,o=n(this.__wrapped__,t,r);return u||null!=t&&(!r||e&&typeof t=="function")?new y(o,u):o})}),v.VERSION="2.3.0",v.prototype.chain=function(){return this.__chain__=true,this},v.prototype.toString=function(){return le(this.__wrapped__)},v.prototype.value=Zt,v.prototype.valueOf=Zt,Ze(["join","pop","shift"],function(n){var t=ce[n];v.prototype[n]=function(){var n=this.__chain__,e=t.apply(this.__wrapped__,arguments);
return n?new y(e,n):e}}),Ze(["push","reverse","sort","unshift"],function(n){var t=ce[n];v.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),Ze(["concat","slice","splice"],function(n){var t=ce[n];v.prototype[n]=function(){return new y(t.apply(this.__wrapped__,arguments),this.__chain__)}}),qe.spliceObjects||Ze(["pop","shift","splice"],function(n){var t=ce[n],e="splice"==n;v.prototype[n]=function(){var n=this.__chain__,r=this.__wrapped__,u=t.apply(r,arguments);return 0===r.length&&delete r[0],n||e?new y(u,n):u
}}),v}var h,v=[],y=[],m=0,d={},b=+new Date+"",_=75,w=40,j=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",x=/\b__p\+='';/g,C=/\b(__p\+=)''\+/g,E=/(__e\(.*?\)|\b__t\))\+'';/g,O=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,S=/\w*$/,I=/^\s*function[ \n\r\t]+\w/,A=/<%=([\s\S]+?)%>/g,D=RegExp("^["+j+"]*0+(?=.$)"),N=/($^)/,B=/\bthis\b/,P=/['\n\r\t\u2028\u2029\\]/g,R="Array Boolean Date Error Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),F="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "),$="[object Arguments]",L="[object Array]",T="[object Boolean]",z="[object Date]",q="[object Error]",K="[object Function]",W="[object Number]",G="[object Object]",J="[object RegExp]",M="[object String]",H={};
H[K]=false,H[$]=H[L]=H[T]=H[z]=H[W]=H[G]=H[J]=H[M]=true;var U={leading:false,maxWait:0,trailing:false},V={configurable:false,enumerable:false,value:null,writable:false},Q={a:"",b:null,c:"",d:"",e:"",v:null,g:"",h:null,support:null,i:"",j:false},X={"boolean":false,"function":true,object:true,number:false,string:false,undefined:false},Y={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},Z=X[typeof window]&&window||this,nt=X[typeof exports]&&exports&&!exports.nodeType&&exports,tt=X[typeof module]&&module&&!module.nodeType&&module,et=tt&&tt.exports===nt&&nt,rt=X[typeof global]&&global;
!rt||rt.global!==rt&&rt.window!==rt||(Z=rt);var ut=g();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Z._=ut, define(function(){return ut})):nt&&tt?et?(tt.exports=ut)._=ut:nt._=ut:Z._=ut}).call(this);

6591
dist/lodash.js vendored

File diff suppressed because it is too large Load Diff

55
dist/lodash.min.js vendored
View File

@@ -1,55 +0,0 @@
/**
* @license
* Lo-Dash 2.3.0 (Custom Build) lodash.com/license | Underscore.js 1.5.2 underscorejs.org/LICENSE
* Build: `lodash modern -o ./dist/lodash.js`
*/
;(function(){function n(n,t,e){e=(e||0)-1;for(var r=n?n.length:0;++e<r;)if(n[e]===t)return e;return-1}function t(t,e){var r=typeof e;if(t=t.l,"boolean"==r||null==e)return t[e]?0:-1;"number"!=r&&"string"!=r&&(r="object");var u="number"==r?e:m+e;return t=(t=t[r])&&t[u],"object"==r?t&&-1<n(t,e)?0:-1:t?0:-1}function e(n){var t=this.l,e=typeof n;if("boolean"==e||null==n)t[n]=true;else{"number"!=e&&"string"!=e&&(e="object");var r="number"==e?n:m+n,t=t[e]||(t[e]={});"object"==e?(t[r]||(t[r]=[])).push(n):t[r]=true
}}function r(n){return n.charCodeAt(0)}function u(n,t){var e=n.m,r=t.m;if(e!==r){if(e>r||typeof e=="undefined")return 1;if(e<r||typeof r=="undefined")return-1}return n.n-t.n}function o(n){var t=-1,r=n.length,u=n[0],o=n[r/2|0],i=n[r-1];if(u&&typeof u=="object"&&o&&typeof o=="object"&&i&&typeof i=="object")return false;for(u=f(),u["false"]=u["null"]=u["true"]=u.undefined=false,o=f(),o.k=n,o.l=u,o.push=e;++t<r;)o.push(n[t]);return o}function i(n){return"\\"+V[n]}function a(){return h.pop()||[]}function f(){return g.pop()||{k:null,l:null,m:null,"false":false,n:0,"null":false,number:null,object:null,push:null,string:null,"true":false,undefined:false,o:null}
}function l(n){n.length=0,h.length<b&&h.push(n)}function c(n){var t=n.l;t&&c(t),n.k=n.l=n.m=n.object=n.number=n.string=n.o=null,g.length<b&&g.push(n)}function p(n,t,e){t||(t=0),typeof e=="undefined"&&(e=n?n.length:0);var r=-1;e=e-t||0;for(var u=Array(0>e?0:e);++r<e;)u[r]=n[t+r];return u}function s(e){function h(n){if(!n||ve.call(n)!=q)return false;var t=n.valueOf,e=typeof t=="function"&&(e=be(t))&&be(e);return e?n==e||be(n)==e:yt(n)}function g(n,t,e){if(!n||!U[typeof n])return n;t=t&&typeof e=="undefined"?t:ut(t,e,3);
for(var r=-1,u=U[typeof n]&&ze(n),o=u?u.length:0;++r<o&&(e=u[r],false!==t(n[e],e,n)););return n}function b(n,t,e){var r;if(!n||!U[typeof n])return n;t=t&&typeof e=="undefined"?t:ut(t,e,3);for(r in n)if(false===t(n[r],r,n))break;return n}function V(n,t,e){var r,u=n,o=u;if(!u)return o;for(var i=arguments,a=0,f=typeof e=="number"?2:i.length;++a<f;)if((u=i[a])&&U[typeof u])for(var l=-1,c=U[typeof u]&&ze(u),p=c?c.length:0;++l<p;)r=c[l],"undefined"==typeof o[r]&&(o[r]=u[r]);return o}function H(n,t,e){var r,u=n,o=u;
if(!u)return o;var i=arguments,a=0,f=typeof e=="number"?2:i.length;if(3<f&&"function"==typeof i[f-2])var l=ut(i[--f-1],i[f--],2);else 2<f&&"function"==typeof i[f-1]&&(l=i[--f]);for(;++a<f;)if((u=i[a])&&U[typeof u])for(var c=-1,p=U[typeof u]&&ze(u),s=p?p.length:0;++c<s;)r=p[c],o[r]=l?l(o[r],u[r]):u[r];return o}function J(n){var t,e=[];if(!n||!U[typeof n])return e;for(t in n)de.call(n,t)&&e.push(t);return e}function Z(n){return n&&typeof n=="object"&&!qe(n)&&de.call(n,"__wrapped__")?n:new nt(n)}function nt(n,t){this.__chain__=!!t,this.__wrapped__=n
}function tt(n){function t(){if(r){var n=r.slice();je.apply(n,arguments)}if(this instanceof t){var o=rt(e.prototype),n=e.apply(o,n||arguments);return kt(n)?n:o}return e.apply(u,n||arguments)}var e=n[0],r=n[2],u=n[4];return We(t,n),t}function et(n,t,e,r,u){if(e){var o=e(n);if(typeof o!="undefined")return o}if(!kt(n))return n;var i=ve.call(n);if(!K[i])return n;var f=Te[i];switch(i){case F:case T:return new f(+n);case W:case P:return new f(n);case z:return o=f(n.source,C.exec(n)),o.lastIndex=n.lastIndex,o
}if(i=qe(n),t){var c=!r;r||(r=a()),u||(u=a());for(var s=r.length;s--;)if(r[s]==n)return u[s];o=i?f(n.length):{}}else o=i?p(n):H({},n);return i&&(de.call(n,"index")&&(o.index=n.index),de.call(n,"input")&&(o.input=n.input)),t?(r.push(n),u.push(o),(i?Rt:g)(n,function(n,i){o[i]=et(n,t,e,r,u)}),c&&(l(r),l(u)),o):o}function rt(n){return kt(n)?Ie(n):{}}function ut(n,t,e){if(typeof n!="function")return Qt;if(typeof t=="undefined"||!("prototype"in n))return n;var r=n.__bindData__;if(typeof r=="undefined"&&(Be.funcNames&&(r=!n.name),r=r||!Be.funcDecomp,!r)){var u=_e.call(n);
Be.funcNames||(r=!O.test(u)),r||(r=E.test(u),We(n,r))}if(false===r||true!==r&&1&r[1])return n;switch(e){case 1:return function(e){return n.call(t,e)};case 2:return function(e,r){return n.call(t,e,r)};case 3:return function(e,r,u){return n.call(t,e,r,u)};case 4:return function(e,r,u,o){return n.call(t,e,r,u,o)}}return Gt(n,t)}function ot(n){function t(){var n=f?i:this;if(u){var h=u.slice();je.apply(h,arguments)}return(o||c)&&(h||(h=p(arguments)),o&&je.apply(h,o),c&&h.length<a)?(r|=16,ot([e,s?r:-4&r,h,null,i,a])):(h||(h=arguments),l&&(e=n[v]),this instanceof t?(n=rt(e.prototype),h=e.apply(n,h),kt(h)?h:n):e.apply(n,h))
}var e=n[0],r=n[1],u=n[2],o=n[3],i=n[4],a=n[5],f=1&r,l=2&r,c=4&r,s=8&r,v=e;return We(t,n),t}function it(e,r){var u=-1,i=gt(),a=e?e.length:0,f=a>=_&&i===n,l=[];if(f){var p=o(r);p?(i=t,r=p):f=false}for(;++u<a;)p=e[u],0>i(r,p)&&l.push(p);return f&&c(r),l}function at(n,t,e,r){r=(r||0)-1;for(var u=n?n.length:0,o=[];++r<u;){var i=n[r];if(i&&typeof i=="object"&&typeof i.length=="number"&&(qe(i)||_t(i))){t||(i=at(i,t,e));var a=-1,f=i.length,l=o.length;for(o.length+=f;++a<f;)o[l++]=i[a]}else e||o.push(i)}return o
}function ft(n,t,e,r,u,o){if(e){var i=e(n,t);if(typeof i!="undefined")return!!i}if(n===t)return 0!==n||1/n==1/t;if(n===n&&!(n&&U[typeof n]||t&&U[typeof t]))return false;if(null==n||null==t)return n===t;var f=ve.call(n),c=ve.call(t);if(f==D&&(f=q),c==D&&(c=q),f!=c)return false;switch(f){case F:case T:return+n==+t;case W:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case z:case P:return n==fe(t)}if(c=f==$,!c){var p=de.call(n,"__wrapped__"),s=de.call(t,"__wrapped__");if(p||s)return ft(p?n.__wrapped__:n,s?t.__wrapped__:t,e,r,u,o);
if(f!=q)return false;if(f=n.constructor,p=t.constructor,f!=p&&!(jt(f)&&f instanceof f&&jt(p)&&p instanceof p)&&"constructor"in n&&"constructor"in t)return false}for(p=!u,u||(u=a()),o||(o=a()),f=u.length;f--;)if(u[f]==n)return o[f]==t;var v=0,i=true;if(u.push(n),o.push(t),c){if(f=n.length,v=t.length,i=v==n.length,!i&&!r)return i;for(;v--;)if(c=f,p=t[v],r)for(;c--&&!(i=ft(n[c],p,e,r,u,o)););else if(!(i=ft(n[v],p,e,r,u,o)))break;return i}return b(t,function(t,a,f){return de.call(f,a)?(v++,i=de.call(n,a)&&ft(n[a],t,e,r,u,o)):void 0
}),i&&!r&&b(n,function(n,t,e){return de.call(e,t)?i=-1<--v:void 0}),p&&(l(u),l(o)),i}function lt(n,t,e,r,u){(qe(t)?Rt:g)(t,function(t,o){var i,a,f=t,l=n[o];if(t&&((a=qe(t))||h(t))){for(f=r.length;f--;)if(i=r[f]==t){l=u[f];break}if(!i){var c;e&&(f=e(l,t),c=typeof f!="undefined")&&(l=f),c||(l=a?qe(l)?l:[]:h(l)?l:{}),r.push(t),u.push(l),c||lt(l,t,e,r,u)}}else e&&(f=e(l,t),typeof f=="undefined"&&(f=t)),typeof f!="undefined"&&(l=f);n[o]=l})}function ct(n,t){return n+me(Fe()*(t-n+1))}function pt(e,r,u){var i=-1,f=gt(),p=e?e.length:0,s=[],v=!r&&p>=_&&f===n,h=u||v?a():s;
if(v){var g=o(h);g?(f=t,h=g):(v=false,h=u?h:(l(h),s))}for(;++i<p;){var g=e[i],y=u?u(g,i,e):g;(r?!i||h[h.length-1]!==y:0>f(h,y))&&((u||v)&&h.push(y),s.push(g))}return v?(l(h.k),c(h)):u&&l(h),s}function st(n){return function(t,e,r){var u={};e=Z.createCallback(e,r,3),r=-1;var o=t?t.length:0;if(typeof o=="number")for(;++r<o;){var i=t[r];n(u,i,e(i,r,t),t)}else g(t,function(t,r,o){n(u,t,e(t,r,o),o)});return u}}function vt(n,t,e,r,u,o){var i=1&t,a=4&t,f=16&t,l=32&t;if(!(2&t||jt(n)))throw new le;f&&!e.length&&(t&=-17,f=e=false),l&&!r.length&&(t&=-33,l=r=false);
var c=n&&n.__bindData__;return c&&true!==c?(c=c.slice(),!i||1&c[1]||(c[4]=u),!i&&1&c[1]&&(t|=8),!a||4&c[1]||(c[5]=o),f&&je.apply(c[2]||(c[2]=[]),e),l&&je.apply(c[3]||(c[3]=[]),r),c[1]|=t,vt.apply(null,c)):(1==t||17===t?tt:ot)([n,t,e,r,u,o])}function ht(n){return Pe[n]}function gt(){var t=(t=Z.indexOf)===Pt?n:t;return t}function yt(n){var t,e;return n&&ve.call(n)==q&&(t=n.constructor,!jt(t)||t instanceof t)?(b(n,function(n,t){e=t}),typeof e=="undefined"||de.call(n,e)):false}function mt(n){return Ke[n]}function _t(n){return n&&typeof n=="object"&&typeof n.length=="number"&&ve.call(n)==D||false
}function bt(n,t,e){var r=ze(n),u=r.length;for(t=ut(t,e,3);u--&&(e=r[u],false!==t(n[e],e,n)););return n}function dt(n){var t=[];return b(n,function(n,e){jt(n)&&t.push(e)}),t.sort()}function wt(n){for(var t=-1,e=ze(n),r=e.length,u={};++t<r;){var o=e[t];u[n[o]]=o}return u}function jt(n){return typeof n=="function"}function kt(n){return!(!n||!U[typeof n])}function xt(n){return typeof n=="number"||n&&typeof n=="object"&&ve.call(n)==W||false}function Ct(n){return typeof n=="string"||n&&typeof n=="object"&&ve.call(n)==P||false
}function Ot(n){for(var t=-1,e=ze(n),r=e.length,u=ne(r);++t<r;)u[t]=n[e[t]];return u}function It(n,t,e){var r=-1,u=gt(),o=n?n.length:0,i=false;return e=(0>e?Ae(0,o+e):e)||0,qe(n)?i=-1<u(n,t,e):typeof o=="number"?i=-1<(Ct(n)?n.indexOf(t,e):u(n,t,e)):g(n,function(n){return++r<e?void 0:!(i=n===t)}),i}function Nt(n,t,e){var r=true;t=Z.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u&&(r=!!t(n[e],e,n)););else g(n,function(n,e,u){return r=!!t(n,e,u)});return r}function St(n,t,e){var r=[];
t=Z.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u;){var o=n[e];t(o,e,n)&&r.push(o)}else g(n,function(n,e,u){t(n,e,u)&&r.push(n)});return r}function Et(n,t,e){t=Z.createCallback(t,e,3),e=-1;var r=n?n.length:0;if(typeof r!="number"){var u;return g(n,function(n,e,r){return t(n,e,r)?(u=n,false):void 0}),u}for(;++e<r;){var o=n[e];if(t(o,e,n))return o}}function Rt(n,t,e){var r=-1,u=n?n.length:0;if(t=t&&typeof e=="undefined"?t:ut(t,e,3),typeof u=="number")for(;++r<u&&false!==t(n[r],r,n););else g(n,t);
return n}function At(n,t,e){var r=n?n.length:0;if(t=t&&typeof e=="undefined"?t:ut(t,e,3),typeof r=="number")for(;r--&&false!==t(n[r],r,n););else{var u=ze(n),r=u.length;g(n,function(n,e,o){return e=u?u[--r]:--r,t(o[e],e,o)})}return n}function Dt(n,t,e){var r=-1,u=n?n.length:0;if(t=Z.createCallback(t,e,3),typeof u=="number")for(var o=ne(u);++r<u;)o[r]=t(n[r],r,n);else o=[],g(n,function(n,e,u){o[++r]=t(n,e,u)});return o}function $t(n,t,e){var u=-1/0,o=u;if(typeof t!="function"&&e&&e[t]===n&&(t=null),null==t&&qe(n)){e=-1;
for(var i=n.length;++e<i;){var a=n[e];a>o&&(o=a)}}else t=null==t&&Ct(n)?r:Z.createCallback(t,e,3),Rt(n,function(n,e,r){e=t(n,e,r),e>u&&(u=e,o=n)});return o}function Ft(n,t){var e=-1,r=n?n.length:0;if(typeof r=="number")for(var u=ne(r);++e<r;)u[e]=n[e][t];return u||Dt(n,t)}function Tt(n,t,e,r){if(!n)return e;var u=3>arguments.length;t=Z.createCallback(t,r,4);var o=-1,i=n.length;if(typeof i=="number")for(u&&(e=n[++o]);++o<i;)e=t(e,n[o],o,n);else g(n,function(n,r,o){e=u?(u=false,n):t(e,n,r,o)});return e
}function Bt(n,t,e,r){var u=3>arguments.length;return t=Z.createCallback(t,r,4),At(n,function(n,r,o){e=u?(u=false,n):t(e,n,r,o)}),e}function Wt(n){var t=-1,e=n?n.length:0,r=ne(typeof e=="number"?e:0);return Rt(n,function(n){var e=ct(0,++t);r[t]=r[e],r[e]=n}),r}function qt(n,t,e){var r;t=Z.createCallback(t,e,3),e=-1;var u=n?n.length:0;if(typeof u=="number")for(;++e<u&&!(r=t(n[e],e,n)););else g(n,function(n,e,u){return!(r=t(n,e,u))});return!!r}function zt(n,t,e){var r=0,u=n?n.length:0;if(typeof t!="number"&&null!=t){var o=-1;
for(t=Z.createCallback(t,e,3);++o<u&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[0]:v;return p(n,0,De(Ae(0,r),u))}function Pt(t,e,r){if(typeof r=="number"){var u=t?t.length:0;r=0>r?Ae(0,u+r):r||0}else if(r)return r=Lt(t,e),t[r]===e?r:-1;return n(t,e,r)}function Kt(n,t,e){if(typeof t!="number"&&null!=t){var r=0,u=-1,o=n?n.length:0;for(t=Z.createCallback(t,e,3);++u<o&&t(n[u],u,n);)r++}else r=null==t||e?1:Ae(0,t);return p(n,r)}function Lt(n,t,e,r){var u=0,o=n?n.length:u;for(e=e?Z.createCallback(e,r,1):Qt,t=e(t);u<o;)r=u+o>>>1,e(n[r])<t?u=r+1:o=r;
return u}function Mt(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=typeof t!="function"&&r&&r[t]===n?null:t,t=false),null!=e&&(e=Z.createCallback(e,r,3)),pt(n,t,e)}function Ut(){for(var n=1<arguments.length?arguments:arguments[0],t=-1,e=n?$t(Ft(n,"length")):0,r=ne(0>e?0:e);++t<e;)r[t]=Ft(n,t);return r}function Vt(n,t){for(var e=-1,r=n?n.length:0,u={};++e<r;){var o=n[e];t?u[o]=t[e]:o&&(u[o[0]]=o[1])}return u}function Gt(n,t){return 2<arguments.length?vt(n,17,p(arguments,2),null,t):vt(n,1,null,null,t)
}function Ht(n,t,e){function r(){c&&ye(c),i=c=p=v,(g||h!==t)&&(s=we(),a=n.apply(l,o),c||i||(o=l=null))}function u(){var e=t-(we()-f);0<e?c=ke(u,e):(i&&ye(i),e=p,i=c=p=v,e&&(s=we(),a=n.apply(l,o),c||i||(o=l=null)))}var o,i,a,f,l,c,p,s=0,h=false,g=true;if(!jt(n))throw new le;if(t=Ae(0,t)||0,true===e)var y=true,g=false;else kt(e)&&(y=e.leading,h="maxWait"in e&&(Ae(t,e.maxWait)||0),g="trailing"in e?e.trailing:g);return function(){if(o=arguments,f=we(),l=this,p=g&&(c||!y),false===h)var e=y&&!c;else{i||y||(s=f);var v=h-(f-s),m=0>=v;
m?(i&&(i=ye(i)),s=f,a=n.apply(l,o)):i||(i=ke(r,v))}return m&&c?c=ye(c):c||t===h||(c=ke(u,t)),e&&(m=true,a=n.apply(l,o)),!m||c||i||(o=l=null),a}}function Jt(n){if(!jt(n))throw new le;var t=p(arguments,1);return ke(function(){n.apply(v,t)},1)}function Qt(n){return n}function Xt(n,t){var e=n,r=!t||jt(e);t||(e=nt,t=n,n=Z),Rt(dt(t),function(u){var o=n[u]=t[u];r&&(e.prototype[u]=function(){var t=this.__wrapped__,r=[t];return je.apply(r,arguments),r=o.apply(n,r),t&&typeof t=="object"&&t===r?this:(r=new e(r),r.__chain__=this.__chain__,r)
})})}function Yt(){}function Zt(){return this.__wrapped__}e=e?Y.defaults(G.Object(),e,Y.pick(G,A)):G;var ne=e.Array,te=e.Boolean,ee=e.Date,re=e.Function,ue=e.Math,oe=e.Number,ie=e.Object,ae=e.RegExp,fe=e.String,le=e.TypeError,ce=[],pe=ie.prototype,se=e._,ve=pe.toString,he=ae("^"+fe(ve).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$"),ge=ue.ceil,ye=e.clearTimeout,me=ue.floor,_e=re.prototype.toString,be=he.test(be=ie.getPrototypeOf)&&be,de=pe.hasOwnProperty,we=he.test(we=ee.now)&&we||function(){return+new ee
},je=ce.push,ke=e.setTimeout,xe=ce.splice,Ce=typeof(Ce=X&&Q&&X.setImmediate)=="function"&&!he.test(Ce)&&Ce,Oe=function(){try{var n={},t=he.test(t=ie.defineProperty)&&t,e=t(n,n,n)&&t}catch(r){}return e}(),Ie=he.test(Ie=ie.create)&&Ie,Ne=he.test(Ne=ne.isArray)&&Ne,Se=e.isFinite,Ee=e.isNaN,Re=he.test(Re=ie.keys)&&Re,Ae=ue.max,De=ue.min,$e=e.parseInt,Fe=ue.random,Te={};Te[$]=ne,Te[F]=te,Te[T]=ee,Te[B]=re,Te[q]=ie,Te[W]=oe,Te[z]=ae,Te[P]=fe,nt.prototype=Z.prototype;var Be=Z.support={};Be.funcDecomp=!he.test(e.a)&&E.test(s),Be.funcNames=typeof re.name=="string",Z.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:I,variable:"",imports:{_:Z}},Ie||(rt=function(){function n(){}return function(t){if(kt(t)){n.prototype=t;
var r=new n;n.prototype=null}return r||e.Object()}}());var We=Oe?function(n,t){M.value=t,Oe(n,"__bindData__",M)}:Yt,qe=Ne||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&ve.call(n)==$||false},ze=Re?function(n){return kt(n)?Re(n):[]}:J,Pe={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"},Ke=wt(Pe),Le=ae("("+ze(Ke).join("|")+")","g"),Me=ae("["+ze(Pe).join("")+"]","g"),Ue=st(function(n,t,e){de.call(n,e)?n[e]++:n[e]=1}),Ve=st(function(n,t,e){(de.call(n,e)?n[e]:n[e]=[]).push(t)
}),Ge=st(function(n,t,e){n[e]=t});Ce&&(Jt=function(n){if(!jt(n))throw new le;return Ce.apply(e,arguments)});var He=8==$e(d+"08")?$e:function(n,t){return $e(Ct(n)?n.replace(N,""):n,t||0)};return Z.after=function(n,t){if(!jt(t))throw new le;return function(){return 1>--n?t.apply(this,arguments):void 0}},Z.assign=H,Z.at=function(n){for(var t=arguments,e=-1,r=at(t,true,false,1),t=t[2]&&t[2][t[1]]===n?1:r.length,u=ne(t);++e<t;)u[e]=n[r[e]];return u},Z.bind=Gt,Z.bindAll=function(n){for(var t=1<arguments.length?at(arguments,true,false,1):dt(n),e=-1,r=t.length;++e<r;){var u=t[e];
n[u]=vt(n[u],1,null,null,n)}return n},Z.bindKey=function(n,t){return 2<arguments.length?vt(t,19,p(arguments,2),null,n):vt(t,3,null,null,n)},Z.chain=function(n){return n=new nt(n),n.__chain__=true,n},Z.compact=function(n){for(var t=-1,e=n?n.length:0,r=[];++t<e;){var u=n[t];u&&r.push(u)}return r},Z.compose=function(){for(var n=arguments,t=n.length;t--;)if(!jt(n[t]))throw new le;return function(){for(var t=arguments,e=n.length;e--;)t=[n[e].apply(this,t)];return t[0]}},Z.countBy=Ue,Z.create=function(n,t){var e=rt(n);
return t?H(e,t):e},Z.createCallback=function(n,t,e){var r=typeof n;if(null==n||"function"==r)return ut(n,t,e);if("object"!=r)return function(t){return t[n]};var u=ze(n),o=u[0],i=n[o];return 1!=u.length||i!==i||kt(i)?function(t){for(var e=u.length,r=false;e--&&(r=ft(t[u[e]],n[u[e]],null,true)););return r}:function(n){return n=n[o],i===n&&(0!==i||1/i==1/n)}},Z.curry=function(n,t){return t=typeof t=="number"?t:+t||n.length,vt(n,4,null,null,null,t)},Z.debounce=Ht,Z.defaults=V,Z.defer=Jt,Z.delay=function(n,t){if(!jt(n))throw new le;
var e=p(arguments,2);return ke(function(){n.apply(v,e)},t)},Z.difference=function(n){return it(n,at(arguments,true,true,1))},Z.filter=St,Z.flatten=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=typeof t!="function"&&r&&r[t]===n?null:t,t=false),null!=e&&(n=Dt(n,e,r)),at(n,t)},Z.forEach=Rt,Z.forEachRight=At,Z.forIn=b,Z.forInRight=function(n,t,e){var r=[];b(n,function(n,t){r.push(t,n)});var u=r.length;for(t=ut(t,e,3);u--&&false!==t(r[u--],r[u],n););return n},Z.forOwn=g,Z.forOwnRight=bt,Z.functions=dt,Z.groupBy=Ve,Z.indexBy=Ge,Z.initial=function(n,t,e){var r=0,u=n?n.length:0;
if(typeof t!="number"&&null!=t){var o=u;for(t=Z.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else r=null==t||e?1:t||r;return p(n,0,De(Ae(0,u-r),u))},Z.intersection=function(e){for(var r=arguments,u=r.length,i=-1,f=a(),p=-1,s=gt(),v=e?e.length:0,h=[],g=a();++i<u;){var y=r[i];f[i]=s===n&&(y?y.length:0)>=_&&o(i?r[i]:g)}n:for(;++p<v;){var m=f[0],y=e[p];if(0>(m?t(m,y):s(g,y))){for(i=u,(m||g).push(y);--i;)if(m=f[i],0>(m?t(m,y):s(r[i],y)))continue n;h.push(y)}}for(;u--;)(m=f[u])&&c(m);return l(f),l(g),h},Z.invert=wt,Z.invoke=function(n,t){var e=p(arguments,2),r=-1,u=typeof t=="function",o=n?n.length:0,i=ne(typeof o=="number"?o:0);
return Rt(n,function(n){i[++r]=(u?t:n[t]).apply(n,e)}),i},Z.keys=ze,Z.map=Dt,Z.max=$t,Z.memoize=function(n,t){function e(){var r=e.cache,u=t?t.apply(this,arguments):m+arguments[0];return de.call(r,u)?r[u]:r[u]=n.apply(this,arguments)}if(!jt(n))throw new le;return e.cache={},e},Z.merge=function(n){var t=arguments,e=2;if(!kt(n))return n;if("number"!=typeof t[2]&&(e=t.length),3<e&&"function"==typeof t[e-2])var r=ut(t[--e-1],t[e--],2);else 2<e&&"function"==typeof t[e-1]&&(r=t[--e]);for(var t=p(arguments,1,e),u=-1,o=a(),i=a();++u<e;)lt(n,t[u],r,o,i);
return l(o),l(i),n},Z.min=function(n,t,e){var u=1/0,o=u;if(typeof t!="function"&&e&&e[t]===n&&(t=null),null==t&&qe(n)){e=-1;for(var i=n.length;++e<i;){var a=n[e];a<o&&(o=a)}}else t=null==t&&Ct(n)?r:Z.createCallback(t,e,3),Rt(n,function(n,e,r){e=t(n,e,r),e<u&&(u=e,o=n)});return o},Z.omit=function(n,t,e){var r={};if(typeof t!="function"){var u=[];b(n,function(n,t){u.push(t)});for(var u=it(u,at(arguments,true,false,1)),o=-1,i=u.length;++o<i;){var a=u[o];r[a]=n[a]}}else t=Z.createCallback(t,e,3),b(n,function(n,e,u){t(n,e,u)||(r[e]=n)
});return r},Z.once=function(n){var t,e;if(!jt(n))throw new le;return function(){return t?e:(t=true,e=n.apply(this,arguments),n=null,e)}},Z.pairs=function(n){for(var t=-1,e=ze(n),r=e.length,u=ne(r);++t<r;){var o=e[t];u[t]=[o,n[o]]}return u},Z.partial=function(n){return vt(n,16,p(arguments,1))},Z.partialRight=function(n){return vt(n,32,null,p(arguments,1))},Z.pick=function(n,t,e){var r={};if(typeof t!="function")for(var u=-1,o=at(arguments,true,false,1),i=kt(n)?o.length:0;++u<i;){var a=o[u];a in n&&(r[a]=n[a])
}else t=Z.createCallback(t,e,3),b(n,function(n,e,u){t(n,e,u)&&(r[e]=n)});return r},Z.pluck=Ft,Z.pull=function(n){for(var t=arguments,e=0,r=t.length,u=n?n.length:0;++e<r;)for(var o=-1,i=t[e];++o<u;)n[o]===i&&(xe.call(n,o--,1),u--);return n},Z.range=function(n,t,e){n=+n||0,e=typeof e=="number"?e:+e||1,null==t&&(t=n,n=0);var r=-1;t=Ae(0,ge((t-n)/(e||1)));for(var u=ne(t);++r<t;)u[r]=n,n+=e;return u},Z.reject=function(n,t,e){return t=Z.createCallback(t,e,3),St(n,function(n,e,r){return!t(n,e,r)})},Z.remove=function(n,t,e){var r=-1,u=n?n.length:0,o=[];
for(t=Z.createCallback(t,e,3);++r<u;)e=n[r],t(e,r,n)&&(o.push(e),xe.call(n,r--,1),u--);return o},Z.rest=Kt,Z.shuffle=Wt,Z.sortBy=function(n,t,e){var r=-1,o=n?n.length:0,i=ne(typeof o=="number"?o:0);for(t=Z.createCallback(t,e,3),Rt(n,function(n,e,u){var o=i[++r]=f();o.m=t(n,e,u),o.n=r,o.o=n}),o=i.length,i.sort(u);o--;)n=i[o],i[o]=n.o,c(n);return i},Z.tap=function(n,t){return t(n),n},Z.throttle=function(n,t,e){var r=true,u=true;if(!jt(n))throw new le;return false===e?r=false:kt(e)&&(r="leading"in e?e.leading:r,u="trailing"in e?e.trailing:u),L.leading=r,L.maxWait=t,L.trailing=u,Ht(n,t,L)
},Z.times=function(n,t,e){n=-1<(n=+n)?n:0;var r=-1,u=ne(n);for(t=ut(t,e,1);++r<n;)u[r]=t(r);return u},Z.toArray=function(n){return n&&typeof n.length=="number"?p(n):Ot(n)},Z.transform=function(n,t,e,r){var u=qe(n);if(null==e)if(u)e=[];else{var o=n&&n.constructor;e=rt(o&&o.prototype)}return t&&(t=Z.createCallback(t,r,4),(u?Rt:g)(n,function(n,r,u){return t(e,n,r,u)})),e},Z.union=function(){return pt(at(arguments,true,true))},Z.uniq=Mt,Z.values=Ot,Z.where=St,Z.without=function(n){return it(n,p(arguments,1))
},Z.wrap=function(n,t){return vt(t,16,[n])},Z.zip=Ut,Z.zipObject=Vt,Z.collect=Dt,Z.drop=Kt,Z.each=Rt,Z.eachRight=At,Z.extend=H,Z.methods=dt,Z.object=Vt,Z.select=St,Z.tail=Kt,Z.unique=Mt,Z.unzip=Ut,Xt(Z),Z.clone=function(n,t,e,r){return typeof t!="boolean"&&null!=t&&(r=e,e=t,t=false),et(n,t,typeof e=="function"&&ut(e,r,1))},Z.cloneDeep=function(n,t,e){return et(n,true,typeof t=="function"&&ut(t,e,1))},Z.contains=It,Z.escape=function(n){return null==n?"":fe(n).replace(Me,ht)},Z.every=Nt,Z.find=Et,Z.findIndex=function(n,t,e){var r=-1,u=n?n.length:0;
for(t=Z.createCallback(t,e,3);++r<u;)if(t(n[r],r,n))return r;return-1},Z.findKey=function(n,t,e){var r;return t=Z.createCallback(t,e,3),g(n,function(n,e,u){return t(n,e,u)?(r=e,false):void 0}),r},Z.findLast=function(n,t,e){var r;return t=Z.createCallback(t,e,3),At(n,function(n,e,u){return t(n,e,u)?(r=n,false):void 0}),r},Z.findLastIndex=function(n,t,e){var r=n?n.length:0;for(t=Z.createCallback(t,e,3);r--;)if(t(n[r],r,n))return r;return-1},Z.findLastKey=function(n,t,e){var r;return t=Z.createCallback(t,e,3),bt(n,function(n,e,u){return t(n,e,u)?(r=e,false):void 0
}),r},Z.has=function(n,t){return n?de.call(n,t):false},Z.identity=Qt,Z.indexOf=Pt,Z.isArguments=_t,Z.isArray=qe,Z.isBoolean=function(n){return true===n||false===n||n&&typeof n=="object"&&ve.call(n)==F||false},Z.isDate=function(n){return n&&typeof n=="object"&&ve.call(n)==T||false},Z.isElement=function(n){return n&&1===n.nodeType||false},Z.isEmpty=function(n){var t=true;if(!n)return t;var e=ve.call(n),r=n.length;return e==$||e==P||e==D||e==q&&typeof r=="number"&&jt(n.splice)?!r:(g(n,function(){return t=false}),t)},Z.isEqual=function(n,t,e,r){return ft(n,t,typeof e=="function"&&ut(e,r,2))
},Z.isFinite=function(n){return Se(n)&&!Ee(parseFloat(n))},Z.isFunction=jt,Z.isNaN=function(n){return xt(n)&&n!=+n},Z.isNull=function(n){return null===n},Z.isNumber=xt,Z.isObject=kt,Z.isPlainObject=h,Z.isRegExp=function(n){return n&&typeof n=="object"&&ve.call(n)==z||false},Z.isString=Ct,Z.isUndefined=function(n){return typeof n=="undefined"},Z.lastIndexOf=function(n,t,e){var r=n?n.length:0;for(typeof e=="number"&&(r=(0>e?Ae(0,r+e):De(e,r-1))+1);r--;)if(n[r]===t)return r;return-1},Z.mixin=Xt,Z.noConflict=function(){return e._=se,this
},Z.noop=Yt,Z.parseInt=He,Z.random=function(n,t,e){var r=null==n,u=null==t;return null==e&&(typeof n=="boolean"&&u?(e=n,n=1):u||typeof t!="boolean"||(e=t,u=true)),r&&u&&(t=1),n=+n||0,u?(t=n,n=0):t=+t||0,e||n%1||t%1?(e=Fe(),De(n+e*(t-n+parseFloat("1e-"+((e+"").length-1))),t)):ct(n,t)},Z.reduce=Tt,Z.reduceRight=Bt,Z.result=function(n,t){if(n){var e=n[t];return jt(e)?n[t]():e}},Z.runInContext=s,Z.size=function(n){var t=n?n.length:0;return typeof t=="number"?t:ze(n).length},Z.some=qt,Z.sortedIndex=Lt,Z.template=function(n,t,e){var r=Z.templateSettings;
n=fe(n||""),e=V({},e,r);var u,o=V({},e.imports,r.imports),r=ze(o),o=Ot(o),a=0,f=e.interpolate||S,l="__p+='",f=ae((e.escape||S).source+"|"+f.source+"|"+(f===I?x:S).source+"|"+(e.evaluate||S).source+"|$","g");n.replace(f,function(t,e,r,o,f,c){return r||(r=o),l+=n.slice(a,c).replace(R,i),e&&(l+="'+__e("+e+")+'"),f&&(u=true,l+="';"+f+";\n__p+='"),r&&(l+="'+((__t=("+r+"))==null?'':__t)+'"),a=c+t.length,t}),l+="';",f=e=e.variable,f||(e="obj",l="with("+e+"){"+l+"}"),l=(u?l.replace(w,""):l).replace(j,"$1").replace(k,"$1;"),l="function("+e+"){"+(f?"":e+"||("+e+"={});")+"var __t,__p='',__e=_.escape"+(u?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}";
try{var c=re(r,"return "+l).apply(v,o)}catch(p){throw p.source=l,p}return t?c(t):(c.source=l,c)},Z.unescape=function(n){return null==n?"":fe(n).replace(Le,mt)},Z.uniqueId=function(n){var t=++y;return fe(null==n?"":n)+t},Z.all=Nt,Z.any=qt,Z.detect=Et,Z.findWhere=Et,Z.foldl=Tt,Z.foldr=Bt,Z.include=It,Z.inject=Tt,g(Z,function(n,t){Z.prototype[t]||(Z.prototype[t]=function(){var t=[this.__wrapped__],e=this.__chain__;return je.apply(t,arguments),t=n.apply(Z,t),e?new nt(t,e):t})}),Z.first=zt,Z.last=function(n,t,e){var r=0,u=n?n.length:0;
if(typeof t!="number"&&null!=t){var o=u;for(t=Z.createCallback(t,e,3);o--&&t(n[o],o,n);)r++}else if(r=t,null==r||e)return n?n[u-1]:v;return p(n,Ae(0,u-r))},Z.sample=function(n,t,e){return n&&typeof n.length!="number"&&(n=Ot(n)),null==t||e?n?n[ct(0,n.length-1)]:v:(n=Wt(n),n.length=De(Ae(0,t),n.length),n)},Z.take=zt,Z.head=zt,g(Z,function(n,t){var e="sample"!==t;Z.prototype[t]||(Z.prototype[t]=function(t,r){var u=this.__chain__,o=n(this.__wrapped__,t,r);return u||null!=t&&(!r||e&&typeof t=="function")?new nt(o,u):o
})}),Z.VERSION="2.3.0",Z.prototype.chain=function(){return this.__chain__=true,this},Z.prototype.toString=function(){return fe(this.__wrapped__)},Z.prototype.value=Zt,Z.prototype.valueOf=Zt,Rt(["join","pop","shift"],function(n){var t=ce[n];Z.prototype[n]=function(){var n=this.__chain__,e=t.apply(this.__wrapped__,arguments);return n?new nt(e,n):e}}),Rt(["push","reverse","sort","unshift"],function(n){var t=ce[n];Z.prototype[n]=function(){return t.apply(this.__wrapped__,arguments),this}}),Rt(["concat","slice","splice"],function(n){var t=ce[n];
Z.prototype[n]=function(){return new nt(t.apply(this.__wrapped__,arguments),this.__chain__)}}),Z}var v,h=[],g=[],y=0,m=+new Date+"",_=75,b=40,d=" \t\x0B\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",w=/\b__p\+='';/g,j=/\b(__p\+=)''\+/g,k=/(__e\(.*?\)|\b__t\))\+'';/g,x=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,C=/\w*$/,O=/^\s*function[ \n\r\t]+\w/,I=/<%=([\s\S]+?)%>/g,N=RegExp("^["+d+"]*0+(?=.$)"),S=/($^)/,E=/\bthis\b/,R=/['\n\r\t\u2028\u2029\\]/g,A="Array Boolean Date Function Math Number Object RegExp String _ attachEvent clearTimeout isFinite isNaN parseInt setImmediate setTimeout".split(" "),D="[object Arguments]",$="[object Array]",F="[object Boolean]",T="[object Date]",B="[object Function]",W="[object Number]",q="[object Object]",z="[object RegExp]",P="[object String]",K={};
K[B]=false,K[D]=K[$]=K[F]=K[T]=K[W]=K[q]=K[z]=K[P]=true;var L={leading:false,maxWait:0,trailing:false},M={configurable:false,enumerable:false,value:null,writable:false},U={"boolean":false,"function":true,object:true,number:false,string:false,undefined:false},V={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},G=U[typeof window]&&window||this,H=U[typeof exports]&&exports&&!exports.nodeType&&exports,J=U[typeof module]&&module&&!module.nodeType&&module,Q=J&&J.exports===H&&H,X=U[typeof global]&&global;!X||X.global!==X&&X.window!==X||(G=X);
var Y=s();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(G._=Y, define(function(){return Y})):H&&J?Q?(J.exports=Y)._=Y:H._=Y:G._=Y}).call(this);

File diff suppressed because it is too large Load Diff

View File

@@ -1,39 +0,0 @@
/**
* @license
* Lo-Dash 2.3.0 (Custom Build) lodash.com/license | Underscore.js 1.5.2 underscorejs.org/LICENSE
* Build: `lodash underscore exports="amd,commonjs,global,node" -o ./dist/lodash.underscore.js`
*/
;(function(){function n(n,r,t){t=(t||0)-1;for(var e=n?n.length:0;++t<e;)if(n[t]===r)return t;return-1}function r(n,r){var t=n.m,e=r.m;if(t!==e){if(t>e||typeof t=="undefined")return 1;if(t<e||typeof e=="undefined")return-1}return n.n-r.n}function t(n){return"\\"+vr[n]}function e(n,r,t){r||(r=0),typeof t=="undefined"&&(t=n?n.length:0);var e=-1;t=t-r||0;for(var u=Array(0>t?0:t);++e<t;)u[e]=n[r+e];return u}function u(n){return n instanceof u?n:new o(n)}function o(n,r){this.__chain__=!!r,this.__wrapped__=n
}function i(n){function r(){if(e){var n=e.slice();Rr.apply(n,arguments)}if(this instanceof r){var o=f(t.prototype),n=t.apply(o,n||arguments);return T(n)?n:o}return t.apply(u,n||arguments)}var t=n[0],e=n[2],u=n[4];return r}function f(n){return T(n)?Br(n):{}}function a(n,r,t){if(typeof n!="function")return Y;if(typeof r=="undefined"||!("prototype"in n))return n;switch(t){case 1:return function(t){return n.call(r,t)};case 2:return function(t,e){return n.call(r,t,e)};case 3:return function(t,e,u){return n.call(r,t,e,u)
};case 4:return function(t,e,u,o){return n.call(r,t,e,u,o)}}return L(n,r)}function l(n){function r(){var n=p?a:this;if(o){var y=o.slice();Rr.apply(y,arguments)}return(i||g)&&(y||(y=e(arguments)),i&&Rr.apply(y,i),g&&y.length<c)?(u|=16,l([t,h?u:-4&u,y,null,a,c])):(y||(y=arguments),s&&(t=n[v]),this instanceof r?(n=f(t.prototype),y=t.apply(n,y),T(y)?y:n):t.apply(n,y))}var t=n[0],u=n[1],o=n[2],i=n[3],a=n[4],c=n[5],p=1&u,s=2&u,g=4&u,h=8&u,v=t;return r}function c(n,r){for(var t=-1,e=m(),u=n?n.length:0,o=[];++t<u;){var i=n[t];
0>e(r,i)&&o.push(i)}return o}function p(n,r,t,e){e=(e||0)-1;for(var u=n?n.length:0,o=[];++e<u;){var i=n[e];if(i&&typeof i=="object"&&typeof i.length=="number"&&(Cr(i)||d(i))){r||(i=p(i,r,t));var f=-1,a=i.length,l=o.length;for(o.length+=a;++f<a;)o[l++]=i[f]}else t||o.push(i)}return o}function s(n,r,t,e){if(n===r)return 0!==n||1/n==1/r;if(n===n&&!(n&&hr[typeof n]||r&&hr[typeof r]))return false;if(null==n||null==r)return n===r;var o=Ar.call(n),i=Ar.call(r);if(o!=i)return false;switch(o){case ar:case lr:return+n==+r;
case cr:return n!=+n?r!=+r:0==n?1/n==1/r:n==+r;case sr:case gr:return n==r+""}if(i=o==fr,!i){var f=n instanceof u,a=r instanceof u;if(f||a)return s(f?n.__wrapped__:n,a?r.__wrapped__:r,t,e);if(o!=pr)return false;if(o=n.constructor,f=r.constructor,o!=f&&!(E(o)&&o instanceof o&&E(f)&&f instanceof f)&&"constructor"in n&&"constructor"in r)return false}for(t||(t=[]),e||(e=[]),o=t.length;o--;)if(t[o]==n)return e[o]==r;var l=true,c=0;if(t.push(n),e.push(r),i){if(c=r.length,l=c==n.length)for(;c--&&(l=s(n[c],r[c],t,e)););return l
}return Kr(r,function(r,u,o){return Sr.call(o,u)?(c++,!(l=Sr.call(n,u)&&s(n[u],r,t,e))&&tr):void 0}),l&&Kr(n,function(n,r,t){return Sr.call(t,r)?!(l=-1<--c)&&tr:void 0}),l}function g(n,r,t){for(var e=-1,u=m(),o=n?n.length:0,i=[],f=t?[]:i;++e<o;){var a=n[e],l=t?t(a,e,n):a;(r?!e||f[f.length-1]!==l:0>u(f,l))&&(t&&f.push(l),i.push(a))}return i}function h(n){return function(r,t,e){var u={};t=Q(t,e,3),e=-1;var o=r?r.length:0;if(typeof o=="number")for(;++e<o;){var i=r[e];n(u,i,t(i,e,r),r)}else Lr(r,function(r,e,o){n(u,r,t(r,e,o),o)
});return u}}function v(n,r,t,e,u,o){var f=16&r,a=32&r;if(!(2&r||E(n)))throw new TypeError;return f&&!t.length&&(r&=-17,t=false),a&&!e.length&&(r&=-33,e=false),(1==r||17===r?i:l)([n,r,t,e,u,o])}function y(n){return Vr[n]}function m(){var r=(r=u.indexOf)===G?n:r;return r}function _(n){return Gr[n]}function d(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ar.call(n)==ir||false}function b(n){if(!n)return n;for(var r=1,t=arguments.length;r<t;r++){var e=arguments[r];if(e)for(var u in e)n[u]=e[u]}return n
}function w(n){if(!n)return n;for(var r=1,t=arguments.length;r<t;r++){var e=arguments[r];if(e)for(var u in e)"undefined"==typeof n[u]&&(n[u]=e[u])}return n}function j(n){var r=[];return Kr(n,function(n,t){E(n)&&r.push(t)}),r.sort()}function x(n){for(var r=-1,t=Ur(n),e=t.length,u={};++r<e;){var o=t[r];u[n[o]]=o}return u}function A(n){if(!n)return true;if(Cr(n)||S(n))return!n.length;for(var r in n)if(Sr.call(n,r))return false;return true}function E(n){return typeof n=="function"}function T(n){return!(!n||!hr[typeof n])
}function O(n){return typeof n=="number"||n&&typeof n=="object"&&Ar.call(n)==cr||false}function S(n){return typeof n=="string"||n&&typeof n=="object"&&Ar.call(n)==gr||false}function N(n){for(var r=-1,t=Ur(n),e=t.length,u=Array(e);++r<e;)u[r]=n[t[r]];return u}function R(n,r){var t=m(),e=n?n.length:0,u=false;return e&&typeof e=="number"?u=-1<t(n,r):Lr(n,function(n){return(u=n===r)&&tr}),u}function k(n,r,t){var e=true;r=Q(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number")for(;++t<u&&(e=!!r(n[t],t,n)););else Lr(n,function(n,t,u){return!(e=!!r(n,t,u))&&tr
});return e}function B(n,r,t){var e=[];r=Q(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number")for(;++t<u;){var o=n[t];r(o,t,n)&&e.push(o)}else Lr(n,function(n,t,u){r(n,t,u)&&e.push(n)});return e}function F(n,r,t){r=Q(r,t,3),t=-1;var e=n?n.length:0;if(typeof e!="number"){var u;return Lr(n,function(n,t,e){return r(n,t,e)?(u=n,tr):void 0}),u}for(;++t<e;){var o=n[t];if(r(o,t,n))return o}}function q(n,r,t){var e=-1,u=n?n.length:0;if(r=r&&typeof t=="undefined"?r:a(r,t,3),typeof u=="number")for(;++e<u&&r(n[e],e,n)!==tr;);else Lr(n,r)
}function D(n,r){var t=n?n.length:0;if(typeof t=="number")for(;t--&&false!==r(n[t],t,n););else{var e=Ur(n),t=e.length;Lr(n,function(n,u,o){return u=e?e[--t]:--t,false===r(o[u],u,o)&&tr})}}function I(n,r,t){var e=-1,u=n?n.length:0;if(r=Q(r,t,3),typeof u=="number")for(var o=Array(u);++e<u;)o[e]=r(n[e],e,n);else o=[],Lr(n,function(n,t,u){o[++e]=r(n,t,u)});return o}function M(n,r,t){var e=-1/0,u=e;typeof r!="function"&&t&&t[r]===n&&(r=null);var o=-1,i=n?n.length:0;if(null==r&&typeof i=="number")for(;++o<i;)t=n[o],t>u&&(u=t);
else r=Q(r,t,3),q(n,function(n,t,o){t=r(n,t,o),t>e&&(e=t,u=n)});return u}function $(n,r){var t=-1,e=n?n.length:0;if(typeof e=="number")for(var u=Array(e);++t<e;)u[t]=n[t][r];return u||I(n,r)}function W(n,r,t,e){if(!n)return t;var u=3>arguments.length;r=Q(r,e,4);var o=-1,i=n.length;if(typeof i=="number")for(u&&(t=n[++o]);++o<i;)t=r(t,n[o],o,n);else Lr(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)});return t}function z(n,r,t,e){var u=3>arguments.length;return r=Q(r,e,4),D(n,function(n,e,o){t=u?(u=false,n):r(t,n,e,o)
}),t}function C(n){var r=-1,t=n?n.length:0,e=Array(typeof t=="number"?t:0);return q(n,function(n){var t;t=++r,t=0+Or(Wr()*(t-0+1)),e[r]=e[t],e[t]=n}),e}function P(n,r,t){var e;r=Q(r,t,3),t=-1;var u=n?n.length:0;if(typeof u=="number")for(;++t<u&&!(e=r(n[t],t,n)););else Lr(n,function(n,t,u){return(e=r(n,t,u))&&tr});return!!e}function U(n,r,t){return t&&A(r)?nr:(t?F:B)(n,r)}function V(n,r,t){var u=0,o=n?n.length:0;if(typeof r!="number"&&null!=r){var i=-1;for(r=Q(r,t,3);++i<o&&r(n[i],i,n);)u++}else if(u=r,null==u||t)return n?n[0]:nr;
return e(n,0,$r(Mr(0,u),o))}function G(r,t,e){if(typeof e=="number"){var u=r?r.length:0;e=0>e?Mr(0,u+e):e||0}else if(e)return e=J(r,t),r[e]===t?e:-1;return n(r,t,e)}function H(n,r,t){if(typeof r!="number"&&null!=r){var u=0,o=-1,i=n?n.length:0;for(r=Q(r,t,3);++o<i&&r(n[o],o,n);)u++}else u=null==r||t?1:Mr(0,r);return e(n,u)}function J(n,r,t,e){var u=0,o=n?n.length:u;for(t=t?Q(t,e,1):Y,r=t(r);u<o;)e=u+o>>>1,t(n[e])<r?u=e+1:o=e;return u}function K(n,r,t,e){return typeof r!="boolean"&&null!=r&&(e=t,t=typeof r!="function"&&e&&e[r]===n?null:r,r=false),null!=t&&(t=Q(t,e,3)),g(n,r,t)
}function L(n,r){return 2<arguments.length?v(n,17,e(arguments,2),null,r):v(n,1,null,null,r)}function Q(n,r,t){var e=typeof n;if(null==n||"function"==e)return a(n,r,t);if("object"!=e)return function(r){return r[n]};var u=Ur(n);return function(r){for(var t=u.length,e=false;t--&&(e=r[u[t]]===n[u[t]]););return e}}function X(n,r,t){var e,u,o,i,f,a,l,c=0,p=false,s=true;if(!E(n))throw new TypeError;if(r=Mr(0,r)||0,true===t)var g=true,s=false;else T(t)&&(g=t.leading,p="maxWait"in t&&(Mr(r,t.maxWait)||0),s="trailing"in t?t.trailing:s);
var h=function(){var t=r-(Nr()-i);0<t?a=setTimeout(h,t):(u&&clearTimeout(u),t=l,u=a=l=nr,t&&(c=Nr(),o=n.apply(f,e),a||u||(e=f=null)))},v=function(){a&&clearTimeout(a),u=a=l=nr,(s||p!==r)&&(c=Nr(),o=n.apply(f,e),a||u||(e=f=null))};return function(){if(e=arguments,i=Nr(),f=this,l=s&&(a||!g),false===p)var t=g&&!a;else{u||g||(c=i);var y=p-(i-c),m=0>=y;m?(u&&(u=clearTimeout(u)),c=i,o=n.apply(f,e)):u||(u=setTimeout(v,y))}return m&&a?a=clearTimeout(a):a||r===p||(a=setTimeout(h,r)),t&&(m=true,o=n.apply(f,e)),!m||a||u||(e=f=null),o
}}function Y(n){return n}function Z(n){q(j(n),function(r){var t=u[r]=n[r];u.prototype[r]=function(){var n=[this.__wrapped__];return Rr.apply(n,arguments),n=t.apply(u,n),this.__chain__?new o(n,true):n}})}var nr,rr=0,tr={},er=+new Date+"",ur=/($^)/,or=/['\n\r\t\u2028\u2029\\]/g,ir="[object Arguments]",fr="[object Array]",ar="[object Boolean]",lr="[object Date]",cr="[object Number]",pr="[object Object]",sr="[object RegExp]",gr="[object String]",hr={"boolean":false,"function":true,object:true,number:false,string:false,undefined:false},vr={"\\":"\\","'":"'","\n":"n","\r":"r","\t":"t","\u2028":"u2028","\u2029":"u2029"},yr=hr[typeof window]&&window||this,mr=hr[typeof exports]&&exports&&!exports.nodeType&&exports,_r=hr[typeof module]&&module&&!module.nodeType&&module,dr=_r&&_r.exports===mr&&mr,br=hr[typeof global]&&global;
!br||br.global!==br&&br.window!==br||(yr=br);var wr=[],jr=Object.prototype,xr=yr._,Ar=jr.toString,Er=RegExp("^"+(Ar+"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$"),Tr=Math.ceil,Or=Math.floor,Sr=jr.hasOwnProperty,Nr=Er.test(Nr=Date.now)&&Nr||function(){return+new Date},Rr=wr.push,kr=jr.propertyIsEnumerable,Br=Er.test(Br=Object.create)&&Br,Fr=Er.test(Fr=Array.isArray)&&Fr,qr=yr.isFinite,Dr=yr.isNaN,Ir=Er.test(Ir=Object.keys)&&Ir,Mr=Math.max,$r=Math.min,Wr=Math.random;
o.prototype=u.prototype;var zr={};!function(){var n={0:1,length:1};zr.spliceObjects=(wr.splice.call(n,0,1),!n[0])}(1),u.templateSettings={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,variable:""},Br||(f=function(){function n(){}return function(r){if(T(r)){n.prototype=r;var t=new n;n.prototype=null}return t||yr.Object()}}()),d(arguments)||(d=function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Sr.call(n,"callee")&&!kr.call(n,"callee")||false});var Cr=Fr||function(n){return n&&typeof n=="object"&&typeof n.length=="number"&&Ar.call(n)==fr||false
},Pr=function(n){var r,t=[];if(!n||!hr[typeof n])return t;for(r in n)Sr.call(n,r)&&t.push(r);return t},Ur=Ir?function(n){return T(n)?Ir(n):[]}:Pr,Vr={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"},Gr=x(Vr),Hr=RegExp("("+Ur(Gr).join("|")+")","g"),Jr=RegExp("["+Ur(Vr).join("")+"]","g"),Kr=function(n,r){var t;if(!n||!hr[typeof n])return n;for(t in n)if(r(n[t],t,n)===tr)break;return n},Lr=function(n,r){var t;if(!n||!hr[typeof n])return n;for(t in n)if(Sr.call(n,t)&&r(n[t],t,n)===tr)break;
return n};E(/x/)&&(E=function(n){return typeof n=="function"&&"[object Function]"==Ar.call(n)});var Qr=h(function(n,r,t){Sr.call(n,t)?n[t]++:n[t]=1}),Xr=h(function(n,r,t){(Sr.call(n,t)?n[t]:n[t]=[]).push(r)}),Yr=h(function(n,r,t){n[t]=r});u.after=function(n,r){if(!E(r))throw new TypeError;return function(){return 1>--n?r.apply(this,arguments):void 0}},u.bind=L,u.bindAll=function(n){for(var r=1<arguments.length?p(arguments,true,false,1):j(n),t=-1,e=r.length;++t<e;){var u=r[t];n[u]=v(n[u],1,null,null,n)}return n
},u.chain=function(n){return n=new o(n),n.__chain__=true,n},u.compact=function(n){for(var r=-1,t=n?n.length:0,e=[];++r<t;){var u=n[r];u&&e.push(u)}return e},u.compose=function(){for(var n=arguments,r=n.length;r--;)if(!E(n[r]))throw new TypeError;return function(){for(var r=arguments,t=n.length;t--;)r=[n[t].apply(this,r)];return r[0]}},u.countBy=Qr,u.debounce=X,u.defaults=w,u.defer=function(n){if(!E(n))throw new TypeError;var r=e(arguments,1);return setTimeout(function(){n.apply(nr,r)},1)},u.delay=function(n,r){if(!E(n))throw new TypeError;
var t=e(arguments,2);return setTimeout(function(){n.apply(nr,t)},r)},u.difference=function(n){return c(n,p(arguments,true,true,1))},u.filter=B,u.flatten=function(n,r){return p(n,r)},u.forEach=q,u.functions=j,u.groupBy=Xr,u.indexBy=Yr,u.initial=function(n,r,t){var u=0,o=n?n.length:0;if(typeof r!="number"&&null!=r){var i=o;for(r=Q(r,t,3);i--&&r(n[i],i,n);)u++}else u=null==r||t?1:r||u;return e(n,0,$r(Mr(0,o-u),o))},u.intersection=function(n){var r=arguments,t=r.length,e=-1,u=m(),o=n?n.length:0,i=[];n:for(;++e<o;){var f=n[e];
if(0>u(i,f)){for(var a=t;--a;)if(0>u(r[a],f))continue n;i.push(f)}}return i},u.invert=x,u.invoke=function(n,r){var t=e(arguments,2),u=-1,o=typeof r=="function",i=n?n.length:0,f=Array(typeof i=="number"?i:0);return q(n,function(n){f[++u]=(o?r:n[r]).apply(n,t)}),f},u.keys=Ur,u.map=I,u.max=M,u.memoize=function(n,r){var t={};return function(){var e=r?r.apply(this,arguments):er+arguments[0];return Sr.call(t,e)?t[e]:t[e]=n.apply(this,arguments)}},u.min=function(n,r,t){var e=1/0,u=e;typeof r!="function"&&t&&t[r]===n&&(r=null);
var o=-1,i=n?n.length:0;if(null==r&&typeof i=="number")for(;++o<i;)t=n[o],t<u&&(u=t);else r=Q(r,t,3),q(n,function(n,t,o){t=r(n,t,o),t<e&&(e=t,u=n)});return u},u.omit=function(n){var r=[];Kr(n,function(n,t){r.push(t)});for(var r=c(r,p(arguments,true,false,1)),t=-1,e=r.length,u={};++t<e;){var o=r[t];u[o]=n[o]}return u},u.once=function(n){var r,t;if(!E(n))throw new TypeError;return function(){return r?t:(r=true,t=n.apply(this,arguments),n=null,t)}},u.pairs=function(n){for(var r=-1,t=Ur(n),e=t.length,u=Array(e);++r<e;){var o=t[r];
u[r]=[o,n[o]]}return u},u.partial=function(n){return v(n,16,e(arguments,1))},u.pick=function(n){for(var r=-1,t=p(arguments,true,false,1),e=t.length,u={};++r<e;){var o=t[r];o in n&&(u[o]=n[o])}return u},u.pluck=$,u.range=function(n,r,t){n=+n||0,t=+t||1,null==r&&(r=n,n=0);var e=-1;r=Mr(0,Tr((r-n)/t));for(var u=Array(r);++e<r;)u[e]=n,n+=t;return u},u.reject=function(n,r,t){return r=Q(r,t,3),B(n,function(n,t,e){return!r(n,t,e)})},u.rest=H,u.shuffle=C,u.sortBy=function(n,t,e){var u=-1,o=n?n.length:0,i=Array(typeof o=="number"?o:0);
for(t=Q(t,e,3),q(n,function(n,r,e){i[++u]={m:t(n,r,e),n:u,o:n}}),o=i.length,i.sort(r);o--;)i[o]=i[o].o;return i},u.tap=function(n,r){return r(n),n},u.throttle=function(n,r,t){var e=true,u=true;if(!E(n))throw new TypeError;return false===t?e=false:T(t)&&(e="leading"in t?t.leading:e,u="trailing"in t?t.trailing:u),t={},t.leading=e,t.maxWait=r,t.trailing=u,X(n,r,t)},u.times=function(n,r,t){n=-1<(n=+n)?n:0;var e=-1,u=Array(n);for(r=a(r,t,1);++e<n;)u[e]=r(e);return u},u.toArray=function(n){return Cr(n)?e(n):n&&typeof n.length=="number"?I(n):N(n)
},u.union=function(){return g(p(arguments,true,true))},u.uniq=K,u.values=N,u.where=U,u.without=function(n){return c(n,e(arguments,1))},u.wrap=function(n,r){return v(r,16,[n])},u.zip=function(){for(var n=-1,r=M($(arguments,"length")),t=Array(0>r?0:r);++n<r;)t[n]=$(arguments,n);return t},u.collect=I,u.drop=H,u.each=q,u.extend=b,u.methods=j,u.object=function(n,r){for(var t=-1,e=n?n.length:0,u={};++t<e;){var o=n[t];r?u[o]=r[t]:o&&(u[o[0]]=o[1])}return u},u.select=B,u.tail=H,u.unique=K,u.clone=function(n){return T(n)?Cr(n)?e(n):b({},n):n
},u.contains=R,u.escape=function(n){return null==n?"":(n+"").replace(Jr,y)},u.every=k,u.find=F,u.has=function(n,r){return n?Sr.call(n,r):false},u.identity=Y,u.indexOf=G,u.isArguments=d,u.isArray=Cr,u.isBoolean=function(n){return true===n||false===n||n&&typeof n=="object"&&Ar.call(n)==ar||false},u.isDate=function(n){return n&&typeof n=="object"&&Ar.call(n)==lr||false},u.isElement=function(n){return n&&1===n.nodeType||false},u.isEmpty=A,u.isEqual=function(n,r){return s(n,r)},u.isFinite=function(n){return qr(n)&&!Dr(parseFloat(n))
},u.isFunction=E,u.isNaN=function(n){return O(n)&&n!=+n},u.isNull=function(n){return null===n},u.isNumber=O,u.isObject=T,u.isRegExp=function(n){return n&&hr[typeof n]&&Ar.call(n)==sr||false},u.isString=S,u.isUndefined=function(n){return typeof n=="undefined"},u.lastIndexOf=function(n,r,t){var e=n?n.length:0;for(typeof t=="number"&&(e=(0>t?Mr(0,e+t):$r(t,e-1))+1);e--;)if(n[e]===r)return e;return-1},u.mixin=Z,u.noConflict=function(){return yr._=xr,this},u.random=function(n,r){return null==n&&null==r&&(r=1),n=+n||0,null==r?(r=n,n=0):r=+r||0,n+Or(Wr()*(r-n+1))
},u.reduce=W,u.reduceRight=z,u.result=function(n,r){if(n){var t=n[r];return E(t)?n[r]():t}},u.size=function(n){var r=n?n.length:0;return typeof r=="number"?r:Ur(n).length},u.some=P,u.sortedIndex=J,u.template=function(n,r,e){var o=u,i=o.templateSettings;n=(n||"")+"",e=w({},e,i);var f=0,a="__p+='",i=e.variable;n.replace(RegExp((e.escape||ur).source+"|"+(e.interpolate||ur).source+"|"+(e.evaluate||ur).source+"|$","g"),function(r,e,u,o,i){return a+=n.slice(f,i).replace(or,t),e&&(a+="'+_.escape("+e+")+'"),o&&(a+="';"+o+";\n__p+='"),u&&(a+="'+((__t=("+u+"))==null?'':__t)+'"),f=i+r.length,r
}),a+="';",i||(i="obj",a="with("+i+"||{}){"+a+"}"),a="function("+i+"){var __t,__p='',__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}"+a+"return __p}";try{var l=Function("_","return "+a)(o)}catch(c){throw c.source=a,c}return r?l(r):(l.source=a,l)},u.unescape=function(n){return null==n?"":(n+"").replace(Hr,_)},u.uniqueId=function(n){var r=++rr+"";return n?n+r:r},u.all=k,u.any=P,u.detect=F,u.findWhere=function(n,r){return U(n,r,true)},u.foldl=W,u.foldr=z,u.include=R,u.inject=W,u.first=V,u.last=function(n,r,t){var u=0,o=n?n.length:0;
if(typeof r!="number"&&null!=r){var i=o;for(r=Q(r,t,3);i--&&r(n[i],i,n);)u++}else if(u=r,null==u||t)return n?n[o-1]:nr;return e(n,Mr(0,o-u))},u.sample=function(n,r,t){return n&&typeof n.length!="number"&&(n=N(n)),null==r||t?n?n[0+Or(Wr()*(n.length-1-0+1))]:nr:(n=C(n),n.length=$r(Mr(0,r),n.length),n)},u.take=V,u.head=V,Z(u),u.VERSION="2.3.0",u.prototype.chain=function(){return this.__chain__=true,this},u.prototype.value=function(){return this.__wrapped__},q("pop push reverse shift sort splice unshift".split(" "),function(n){var r=wr[n];
u.prototype[n]=function(){var n=this.__wrapped__;return r.apply(n,arguments),zr.spliceObjects||0!==n.length||delete n[0],this}}),q(["concat","join","slice"],function(n){var r=wr[n];u.prototype[n]=function(){var n=r.apply(this.__wrapped__,arguments);return this.__chain__&&(n=new o(n),n.__chain__=true),n}}),typeof define=="function"&&typeof define.amd=="object"&&define.amd?(yr._=u, define(function(){return u})):mr&&_r?dr?(_r.exports=u)._=u:mr._=u:yr._=u}).call(this);

File diff suppressed because it is too large Load Diff

View File

@@ -1,38 +0,0 @@
<?php
// cleanup requested file path
$filePath = isset($_GET['f']) ? $_GET['f'] : 'lodash';
$filePath = preg_replace('#(\.*[\/])+#', '', $filePath);
$filePath .= preg_match('/\.[a-z]+$/', $filePath) ? '' : '.js';
// output filename
if (isset($_GET['o'])) {
$outputName = $_GET['o'];
} else if (isset($_SERVER['argv'][1])) {
$outputName = $_SERVER['argv'][1];
} else {
$outputName = basename($filePath);
}
/*--------------------------------------------------------------------------*/
require('../vendor/docdown/docdown.php');
// get package version
$version = json_decode(file_get_contents('../package.json'))->version;
// generate Markdown
$markdown = docdown(array(
'path' => '../' . $filePath,
'title' => 'Lo-Dash <span>v' . $version . '</span>',
'toc' => 'categories',
'url' => 'https://github.com/lodash/lodash/blob/master/lodash.js'
));
// save to a `.md` file
file_put_contents($outputName . '.md', $markdown);
// print
header('Content-Type: text/plain;charset=utf-8');
echo $markdown . PHP_EOL;
?>

View File

@@ -1 +0,0 @@
module.exports = require('./dist/lodash.compat.js');

15777
lodash.js

File diff suppressed because it is too large Load Diff

140
lodash.min.js vendored Normal file
View File

@@ -0,0 +1,140 @@
/**
* @license
* lodash 3.7.0 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
* Build: `lodash modern -o ./lodash.js`
*/
;(function(){function n(n,t){if(n!==t){var r=n===n,e=t===t;if(n>t||!r||n===w&&e)return 1;if(n<t||!e||t===w&&r)return-1}return 0}function t(n,t,r){for(var e=n.length,u=r?e:-1;r?u--:++u<e;)if(t(n[u],u,n))return u;return-1}function r(n,t,r){if(t!==t)return p(n,r);r-=1;for(var e=n.length;++r<e;)if(n[r]===t)return r;return-1}function e(n){return typeof n=="function"||false}function u(n){return typeof n=="string"?n:null==n?"":n+""}function o(n){return n.charCodeAt(0)}function i(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););
return r}function f(n,t){for(var r=n.length;r--&&-1<t.indexOf(n.charAt(r)););return r}function a(t,r){return n(t.a,r.a)||t.b-r.b}function c(n){return $n[n]}function l(n){return Ln[n]}function s(n){return"\\"+Mn[n]}function p(n,t,r){var e=n.length;for(t+=r?0:-1;r?t--:++t<e;){var u=n[t];if(u!==u)return t}return-1}function h(n){return!!n&&typeof n=="object"}function _(n){return 160>=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n);
}function v(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]=B,o[++u]=r);return o}function g(n){for(var t=-1,r=n.length;++t<r&&_(n.charCodeAt(t)););return t}function y(n){for(var t=n.length;t--&&_(n.charCodeAt(t)););return t}function d(n){return Bn[n]}function m(_){function $n(n){if(h(n)&&!(Io(n)||n instanceof zn)){if(n instanceof Bn)return n;if(Ke.call(n,"__chain__")&&Ke.call(n,"__wrapped__"))return Fr(n)}return new Bn(n)}function Ln(){}function Bn(n,t,r){this.__wrapped__=n,this.__actions__=r||[],
this.__chain__=!!t}function zn(n){this.__wrapped__=n,this.__actions__=null,this.__dir__=1,this.__filtered__=false,this.__iteratees__=null,this.__takeCount__=ju,this.__views__=null}function Mn(){this.__data__={}}function Dn(n){var t=n?n.length:0;for(this.data={hash:_u(null),set:new iu};t--;)this.push(n[t])}function Pn(n,t){var r=n.data;return(typeof t=="string"||ae(t)?r.set.has(t):r.hash[t])?0:-1}function qn(n,t){var r=-1,e=n.length;for(t||(t=Ce(e));++r<e;)t[r]=n[r];return t}function Kn(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););
return n}function Vn(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Gn(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;){var i=n[r];t(i,r,n)&&(o[++u]=i)}return o}function Jn(n,t){for(var r=-1,e=n.length,u=Ce(e);++r<e;)u[r]=t(n[r],r,n);return u}function Xn(n){for(var t=-1,r=n.length,e=Au;++t<r;){var u=n[t];u>e&&(e=u)}return e}function Hn(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;return false}function Qn(n,t){return n===w?t:n}function nt(n,t,r,e){return n!==w&&Ke.call(e,r)?n:t;
}function tt(n,t,r){var e=zo(t);eu.apply(e,qu(t));for(var u=-1,o=e.length;++u<o;){var i=e[u],f=n[i],a=r(f,t[i],i,n,t);(a===a?a===f:f!==f)&&(f!==w||i in n)||(n[i]=a)}return n}function rt(n,t){for(var r=-1,e=n.length,u=Er(e),o=t.length,i=Ce(o);++r<o;){var f=t[r];i[r]=u?Ar(f,e)?n[f]:w:n[f]}return i}function et(n,t,r){r||(r={});for(var e=-1,u=t.length;++e<u;){var o=t[e];r[o]=n[o]}return r}function ut(n,t,r){var e=typeof n;return"function"==e?t===w?n:Bt(n,t,r):null==n?Oe:"object"==e?wt(n):t===w?Re(n):bt(n,t);
}function ot(n,t,r,e,u,o,i){var f;if(r&&(f=u?r(n,e,u):r(n)),f!==w)return f;if(!ae(n))return n;if(e=Io(n)){if(f=mr(n),!t)return qn(n,f)}else{var a=Ye.call(n),c=a==K;if(a!=Y&&a!=z&&(!c||u))return Nn[a]?br(n,a,t):u?n:{};if(f=wr(c?{}:n),!t)return Tu(f,n)}for(o||(o=[]),i||(i=[]),u=o.length;u--;)if(o[u]==n)return i[u];return o.push(n),i.push(f),(e?Kn:ht)(n,function(e,u){f[u]=ot(e,t,r,u,n,o,i)}),f}function it(n,t,r){if(typeof n!="function")throw new Be(L);return fu(function(){n.apply(w,r)},t)}function ft(n,t){
var e=n?n.length:0,u=[];if(!e)return u;var o=-1,i=dr(),f=i==r,a=f&&200<=t.length?zu(t):null,c=t.length;a&&(i=Pn,f=false,t=a);n:for(;++o<e;)if(a=n[o],f&&a===a){for(var l=c;l--;)if(t[l]===a)continue n;u.push(a)}else 0>i(t,a,0)&&u.push(a);return u}function at(n,t){var r=true;return Nu(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ct(n,t){var r=[];return Nu(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function lt(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0}),u}function st(n,t,r){
for(var e=-1,u=n.length,o=-1,i=[];++e<u;){var f=n[e];if(h(f)&&Er(f.length)&&(Io(f)||oe(f))){t&&(f=st(f,t,r));var a=-1,c=f.length;for(i.length+=c;++a<c;)i[++o]=f[a]}else r||(i[++o]=f)}return i}function pt(n,t){$u(n,t,ge)}function ht(n,t){return $u(n,t,zo)}function _t(n,t){return Lu(n,t,zo)}function vt(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){var i=t[r];Co(n[i])&&(o[++u]=i)}return o}function gt(n,t,r){if(null!=n){r!==w&&r in Ur(n)&&(t=[r]),r=-1;for(var e=t.length;null!=n&&++r<e;)var u=n=n[t[r]];
return u}}function yt(n,t,r,e,u,o){if(n===t)return 0!==n||1/n==1/t;var i=typeof n,f=typeof t;if("function"!=i&&"object"!=i&&"function"!=f&&"object"!=f||null==n||null==t)n=n!==n&&t!==t;else n:{var i=yt,f=Io(n),a=Io(t),c=M,l=M;f||(c=Ye.call(n),c==z?c=Y:c!=Y&&(f=he(n))),a||(l=Ye.call(t),l==z?l=Y:l!=Y&&he(t));var s=c==Y,a=l==Y,l=c==l;if(!l||f||s){if(!e&&(c=s&&Ke.call(n,"__wrapped__"),a=a&&Ke.call(t,"__wrapped__"),c||a)){n=i(c?n.value():n,a?t.value():t,r,e,u,o);break n}if(l){for(u||(u=[]),o||(o=[]),c=u.length;c--;)if(u[c]==n){
n=o[c]==t;break n}u.push(n),o.push(t),n=(f?hr:vr)(n,t,i,r,e,u,o),u.pop(),o.pop()}else n=false}else n=_r(n,t,c)}return n}function dt(n,t,r,e,u){for(var o=-1,i=t.length,f=!u;++o<i;)if(f&&e[o]?r[o]!==n[t[o]]:!(t[o]in n))return false;for(o=-1;++o<i;){var a=t[o],c=n[a],l=r[o];if(f&&e[o]?a=c!==w||a in n:(a=u?u(c,l,a):w,a===w&&(a=yt(l,c,u,true))),!a)return false}return true}function mt(n,t){var r=-1,e=Pu(n),u=Er(e)?Ce(e):[];return Nu(n,function(n,e,o){u[++r]=t(n,e,o)}),u}function wt(n){var t=zo(n),r=t.length;if(!r)return ke(true);
if(1==r){var e=t[0],u=n[e];if(Ir(u))return function(n){return null==n?false:n[e]===u&&(u!==w||e in Ur(n))}}for(var o=Ce(r),i=Ce(r);r--;)u=n[t[r]],o[r]=u,i[r]=Ir(u);return function(n){return null!=n&&dt(Ur(n),t,o,i)}}function bt(n,t){var r=Io(n),e=kr(n)&&Ir(t),u=n+"";return n=Nr(n),function(o){if(null==o)return false;var i=u;if(o=Ur(o),!(!r&&e||i in o)){if(o=1==n.length?o:gt(o,It(n,0,-1)),null==o)return false;i=Mr(n),o=Ur(o)}return o[i]===t?t!==w||i in o:yt(t,o[i],null,true)}}function xt(n,t,r,e,u){if(!ae(n))return n;
var o=Er(t.length)&&(Io(t)||he(t));if(!o){var i=zo(t);eu.apply(i,qu(t))}return Kn(i||t,function(f,a){if(i&&(a=f,f=t[a]),h(f)){e||(e=[]),u||(u=[]);n:{for(var c=a,l=e,s=u,p=l.length,_=t[c];p--;)if(l[p]==_){n[c]=s[p];break n}var p=n[c],v=r?r(p,_,c,n,t):w,g=v===w;g&&(v=_,Er(_.length)&&(Io(_)||he(_))?v=Io(p)?p:Pu(p)?qn(p):[]:So(_)||oe(_)?v=oe(p)?_e(p):So(p)?p:{}:g=false),l.push(_),s.push(v),g?n[c]=xt(v,_,r,l,s):(v===v?v!==p:p===p)&&(n[c]=v)}}else c=n[a],l=r?r(c,f,a,n,t):w,(s=l===w)&&(l=f),!o&&l===w||!s&&(l===l?l===c:c!==c)||(n[a]=l);
}),n}function At(n){return function(t){return null==t?w:t[n]}}function jt(n){var t=n+"";return n=Nr(n),function(r){return gt(r,n,t)}}function kt(n,t){for(var r=t.length;r--;){var e=parseFloat(t[r]);if(e!=u&&Ar(e)){var u=e;au.call(n,e,1)}}}function Ot(n,t){return n+nu(xu()*(t-n+1))}function Et(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function It(n,t,r){var e=-1,u=n.length;for(t=null==t?0:+t||0,0>t&&(t=-t>u?0:u+t),r=r===w||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Ce(u);++e<u;)r[e]=n[e+t];
return r}function Rt(n,t){var r;return Nu(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Ct(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function St(t,r,e){var u=yr(),o=-1;return r=Jn(r,function(n){return u(n)}),t=mt(t,function(n){return{a:Jn(r,function(t){return t(n)}),b:++o,c:n}}),Ct(t,function(t,r){var u;n:{u=-1;for(var o=t.a,i=r.a,f=o.length,a=e.length;++u<f;){var c=n(o[u],i[u]);if(c){u=u<a?c*(e[u]?1:-1):c;break n}}u=t.b-r.b}return u})}function Wt(n,t){var r=0;return Nu(n,function(n,e,u){
r+=+t(n,e,u)||0}),r}function Tt(n,t){var e=-1,u=dr(),o=n.length,i=u==r,f=i&&200<=o,a=f?zu():null,c=[];a?(u=Pn,i=false):(f=false,a=t?[]:c);n:for(;++e<o;){var l=n[e],s=t?t(l,e,n):l;if(i&&l===l){for(var p=a.length;p--;)if(a[p]===s)continue n;t&&a.push(s),c.push(l)}else 0>u(a,s,0)&&((t||f)&&a.push(s),c.push(l))}return c}function Ut(n,t){for(var r=-1,e=t.length,u=Ce(e);++r<e;)u[r]=n[t[r]];return u}function Nt(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););return r?It(n,e?0:o,e?o+1:u):It(n,e?o+1:0,e?u:o);
}function Ft(n,t){var r=n;r instanceof zn&&(r=r.value());for(var e=-1,u=t.length;++e<u;){var r=[r],o=t[e];eu.apply(r,o.args),r=o.func.apply(o.thisArg,r)}return r}function $t(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=Eu){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)?e=o+1:u=o}return u}return Lt(n,t,Oe,r)}function Lt(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,f=t===w;u<o;){var a=nu((u+o)/2),c=r(n[a]),l=c===c;(i?l||e:f?l&&(e||c!==w):e?c<=t:c<t)?u=a+1:o=a}return du(o,Ou)}function Bt(n,t,r){
if(typeof n!="function")return Oe;if(t===w)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,o){return n.call(t,r,e,u,o)};case 5:return function(r,e,u,o,i){return n.call(t,r,e,u,o,i)}}return function(){return n.apply(t,arguments)}}function zt(n){return Xe.call(n,0)}function Mt(n,t,r){for(var e=r.length,u=-1,o=yu(n.length-e,0),i=-1,f=t.length,a=Ce(o+f);++i<f;)a[i]=t[i];for(;++u<e;)a[r[u]]=n[u];for(;o--;)a[i++]=n[u++];
return a}function Dt(n,t,r){for(var e=-1,u=r.length,o=-1,i=yu(n.length-u,0),f=-1,a=t.length,c=Ce(i+a);++o<i;)c[o]=n[o];for(i=o;++f<a;)c[i+f]=t[f];for(;++e<u;)c[i+r[e]]=n[o++];return c}function Pt(n,t){return function(r,e,u){var o=t?t():{};if(e=yr(e,u,3),Io(r)){u=-1;for(var i=r.length;++u<i;){var f=r[u];n(o,f,e(f,u,r),r)}}else Nu(r,function(t,r,u){n(o,t,e(t,r,u),u)});return o}}function qt(n){return ue(function(t,r){var e=-1,u=null==t?0:r.length,o=2<u&&r[u-2],i=2<u&&r[2],f=1<u&&r[u-1];for(typeof o=="function"?(o=Bt(o,f,5),
u-=2):(o=typeof f=="function"?f:null,u-=o?1:0),i&&jr(r[0],r[1],i)&&(o=3>u?null:o,u=1);++e<u;)(i=r[e])&&n(t,i,o);return t})}function Kt(n,t){return function(r,e){var u=r?Pu(r):0;if(!Er(u))return n(r,e);for(var o=t?u:-1,i=Ur(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function Vt(n){return function(t,r,e){var u=Ur(t);e=e(t);for(var o=e.length,i=n?o:-1;n?i--:++i<o;){var f=e[i];if(false===r(u[f],f,u))break}return t}}function Yt(n,t){function r(){return(this&&this!==Yn&&this instanceof r?e:n).apply(t,arguments);
}var e=Gt(n);return r}function Zt(n){return function(t){var r=-1;t=Ae(de(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Gt(n){return function(){var t=Uu(n.prototype),r=n.apply(t,arguments);return ae(r)?r:t}}function Jt(n){function t(r,e,u){return u&&jr(r,e,u)&&(e=null),r=pr(r,n,null,null,null,null,null,e),r.placeholder=t.placeholder,r}return t}function Xt(n,t){return function(r,e,u){u&&jr(r,e,u)&&(e=null);var i=yr(),f=null==e;if(i===ut&&f||(f=false,e=i(e,u,3)),f){if(e=Io(r),e||!pe(r))return n(e?r:Tr(r));
e=o}return gr(r,e,t)}}function Ht(n,r){return function(e,u,o){return u=yr(u,o,3),Io(e)?(u=t(e,u,r),-1<u?e[u]:w):lt(e,u,n)}}function Qt(n){return function(r,e,u){return r&&r.length?(e=yr(e,u,3),t(r,e,n)):-1}}function nr(n){return function(t,r,e){return r=yr(r,e,3),lt(t,r,n,true)}}function tr(n){return function(){var t=arguments.length;if(!t)return function(){return arguments[0]};for(var r,e=n?t:-1,u=0,o=Ce(t);n?e--:++e<t;){var i=o[u++]=arguments[e];if(typeof i!="function")throw new Be(L);var f=r?"":Du(i);
r="wrapper"==f?new Bn([]):r}for(e=r?-1:t;++e<t;)i=o[e],f=Du(i),r=(u="wrapper"==f?Mu(i):null)&&Or(u[0])?r[Du(u[0])].apply(r,u[3]):1==i.length&&Or(i)?r[f]():r.thru(i);return function(){var n=arguments;if(r&&1==n.length&&Io(n[0]))return r.plant(n[0]).value();for(var e=0,n=o[e].apply(this,n);++e<t;)n=o[e].call(this,n);return n}}}function rr(n,t){return function(r,e,u){return typeof e=="function"&&u===w&&Io(r)?n(r,e):t(r,Bt(e,u,3))}}function er(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=Bt(r,e,3)),
n(t,r,ge)}}function ur(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=Bt(r,e,3)),n(t,r)}}function or(n){return function(t,r,e){return(t=u(t))&&(n?t:"")+cr(t,r,e)+(n?"":t)}}function ir(n){var t=ue(function(r,e){var u=v(e,t.placeholder);return pr(r,n,null,e,u)});return t}function fr(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e=="function"&&o===w&&Io(r)?n(r,e,u,i):Et(r,yr(e,o,4),u,i,t)}}function ar(n,t,r,e,u,o,i,f,a,c){function l(){for(var b=arguments.length,j=b,k=Ce(b);j--;)k[j]=arguments[j];
if(e&&(k=Mt(k,e,u)),o&&(k=Dt(k,o,i)),_||y){var j=l.placeholder,O=v(k,j),b=b-O.length;if(b<c){var R=f?qn(f):null,b=yu(c-b,0),C=_?O:null,O=_?null:O,S=_?k:null,k=_?null:k;return t|=_?E:I,t&=~(_?I:E),g||(t&=~(x|A)),k=[n,t,r,S,C,k,O,R,a,b],R=ar.apply(w,k),Or(n)&&Ku(R,k),R.placeholder=j,R}}if(j=p?r:this,h&&(n=j[m]),f)for(R=k.length,b=du(f.length,R),C=qn(k);b--;)O=f[b],k[b]=Ar(O,R)?C[O]:w;return s&&a<k.length&&(k.length=a),(this&&this!==Yn&&this instanceof l?d||Gt(n):n).apply(j,k)}var s=t&R,p=t&x,h=t&A,_=t&k,g=t&j,y=t&O,d=!h&&Gt(n),m=n;
return l}function cr(n,t,r){return n=n.length,t=+t,n<t&&vu(t)?(t-=n,r=null==r?" ":r+"",be(r,He(t/r.length)).slice(0,t)):""}function lr(n,t,r,e){function u(){for(var t=-1,f=arguments.length,a=-1,c=e.length,l=Ce(f+c);++a<c;)l[a]=e[a];for(;f--;)l[a++]=arguments[++t];return(this&&this!==Yn&&this instanceof u?i:n).apply(o?r:this,l)}var o=t&x,i=Gt(n);return u}function sr(n){return function(t,r,e,u){var o=yr(e);return o===ut&&null==e?$t(t,r,n):Lt(t,r,o(e,u,1),n)}}function pr(n,t,r,e,u,o,i,f){var a=t&A;if(!a&&typeof n!="function")throw new Be(L);
var c=e?e.length:0;if(c||(t&=~(E|I),e=u=null),c-=u?u.length:0,t&I){var l=e,s=u;e=u=null}var p=a?null:Mu(n);return r=[n,t,r,e,u,l,s,o,i,f],p&&(e=r[1],t=p[1],f=e|t,u=t==R&&e==k||t==R&&e==C&&r[7].length<=p[8]||t==(R|C)&&e==k,(f<R||u)&&(t&x&&(r[2]=p[2],f|=e&x?0:j),(e=p[3])&&(u=r[3],r[3]=u?Mt(u,e,p[4]):qn(e),r[4]=u?v(r[3],B):qn(p[4])),(e=p[5])&&(u=r[5],r[5]=u?Dt(u,e,p[6]):qn(e),r[6]=u?v(r[5],B):qn(p[6])),(e=p[7])&&(r[7]=qn(e)),t&R&&(r[8]=null==r[8]?p[8]:du(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],
r[1]=f),t=r[1],f=r[9]),r[9]=null==f?a?0:n.length:yu(f-c,0)||0,(p?Bu:Ku)(t==x?Yt(r[0],r[2]):t!=E&&t!=(x|E)||r[4].length?ar.apply(w,r):lr.apply(w,r),r)}function hr(n,t,r,e,u,o,i){var f=-1,a=n.length,c=t.length,l=true;if(a!=c&&(!u||c<=a))return false;for(;l&&++f<a;){var s=n[f],p=t[f],l=w;if(e&&(l=u?e(p,s,f):e(s,p,f)),l===w)if(u)for(var h=c;h--&&(p=t[h],!(l=s&&s===p||r(s,p,e,u,o,i))););else l=s&&s===p||r(s,p,e,u,o,i)}return!!l}function _r(n,t,r){switch(r){case D:case P:return+n==+t;case q:return n.name==t.name&&n.message==t.message;
case V:return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case Z:case G:return n==t+""}return false}function vr(n,t,r,e,u,o,i){var f=zo(n),a=f.length,c=zo(t).length;if(a!=c&&!u)return false;for(var c=u,l=-1;++l<a;){var s=f[l],p=u?s in t:Ke.call(t,s);if(p){var h=n[s],_=t[s],p=w;e&&(p=u?e(_,h,s):e(h,_,s)),p===w&&(p=h&&h===_||r(h,_,e,u,o,i))}if(!p)return false;c||(c="constructor"==s)}return c||(r=n.constructor,e=t.constructor,!(r!=e&&"constructor"in n&&"constructor"in t)||typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)?true:false;
}function gr(n,t,r){var e=r?ju:Au,u=e,o=u;return Nu(n,function(n,i,f){i=t(n,i,f),((r?i<u:i>u)||i===e&&i===o)&&(u=i,o=n)}),o}function yr(n,t,r){var e=$n.callback||je,e=e===je?ut:e;return r?e(n,t,r):e}function dr(n,t,e){var u=$n.indexOf||zr,u=u===zr?r:u;return n?u(n,t,e):u}function mr(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&Ke.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function wr(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Fe),new n;
}function br(n,t,r){var e=n.constructor;switch(t){case J:return zt(n);case D:case P:return new e(+n);case X:case H:case Q:case nn:case tn:case rn:case en:case un:case on:return t=n.buffer,new e(r?zt(t):t,n.byteOffset,n.length);case V:case G:return new e(n);case Z:var u=new e(n.source,kn.exec(n));u.lastIndex=n.lastIndex}return u}function xr(n,t,r){return null==n||kr(t,n)||(t=Nr(t),n=1==t.length?n:gt(n,It(t,0,-1)),t=Mr(t)),t=null==n?n:n[t],null==t?w:t.apply(n,r)}function Ar(n,t){return n=+n,t=null==t?Ru:t,
-1<n&&0==n%1&&n<t}function jr(n,t,r){if(!ae(r))return false;var e=typeof t;return"number"==e?(e=Pu(r),e=Er(e)&&Ar(t,e)):e="string"==e&&t in r,e?(t=r[t],n===n?n===t:t!==t):false}function kr(n,t){var r=typeof n;return"string"==r&&dn.test(n)||"number"==r?true:Io(n)?false:!yn.test(n)||null!=t&&n in Ur(t)}function Or(n){var t=Du(n);return!!t&&n===$n[t]&&t in zn.prototype}function Er(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=Ru}function Ir(n){return n===n&&(0===n?0<1/n:!ae(n))}function Rr(n,t){n=Ur(n);for(var r=-1,e=t.length,u={};++r<e;){
var o=t[r];o in n&&(u[o]=n[o])}return u}function Cr(n,t){var r={};return pt(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function Sr(n){var t;if(!h(n)||Ye.call(n)!=Y||!(Ke.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t)))return false;var r;return pt(n,function(n,t){r=t}),r===w||Ke.call(n,r)}function Wr(n){for(var t=ge(n),r=t.length,e=r&&n.length,u=$n.support,u=e&&Er(e)&&(Io(n)||u.nonEnumArgs&&oe(n)),o=-1,i=[];++o<r;){var f=t[o];(u&&Ar(f,e)||Ke.call(n,f))&&i.push(f)}return i}
function Tr(n){return null==n?[]:Er(Pu(n))?ae(n)?n:Fe(n):ye(n)}function Ur(n){return ae(n)?n:Fe(n)}function Nr(n){if(Io(n))return n;var t=[];return u(n).replace(mn,function(n,r,e,u){t.push(e?u.replace(An,"$1"):r||n)}),t}function Fr(n){return n instanceof zn?n.clone():new Bn(n.__wrapped__,n.__chain__,qn(n.__actions__))}function $r(n,t,r){return n&&n.length?((r?jr(n,t,r):null==t)&&(t=1),It(n,0>t?0:t)):[]}function Lr(n,t,r){var e=n?n.length:0;return e?((r?jr(n,t,r):null==t)&&(t=1),t=e-(+t||0),It(n,0,0>t?0:t)):[];
}function Br(n){return n?n[0]:w}function zr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?yu(u+e,0):e;else if(e)return e=$t(n,t),n=n[e],(t===t?t===n:n!==n)?e:-1;return r(n,t,e||0)}function Mr(n){var t=n?n.length:0;return t?n[t-1]:w}function Dr(n){return $r(n,1)}function Pr(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=jr(n,t,u)?null:t,t=false);var o=yr();if((o!==ut||null!=e)&&(e=o(e,u,3)),t&&dr()==r){t=e;var i;e=-1,u=n.length;for(var o=-1,f=[];++e<u;){
var a=n[e],c=t?t(a,e,n):a;e&&i===c||(i=c,f[++o]=a)}n=f}else n=Tt(n,e);return n}function qr(n){for(var t=-1,r=(n&&n.length&&Xn(Jn(n,Pu)))>>>0,e=Ce(r);++t<r;)e[t]=Jn(n,At(t));return e}function Kr(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||Io(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1])}return u}function Vr(n){return n=$n(n),n.__chain__=true,n}function Yr(n,t,r){return t.call(r,n)}function Zr(n,t,r){var e=Io(n)?Vn:at;return r&&jr(n,t,r)&&(t=null),(typeof t!="function"||r!==w)&&(t=yr(t,r,3)),
e(n,t)}function Gr(n,t,r){var e=Io(n)?Gn:ct;return t=yr(t,r,3),e(n,t)}function Jr(n,t,r,e){var u=n?Pu(n):0;return Er(u)||(n=ye(n),u=n.length),u?(r=typeof r!="number"||e&&jr(t,r,e)?0:0>r?yu(u+r,0):r||0,typeof n=="string"||!Io(n)&&pe(n)?r<u&&-1<n.indexOf(t,r):-1<dr(n,t,r)):false}function Xr(n,t,r){var e=Io(n)?Jn:mt;return t=yr(t,r,3),e(n,t)}function Hr(n,t,r){return(r?jr(n,t,r):null==t)?(n=Tr(n),t=n.length,0<t?n[Ot(0,t-1)]:w):(n=Qr(n),n.length=du(0>t?0:+t||0,n.length),n)}function Qr(n){n=Tr(n);for(var t=-1,r=n.length,e=Ce(r);++t<r;){
var u=Ot(0,t);t!=u&&(e[t]=e[u]),e[u]=n[t]}return e}function ne(n,t,r){var e=Io(n)?Hn:Rt;return r&&jr(n,t,r)&&(t=null),(typeof t!="function"||r!==w)&&(t=yr(t,r,3)),e(n,t)}function te(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new Be(L);var e=n;n=t,t=e}return function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}}function re(n,t,r){function e(){var r=t-(_o()-c);0>=r||r>t?(f&&Qe(f),r=p,f=s=p=w,r&&(h=_o(),a=n.apply(l,i),s||f||(i=l=null))):s=fu(e,r)}function u(){
s&&Qe(s),f=s=p=w,(v||_!==t)&&(h=_o(),a=n.apply(l,i),s||f||(i=l=null))}function o(){if(i=arguments,c=_o(),l=this,p=v&&(s||!g),false===_)var r=g&&!s;else{f||g||(h=c);var o=_-(c-h),y=0>=o||o>_;y?(f&&(f=Qe(f)),h=c,a=n.apply(l,i)):f||(f=fu(u,o))}return y&&s?s=Qe(s):s||t===_||(s=fu(e,t)),r&&(y=true,a=n.apply(l,i)),!y||s||f||(i=l=null),a}var i,f,a,c,l,s,p,h=0,_=false,v=true;if(typeof n!="function")throw new Be(L);if(t=0>t?0:+t||0,true===r)var g=true,v=false;else ae(r)&&(g=r.leading,_="maxWait"in r&&yu(+r.maxWait||0,t),v="trailing"in r?r.trailing:v);
return o.cancel=function(){s&&Qe(s),f&&Qe(f),f=s=p=w},o}function ee(n,t){function r(){var e=arguments,u=r.cache,o=t?t.apply(this,e):e[0];return u.has(o)?u.get(o):(e=n.apply(this,e),u.set(o,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new Be(L);return r.cache=new ee.Cache,r}function ue(n,t){if(typeof n!="function")throw new Be(L);return t=yu(t===w?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=yu(r.length-t,0),o=Ce(u);++e<u;)o[e]=r[t+e];switch(t){case 0:return n.call(this,o);
case 1:return n.call(this,r[0],o);case 2:return n.call(this,r[0],r[1],o)}for(u=Ce(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function oe(n){return Er(h(n)?n.length:w)&&Ye.call(n)==z}function ie(n){return!!n&&1===n.nodeType&&h(n)&&-1<Ye.call(n).indexOf("Element")}function fe(n){return h(n)&&typeof n.message=="string"&&Ye.call(n)==q}function ae(n){var t=typeof n;return"function"==t||!!n&&"object"==t}function ce(n){return null==n?false:Ye.call(n)==K?Ge.test(qe.call(n)):h(n)&&En.test(n)}function le(n){
return typeof n=="number"||h(n)&&Ye.call(n)==V}function se(n){return h(n)&&Ye.call(n)==Z||false}function pe(n){return typeof n=="string"||h(n)&&Ye.call(n)==G}function he(n){return h(n)&&Er(n.length)&&!!Un[Ye.call(n)]}function _e(n){return et(n,ge(n))}function ve(n){return vt(n,ge(n))}function ge(n){if(null==n)return[];ae(n)||(n=Fe(n));for(var t=n.length,t=t&&Er(t)&&(Io(n)||Wu.nonEnumArgs&&oe(n))&&t||0,r=n.constructor,e=-1,r=typeof r=="function"&&r.prototype===n,u=Ce(t),o=0<t;++e<t;)u[e]=e+"";for(var i in n)o&&Ar(i,t)||"constructor"==i&&(r||!Ke.call(n,i))||u.push(i);
return u}function ye(n){return Ut(n,zo(n))}function de(n){return(n=u(n))&&n.replace(In,c).replace(xn,"")}function me(n){return(n=u(n))&&bn.test(n)?n.replace(wn,"\\$&"):n}function we(n,t,r){return r&&jr(n,t,r)&&(t=0),bu(n,t)}function be(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!vu(t))return r;do t%2&&(r+=n),t=nu(t/2),n+=n;while(t);return r}function xe(n,t,r){var e=n;return(n=u(n))?(r?jr(e,t,r):null==t)?n.slice(g(n),y(n)+1):(t+="",n.slice(i(n,t),f(n,t)+1)):n}function Ae(n,t,r){return r&&jr(n,t,r)&&(t=null),
n=u(n),n.match(t||Sn)||[]}function je(n,t,r){return r&&jr(n,t,r)&&(t=null),ut(n,t)}function ke(n){return function(){return n}}function Oe(n){return n}function Ee(n,t,r){if(null==r){var e=ae(t),u=e&&zo(t);((u=u&&u.length&&vt(t,u))?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=vt(t,zo(t)));var o=true,e=-1,i=Co(n),f=u.length;false===r?o=false:ae(r)&&"chain"in r&&(o=r.chain);for(;++e<f;){r=u[e];var a=t[r];n[r]=a,i&&(n.prototype[r]=function(t){return function(){var r=this.__chain__;if(o||r){var e=n(this.__wrapped__);
return(e.__actions__=qn(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return r=[this.value()],eu.apply(r,arguments),t.apply(n,r)}}(a))}return n}function Ie(){}function Re(n){return kr(n)?At(n):jt(n)}_=_?Zn.defaults(Yn.Object(),_,Zn.pick(Yn,Tn)):Yn;var Ce=_.Array,Se=_.Date,We=_.Error,Te=_.Function,Ue=_.Math,Ne=_.Number,Fe=_.Object,$e=_.RegExp,Le=_.String,Be=_.TypeError,ze=Ce.prototype,Me=Fe.prototype,De=Le.prototype,Pe=(Pe=_.window)&&Pe.document,qe=Te.prototype.toString,Ke=Me.hasOwnProperty,Ve=0,Ye=Me.toString,Ze=_._,Ge=$e("^"+me(Ye).replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Je=ce(Je=_.ArrayBuffer)&&Je,Xe=ce(Xe=Je&&new Je(0).slice)&&Xe,He=Ue.ceil,Qe=_.clearTimeout,nu=Ue.floor,tu=ce(tu=Fe.getOwnPropertySymbols)&&tu,ru=ce(ru=Fe.getPrototypeOf)&&ru,eu=ze.push,uu=ce(Fe.preventExtensions=Fe.preventExtensions)&&uu,ou=Me.propertyIsEnumerable,iu=ce(iu=_.Set)&&iu,fu=_.setTimeout,au=ze.splice,cu=ce(cu=_.Uint8Array)&&cu,lu=ce(lu=_.WeakMap)&&lu,su=function(){
try{var n=ce(n=_.Float64Array)&&n,t=new n(new Je(10),0,1)&&n}catch(r){}return t}(),pu=function(){var n={1:0},t=uu&&ce(t=Fe.assign)&&t;try{t(uu(n),"xo")}catch(r){}return!n[1]&&t}(),hu=ce(hu=Ce.isArray)&&hu,_u=ce(_u=Fe.create)&&_u,vu=_.isFinite,gu=ce(gu=Fe.keys)&&gu,yu=Ue.max,du=Ue.min,mu=ce(mu=Se.now)&&mu,wu=ce(wu=Ne.isFinite)&&wu,bu=_.parseInt,xu=Ue.random,Au=Ne.NEGATIVE_INFINITY,ju=Ne.POSITIVE_INFINITY,ku=Ue.pow(2,32)-1,Ou=ku-1,Eu=ku>>>1,Iu=su?su.BYTES_PER_ELEMENT:0,Ru=Ue.pow(2,53)-1,Cu=lu&&new lu,Su={},Wu=$n.support={};
!function(n){function t(){this.x=n}var r=[];t.prototype={valueOf:n,y:n};for(var e in new t)r.push(e);Wu.funcDecomp=/\bthis\b/.test(function(){return this}),Wu.funcNames=typeof Te.name=="string";try{Wu.dom=11===Pe.createDocumentFragment().nodeType}catch(u){Wu.dom=false}try{Wu.nonEnumArgs=!ou.call(arguments,1)}catch(o){Wu.nonEnumArgs=true}}(1,0),$n.templateSettings={escape:_n,evaluate:vn,interpolate:gn,variable:"",imports:{_:$n}};var Tu=pu||function(n,t){return null==t?n:et(t,qu(t),et(t,zo(t),n))},Uu=function(){
function n(){}return function(t){if(ae(t)){n.prototype=t;var r=new n;n.prototype=null}return r||_.Object()}}(),Nu=Kt(ht),Fu=Kt(_t,true),$u=Vt(),Lu=Vt(true),Bu=Cu?function(n,t){return Cu.set(n,t),n}:Oe;Xe||(zt=Je&&cu?function(n){var t=n.byteLength,r=su?nu(t/Iu):0,e=r*Iu,u=new Je(t);if(r){var o=new su(u,0,r);o.set(new su(n,0,r))}return t!=e&&(o=new cu(u,e),o.set(new cu(n,e))),u}:ke(null));var zu=_u&&iu?function(n){return new Dn(n)}:ke(null),Mu=Cu?function(n){return Cu.get(n)}:Ie,Du=function(){return Wu.funcNames?"constant"==ke.name?At("name"):function(n){
for(var t=n.name,r=Su[t],e=r?r.length:0;e--;){var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}:ke("")}(),Pu=At("length"),qu=tu?function(n){return tu(Ur(n))}:ke([]),Ku=function(){var n=0,t=0;return function(r,e){var u=_o(),o=U-(u-t);if(t=u,0<o){if(++n>=T)return r}else n=0;return Bu(r,e)}}(),Vu=ue(function(n,t){return Io(n)||oe(n)?ft(n,st(t,false,true)):[]}),Yu=Qt(),Zu=Qt(true),Gu=ue(function(t,r){t||(t=[]),r=st(r);var e=rt(t,r);return kt(t,r.sort(n)),e}),Ju=sr(),Xu=sr(true),Hu=ue(function(n){return Tt(st(n,false,true));
}),Qu=ue(function(n,t){return Io(n)||oe(n)?ft(n,t):[]}),no=ue(qr),to=ue(function(n,t){var r=n?Pu(n):0;return Er(r)&&(n=Tr(n)),rt(n,st(t))}),ro=Pt(function(n,t,r){Ke.call(n,r)?++n[r]:n[r]=1}),eo=Ht(Nu),uo=Ht(Fu,true),oo=rr(Kn,Nu),io=rr(function(n,t){for(var r=n.length;r--&&false!==t(n[r],r,n););return n},Fu),fo=Pt(function(n,t,r){Ke.call(n,r)?n[r].push(t):n[r]=[t]}),ao=Pt(function(n,t,r){n[r]=t}),co=ue(function(n,t,r){var e=-1,u=typeof t=="function",o=kr(t),i=Pu(n),f=Er(i)?Ce(i):[];return Nu(n,function(n){
var i=u?t:o&&null!=n&&n[t];f[++e]=i?i.apply(n,r):xr(n,t,r)}),f}),lo=Pt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),so=fr(function(n,t,r,e){var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r},Nu),po=fr(function(n,t,r,e){var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r},Fu),ho=ue(function(n,t){if(null==n)return[];var r=t[2];return r&&jr(t[0],t[1],r)&&(t.length=1),St(n,st(t),[])}),_o=mu||function(){return(new Se).getTime()},vo=ue(function(n,t,r){
var e=x;if(r.length)var u=v(r,vo.placeholder),e=e|E;return pr(n,e,t,r,u)}),go=ue(function(n,t){t=t.length?st(t):ve(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=pr(n[u],x,n)}return n}),yo=ue(function(n,t,r){var e=x|A;if(r.length)var u=v(r,yo.placeholder),e=e|E;return pr(t,e,n,r,u)}),mo=Jt(k),wo=Jt(O),bo=ue(function(n,t){return it(n,1,t)}),xo=ue(function(n,t,r){return it(n,t,r)}),Ao=tr(),jo=tr(true),ko=ir(E),Oo=ir(I),Eo=ue(function(n,t){return pr(n,C,null,null,null,st(t))}),Io=hu||function(n){return h(n)&&Er(n.length)&&Ye.call(n)==M;
};Wu.dom||(ie=function(n){return!!n&&1===n.nodeType&&h(n)&&!So(n)});var Ro=wu||function(n){return typeof n=="number"&&vu(n)},Co=e(/x/)||cu&&!e(cu)?function(n){return Ye.call(n)==K}:e,So=ru?function(n){if(!n||Ye.call(n)!=Y)return false;var t=n.valueOf,r=ce(t)&&(r=ru(t))&&ru(r);return r?n==r||ru(n)==r:Sr(n)}:Sr,Wo=qt(function(n,t,r){return r?tt(n,t,r):Tu(n,t)}),To=ue(function(n){var t=n[0];return null==t?t:(n.push(Qn),Wo.apply(w,n))}),Uo=nr(ht),No=nr(_t),Fo=er($u),$o=er(Lu),Lo=ur(ht),Bo=ur(_t),zo=gu?function(n){
if(n)var t=n.constructor,r=n.length;return typeof t=="function"&&t.prototype===n||typeof n!="function"&&Er(r)?Wr(n):ae(n)?gu(n):[]}:Wr,Mo=qt(xt),Do=ue(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Jn(st(t),Le),Rr(n,ft(ge(n),t));var r=Bt(t[0],t[1],3);return Cr(n,function(n,t,e){return!r(n,t,e)})}),Po=ue(function(n,t){return null==n?{}:"function"==typeof t[0]?Cr(n,Bt(t[0],t[1],3)):Rr(n,st(t))}),qo=Zt(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t);
}),Ko=Zt(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Vo=or(),Yo=or(true);8!=bu(Wn+"08")&&(we=function(n,t,r){return(r?jr(n,t,r):null==t)?t=0:t&&(t=+t),n=xe(n),bu(n,t||(On.test(n)?16:10))});var Zo=Zt(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),Go=Zt(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),Jo=ue(function(n,t){try{return n.apply(w,t)}catch(r){return fe(r)?r:new We(r)}}),Xo=ue(function(n,t){return function(r){return xr(r,n,t)}}),Ho=ue(function(n,t){
return function(r){return xr(n,r,t)}}),Qo=Xt(Xn),ni=Xt(function(n){for(var t=-1,r=n.length,e=ju;++t<r;){var u=n[t];u<e&&(e=u)}return e},true);return $n.prototype=Ln.prototype,Bn.prototype=Uu(Ln.prototype),Bn.prototype.constructor=Bn,zn.prototype=Uu(Ln.prototype),zn.prototype.constructor=zn,Mn.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n]},Mn.prototype.get=function(n){return"__proto__"==n?w:this.__data__[n]},Mn.prototype.has=function(n){return"__proto__"!=n&&Ke.call(this.__data__,n);
},Mn.prototype.set=function(n,t){return"__proto__"!=n&&(this.__data__[n]=t),this},Dn.prototype.push=function(n){var t=this.data;typeof n=="string"||ae(n)?t.set.add(n):t.hash[n]=true},ee.Cache=Mn,$n.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new Be(L);var r=n;n=t,t=r}return n=vu(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0}},$n.ary=function(n,t,r){return r&&jr(n,t,r)&&(t=null),t=n&&null==t?n.length:yu(+t||0,0),pr(n,R,null,null,null,null,t)},$n.assign=Wo,
$n.at=to,$n.before=te,$n.bind=vo,$n.bindAll=go,$n.bindKey=yo,$n.callback=je,$n.chain=Vr,$n.chunk=function(n,t,r){t=(r?jr(n,t,r):null==t)?1:yu(+t||1,1),r=0;for(var e=n?n.length:0,u=-1,o=Ce(He(e/t));r<e;)o[++u]=It(n,r,r+=t);return o},$n.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var o=n[t];o&&(u[++e]=o)}return u},$n.constant=ke,$n.countBy=ro,$n.create=function(n,t,r){var e=Uu(n);return r&&jr(n,t,r)&&(t=null),t?Tu(e,t):e},$n.curry=mo,$n.curryRight=wo,$n.debounce=re,$n.defaults=To,
$n.defer=bo,$n.delay=xo,$n.difference=Vu,$n.drop=$r,$n.dropRight=Lr,$n.dropRightWhile=function(n,t,r){return n&&n.length?Nt(n,yr(t,r,3),true,true):[]},$n.dropWhile=function(n,t,r){return n&&n.length?Nt(n,yr(t,r,3),true):[]},$n.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&jr(n,t,r)&&(r=0,e=u),u=n.length,r=null==r?0:+r||0,0>r&&(r=-r>u?0:u+r),e=e===w||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;return n},$n.filter=Gr,$n.flatten=function(n,t,r){var e=n?n.length:0;
return r&&jr(n,t,r)&&(t=false),e?st(n,t):[]},$n.flattenDeep=function(n){return n&&n.length?st(n,true):[]},$n.flow=Ao,$n.flowRight=jo,$n.forEach=oo,$n.forEachRight=io,$n.forIn=Fo,$n.forInRight=$o,$n.forOwn=Lo,$n.forOwnRight=Bo,$n.functions=ve,$n.groupBy=fo,$n.indexBy=ao,$n.initial=function(n){return Lr(n,1)},$n.intersection=function(){for(var n=[],t=-1,e=arguments.length,u=[],o=dr(),i=o==r,f=[];++t<e;){var a=arguments[t];(Io(a)||oe(a))&&(n.push(a),u.push(i&&120<=a.length?zu(t&&a):null))}if(e=n.length,2>e)return f;
var i=n[0],c=-1,l=i?i.length:0,s=u[0];n:for(;++c<l;)if(a=i[c],0>(s?Pn(s,a):o(f,a,0))){for(t=e;--t;){var p=u[t];if(0>(p?Pn(p,a):o(n[t],a,0)))continue n}s&&s.push(a),f.push(a)}return f},$n.invert=function(n,t,r){r&&jr(n,t,r)&&(t=null),r=-1;for(var e=zo(n),u=e.length,o={};++r<u;){var i=e[r],f=n[i];t?Ke.call(o,f)?o[f].push(i):o[f]=[i]:o[f]=i}return o},$n.invoke=co,$n.keys=zo,$n.keysIn=ge,$n.map=Xr,$n.mapValues=function(n,t,r){var e={};return t=yr(t,r,3),ht(n,function(n,r,u){e[r]=t(n,r,u)}),e},$n.matches=function(n){
return wt(ot(n,true))},$n.matchesProperty=function(n,t){return bt(n,ot(t,true))},$n.memoize=ee,$n.merge=Mo,$n.method=Xo,$n.methodOf=Ho,$n.mixin=Ee,$n.negate=function(n){if(typeof n!="function")throw new Be(L);return function(){return!n.apply(this,arguments)}},$n.omit=Do,$n.once=function(n){return te(2,n)},$n.pairs=function(n){for(var t=-1,r=zo(n),e=r.length,u=Ce(e);++t<e;){var o=r[t];u[t]=[o,n[o]]}return u},$n.partial=ko,$n.partialRight=Oo,$n.partition=lo,$n.pick=Po,$n.pluck=function(n,t){return Xr(n,Re(t));
},$n.property=Re,$n.propertyOf=function(n){return function(t){return gt(n,Nr(t),t+"")}},$n.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=dr(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)au.call(t,o,1);return t},$n.pullAt=Gu,$n.range=function(n,t,r){r&&jr(n,t,r)&&(t=r=null),n=+n||0,r=null==r?1:+r||0,null==t?(t=n,n=0):t=+t||0;var e=-1;t=yu(He((t-n)/(r||1)),0);for(var u=Ce(t);++e<t;)u[e]=n,n+=r;return u},$n.rearg=Eo,$n.reject=function(n,t,r){var e=Io(n)?Gn:ct;
return t=yr(t,r,3),e(n,function(n,r,e){return!t(n,r,e)})},$n.remove=function(n,t,r){var e=[];if(!n||!n.length)return e;var u=-1,o=[],i=n.length;for(t=yr(t,r,3);++u<i;)r=n[u],t(r,u,n)&&(e.push(r),o.push(u));return kt(n,o),e},$n.rest=Dr,$n.restParam=ue,$n.set=function(n,t,r){if(null==n)return n;var e=t+"";t=null!=n[e]||kr(t,n)?[e]:Nr(t);for(var e=-1,u=t.length,o=u-1,i=n;null!=i&&++e<u;){var f=t[e];ae(i)&&(e==o?i[f]=r:null==i[f]&&(i[f]=Ar(t[e+1])?[]:{})),i=i[f]}return n},$n.shuffle=Qr,$n.slice=function(n,t,r){
var e=n?n.length:0;return e?(r&&typeof r!="number"&&jr(n,t,r)&&(t=0,r=e),It(n,t,r)):[]},$n.sortBy=function(n,t,r){if(null==n)return[];r&&jr(n,t,r)&&(t=null);var e=-1;return t=yr(t,r,3),n=mt(n,function(n,r,u){return{a:t(n,r,u),b:++e,c:n}}),Ct(n,a)},$n.sortByAll=ho,$n.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&jr(t,r,e)&&(r=null),Io(t)||(t=null==t?[]:[t]),Io(r)||(r=null==r?[]:[r]),St(n,t,r))},$n.spread=function(n){if(typeof n!="function")throw new Be(L);return function(t){return n.apply(this,t);
}},$n.take=function(n,t,r){return n&&n.length?((r?jr(n,t,r):null==t)&&(t=1),It(n,0,0>t?0:t)):[]},$n.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?jr(n,t,r):null==t)&&(t=1),t=e-(+t||0),It(n,0>t?0:t)):[]},$n.takeRightWhile=function(n,t,r){return n&&n.length?Nt(n,yr(t,r,3),false,true):[]},$n.takeWhile=function(n,t,r){return n&&n.length?Nt(n,yr(t,r,3)):[]},$n.tap=function(n,t,r){return t.call(r,n),n},$n.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Be(L);return false===r?e=false:ae(r)&&(e="leading"in r?!!r.leading:e,
u="trailing"in r?!!r.trailing:u),Fn.leading=e,Fn.maxWait=+t,Fn.trailing=u,re(n,t,Fn)},$n.thru=Yr,$n.times=function(n,t,r){if(n=nu(n),1>n||!vu(n))return[];var e=-1,u=Ce(du(n,ku));for(t=Bt(t,r,1);++e<n;)e<ku?u[e]=t(e):t(e);return u},$n.toArray=function(n){var t=n?Pu(n):0;return Er(t)?t?qn(n):[]:ye(n)},$n.toPlainObject=_e,$n.transform=function(n,t,r,e){var u=Io(n)||he(n);return t=yr(t,e,4),null==r&&(u||ae(n)?(e=n.constructor,r=u?Io(n)?new e:[]:Uu(Co(e)&&e.prototype)):r={}),(u?Kn:ht)(n,function(n,e,u){
return t(r,n,e,u)}),r},$n.union=Hu,$n.uniq=Pr,$n.unzip=qr,$n.values=ye,$n.valuesIn=function(n){return Ut(n,ge(n))},$n.where=function(n,t){return Gr(n,wt(t))},$n.without=Qu,$n.wrap=function(n,t){return t=null==t?Oe:t,pr(t,E,null,[n],[])},$n.xor=function(){for(var n=-1,t=arguments.length;++n<t;){var r=arguments[n];if(Io(r)||oe(r))var e=e?ft(e,r).concat(ft(r,e)):r}return e?Tt(e):[]},$n.zip=no,$n.zipObject=Kr,$n.backflow=jo,$n.collect=Xr,$n.compose=jo,$n.each=oo,$n.eachRight=io,$n.extend=Wo,$n.iteratee=je,
$n.methods=ve,$n.object=Kr,$n.select=Gr,$n.tail=Dr,$n.unique=Pr,Ee($n,$n),$n.add=function(n,t){return(+n||0)+(+t||0)},$n.attempt=Jo,$n.camelCase=qo,$n.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},$n.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&jr(n,t,r)?t=false:typeof t=="function"&&(e=r,r=t,t=false),r=typeof r=="function"&&Bt(r,e,1),ot(n,t,r)},$n.cloneDeep=function(n,t,r){return t=typeof t=="function"&&Bt(t,r,1),ot(n,true,t)},$n.deburr=de,$n.endsWith=function(n,t,r){
n=u(n),t+="";var e=n.length;return r=r===w?e:du(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},$n.escape=function(n){return(n=u(n))&&hn.test(n)?n.replace(sn,l):n},$n.escapeRegExp=me,$n.every=Zr,$n.find=eo,$n.findIndex=Yu,$n.findKey=Uo,$n.findLast=uo,$n.findLastIndex=Zu,$n.findLastKey=No,$n.findWhere=function(n,t){return eo(n,wt(t))},$n.first=Br,$n.get=function(n,t,r){return n=null==n?w:gt(n,Nr(t),t+""),n===w?r:n},$n.has=function(n,t){if(null==n)return false;var r=Ke.call(n,t);return r||kr(t)||(t=Nr(t),
n=1==t.length?n:gt(n,It(t,0,-1)),t=Mr(t),r=null!=n&&Ke.call(n,t)),r},$n.identity=Oe,$n.includes=Jr,$n.indexOf=zr,$n.inRange=function(n,t,r){return t=+t||0,"undefined"===typeof r?(r=t,t=0):r=+r||0,n>=du(t,r)&&n<yu(t,r)},$n.isArguments=oe,$n.isArray=Io,$n.isBoolean=function(n){return true===n||false===n||h(n)&&Ye.call(n)==D},$n.isDate=function(n){return h(n)&&Ye.call(n)==P},$n.isElement=ie,$n.isEmpty=function(n){if(null==n)return true;var t=Pu(n);return Er(t)&&(Io(n)||pe(n)||oe(n)||h(n)&&Co(n.splice))?!t:!zo(n).length;
},$n.isEqual=function(n,t,r,e){return r=typeof r=="function"&&Bt(r,e,3),!r&&Ir(n)&&Ir(t)?n===t:(e=r?r(n,t):w,e===w?yt(n,t,r):!!e)},$n.isError=fe,$n.isFinite=Ro,$n.isFunction=Co,$n.isMatch=function(n,t,r,e){var u=zo(t),o=u.length;if(!o)return true;if(null==n)return false;if(r=typeof r=="function"&&Bt(r,e,3),n=Ur(n),!r&&1==o){var i=u[0];if(e=t[i],Ir(e))return e===n[i]&&(e!==w||i in n)}for(var i=Ce(o),f=Ce(o);o--;)e=i[o]=t[u[o]],f[o]=Ir(e);return dt(n,u,i,f,r)},$n.isNaN=function(n){return le(n)&&n!=+n},$n.isNative=ce,
$n.isNull=function(n){return null===n},$n.isNumber=le,$n.isObject=ae,$n.isPlainObject=So,$n.isRegExp=se,$n.isString=pe,$n.isTypedArray=he,$n.isUndefined=function(n){return n===w},$n.kebabCase=Ko,$n.last=Mr,$n.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(typeof r=="number")u=(0>r?yu(e+r,0):du(r||0,e-1))+1;else if(r)return u=$t(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;if(t!==t)return p(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},$n.max=Qo,$n.min=ni,$n.noConflict=function(){
return _._=Ze,this},$n.noop=Ie,$n.now=_o,$n.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&vu(t)?(e=(t-e)/2,t=nu(e),e=He(e),r=cr("",e,r),r.slice(0,t)+n+r):n},$n.padLeft=Vo,$n.padRight=Yo,$n.parseInt=we,$n.random=function(n,t,r){r&&jr(n,t,r)&&(t=r=null);var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=xu(),du(n+r*(t-n+parseFloat("1e-"+((r+"").length-1))),t)):Ot(n,t)},$n.reduce=so,
$n.reduceRight=po,$n.repeat=be,$n.result=function(n,t,r){var e=null==n?w:n[t];return e===w&&(null==n||kr(t,n)||(t=Nr(t),n=1==t.length?n:gt(n,It(t,0,-1)),e=null==n?w:n[Mr(t)]),e=e===w?r:e),Co(e)?e.call(n):e},$n.runInContext=m,$n.size=function(n){var t=n?Pu(n):0;return Er(t)?t:zo(n).length},$n.snakeCase=Zo,$n.some=ne,$n.sortedIndex=Ju,$n.sortedLastIndex=Xu,$n.startCase=Go,$n.startsWith=function(n,t,r){return n=u(n),r=null==r?0:du(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},$n.sum=function(n,t,r){r&&jr(n,t,r)&&(t=null);
var e=yr(),u=null==t;if(e===ut&&u||(u=false,t=e(t,r,3)),u){for(n=Io(n)?n:Tr(n),t=n.length,r=0;t--;)r+=+n[t]||0;n=r}else n=Wt(n,t);return n},$n.template=function(n,t,r){var e=$n.templateSettings;r&&jr(n,t,r)&&(t=r=null),n=u(n),t=tt(Tu({},r||t),e,nt),r=tt(Tu({},t.imports),e.imports,nt);var o,i,f=zo(r),a=Ut(r,f),c=0;r=t.interpolate||Rn;var l="__p+='";r=$e((t.escape||Rn).source+"|"+r.source+"|"+(r===gn?jn:Rn).source+"|"+(t.evaluate||Rn).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";
if(n.replace(r,function(t,r,e,u,f,a){return e||(e=u),l+=n.slice(c,a).replace(Cn,s),r&&(o=true,l+="'+__e("+r+")+'"),f&&(i=true,l+="';"+f+";\n__p+='"),e&&(l+="'+((__t=("+e+"))==null?'':__t)+'"),c=a+t.length,t}),l+="';",(t=t.variable)||(l="with(obj){"+l+"}"),l=(i?l.replace(fn,""):l).replace(an,"$1").replace(cn,"$1;"),l="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(o?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}",
t=Jo(function(){return Te(f,p+"return "+l).apply(w,a)}),t.source=l,fe(t))throw t;return t},$n.trim=xe,$n.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?jr(e,t,r):null==t)?g(n):i(n,t+"")):n},$n.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?jr(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,f(n,t+"")+1):n},$n.trunc=function(n,t,r){r&&jr(n,t,r)&&(t=null);var e=S;if(r=W,null!=t)if(ae(t)){var o="separator"in t?t.separator:o,e="length"in t?+t.length||0:e;r="omission"in t?u(t.omission):r}else e=+t||0;
if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;if(t=n.slice(0,e),null==o)return t+r;if(se(o)){if(n.slice(e).search(o)){var i,f=n.slice(0,e);for(o.global||(o=$e(o.source,(kn.exec(o)||"")+"g")),o.lastIndex=0;n=o.exec(f);)i=n.index;t=t.slice(0,null==i?e:i)}}else n.indexOf(o,e)!=e&&(o=t.lastIndexOf(o),-1<o&&(t=t.slice(0,o)));return t+r},$n.unescape=function(n){return(n=u(n))&&pn.test(n)?n.replace(ln,d):n},$n.uniqueId=function(n){var t=++Ve;return u(n)+t},$n.words=Ae,$n.all=Zr,$n.any=ne,$n.contains=Jr,
$n.detect=eo,$n.foldl=so,$n.foldr=po,$n.head=Br,$n.include=Jr,$n.inject=so,Ee($n,function(){var n={};return ht($n,function(t,r){$n.prototype[r]||(n[r]=t)}),n}(),false),$n.sample=Hr,$n.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return Hr(t,n)}):Hr(this.value())},$n.VERSION=b,Kn("bind bindKey curry curryRight partial partialRight".split(" "),function(n){$n[n].placeholder=$n}),Kn(["dropWhile","filter","map","takeWhile"],function(n,t){var r=t!=$,e=t==N;zn.prototype[n]=function(n,u){
var o=this.__filtered__,i=o&&e?new zn(this):this.clone();return(i.__iteratees__||(i.__iteratees__=[])).push({done:false,count:0,index:0,iteratee:yr(n,u,1),limit:-1,type:t}),i.__filtered__=o||r,i}}),Kn(["drop","take"],function(n,t){var r=n+"While";zn.prototype[n]=function(r){var e=this.__filtered__,u=e&&!t?this.dropWhile():this.clone();return r=null==r?1:yu(nu(r)||0,0),e?t?u.__takeCount__=du(u.__takeCount__,r):Mr(u.__iteratees__).limit=r:(u.__views__||(u.__views__=[])).push({size:r,type:n+(0>u.__dir__?"Right":"")
}),u},zn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()},zn.prototype[n+"RightWhile"]=function(n,t){return this.reverse()[r](n,t).reverse()}}),Kn(["first","last"],function(n,t){var r="take"+(t?"Right":"");zn.prototype[n]=function(){return this[r](1).value()[0]}}),Kn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");zn.prototype[n]=function(){return this[r](1)}}),Kn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?wt:Re;zn.prototype[n]=function(n){return this[r](e(n));
}}),zn.prototype.compact=function(){return this.filter(Oe)},zn.prototype.reject=function(n,t){return n=yr(n,t,1),this.filter(function(t){return!n(t)})},zn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=0>n?this.takeRight(-n):this.drop(n);return t!==w&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r},zn.prototype.toArray=function(){return this.drop(0)},ht(zn.prototype,function(n,t){var r=$n[t];if(r){var e=/^(?:filter|map|reject)|While$/.test(t),u=/^(?:first|last)$/.test(t);$n.prototype[t]=function(){
function t(n){return n=[n],eu.apply(n,o),r.apply($n,n)}var o=arguments,i=this.__chain__,f=this.__wrapped__,a=!!this.__actions__.length,c=f instanceof zn,l=o[0],s=c||Io(f);return s&&e&&typeof l=="function"&&1!=l.length&&(c=s=false),c=c&&!a,u&&!i?c?n.call(f):r.call($n,this.value()):s?(f=n.apply(c?f:new zn(this),o),u||!a&&!f.__actions__||(f.__actions__||(f.__actions__=[])).push({func:Yr,args:[t],thisArg:$n}),new Bn(f,i)):this.thru(t)}}}),Kn("concat join pop push replace shift sort splice split unshift".split(" "),function(n){
var t=(/^(?:replace|split)$/.test(n)?De:ze)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n);$n.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),ht(zn.prototype,function(n,t){var r=$n[t];if(r){var e=r.name;(Su[e]||(Su[e]=[])).push({name:t,func:r})}}),Su[ar(null,A).name]=[{name:"wrapper",func:null}],zn.prototype.clone=function(){var n=this.__actions__,t=this.__iteratees__,r=this.__views__,e=new zn(this.__wrapped__);
return e.__actions__=n?qn(n):null,e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=t?qn(t):null,e.__takeCount__=this.__takeCount__,e.__views__=r?qn(r):null,e},zn.prototype.reverse=function(){if(this.__filtered__){var n=new zn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},zn.prototype.value=function(){var n=this.__wrapped__.value();if(!Io(n))return Ft(n,this.__actions__);var t,r=this.__dir__,e=0>r;t=n.length;for(var u=this.__views__,o=0,i=-1,f=u?u.length:0;++i<f;){
var a=u[i],c=a.size;switch(a.type){case"drop":o+=c;break;case"dropRight":t-=c;break;case"take":t=du(t,o+c);break;case"takeRight":o=yu(o,t-c)}}t={start:o,end:t},u=t.start,o=t.end,t=o-u,u=e?o:u-1,o=du(t,this.__takeCount__),f=(i=this.__iteratees__)?i.length:0,a=0,c=[];n:for(;t--&&a<o;){for(var u=u+r,l=-1,s=n[u];++l<f;){var p=i[l],h=p.iteratee,_=p.type;if(_==N){if(p.done&&(e?u>p.index:u<p.index)&&(p.count=0,p.done=false),p.index=u,!(p.done||(_=p.limit,p.done=-1<_?p.count++>=_:!h(s))))continue n}else if(p=h(s),
_==$)s=p;else if(!p){if(_==F)continue n;break n}}c[a++]=s}return c},$n.prototype.chain=function(){return Vr(this)},$n.prototype.commit=function(){return new Bn(this.value(),this.__chain__)},$n.prototype.plant=function(n){for(var t,r=this;r instanceof Ln;){var e=Fr(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},$n.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof zn?(this.__actions__.length&&(n=new zn(this)),new Bn(n.reverse(),this.__chain__)):this.thru(function(n){
return n.reverse()})},$n.prototype.toString=function(){return this.value()+""},$n.prototype.run=$n.prototype.toJSON=$n.prototype.valueOf=$n.prototype.value=function(){return Ft(this.__wrapped__,this.__actions__)},$n.prototype.collect=$n.prototype.map,$n.prototype.head=$n.prototype.first,$n.prototype.select=$n.prototype.filter,$n.prototype.tail=$n.prototype.rest,$n}var w,b="3.7.0",x=1,A=2,j=4,k=8,O=16,E=32,I=64,R=128,C=256,S=30,W="...",T=150,U=16,N=0,F=1,$=2,L="Expected a function",B="__lodash_placeholder__",z="[object Arguments]",M="[object Array]",D="[object Boolean]",P="[object Date]",q="[object Error]",K="[object Function]",V="[object Number]",Y="[object Object]",Z="[object RegExp]",G="[object String]",J="[object ArrayBuffer]",X="[object Float32Array]",H="[object Float64Array]",Q="[object Int8Array]",nn="[object Int16Array]",tn="[object Int32Array]",rn="[object Uint8Array]",en="[object Uint8ClampedArray]",un="[object Uint16Array]",on="[object Uint32Array]",fn=/\b__p\+='';/g,an=/\b(__p\+=)''\+/g,cn=/(__e\(.*?\)|\b__t\))\+'';/g,ln=/&(?:amp|lt|gt|quot|#39|#96);/g,sn=/[&<>"'`]/g,pn=RegExp(ln.source),hn=RegExp(sn.source),_n=/<%-([\s\S]+?)%>/g,vn=/<%([\s\S]+?)%>/g,gn=/<%=([\s\S]+?)%>/g,yn=/\.|\[(?:[^[\]]+|(["'])(?:(?!\1)[^\n\\]|\\.)*?)\1\]/,dn=/^\w*$/,mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,wn=/[.*+?^${}()|[\]\/\\]/g,bn=RegExp(wn.source),xn=/[\u0300-\u036f\ufe20-\ufe23]/g,An=/\\(\\)?/g,jn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,kn=/\w*$/,On=/^0[xX]/,En=/^\[object .+?Constructor\]$/,In=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Rn=/($^)/,Cn=/['\n\r\u2028\u2029\\]/g,Sn=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),Wn=" \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000",Tn="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout document isFinite parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap window".split(" "),Un={};
Un[X]=Un[H]=Un[Q]=Un[nn]=Un[tn]=Un[rn]=Un[en]=Un[un]=Un[on]=true,Un[z]=Un[M]=Un[J]=Un[D]=Un[P]=Un[q]=Un[K]=Un["[object Map]"]=Un[V]=Un[Y]=Un[Z]=Un["[object Set]"]=Un[G]=Un["[object WeakMap]"]=false;var Nn={};Nn[z]=Nn[M]=Nn[J]=Nn[D]=Nn[P]=Nn[X]=Nn[H]=Nn[Q]=Nn[nn]=Nn[tn]=Nn[V]=Nn[Y]=Nn[Z]=Nn[G]=Nn[rn]=Nn[en]=Nn[un]=Nn[on]=true,Nn[q]=Nn[K]=Nn["[object Map]"]=Nn["[object Set]"]=Nn["[object WeakMap]"]=false;var Fn={leading:false,maxWait:0,trailing:false},$n={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A",
"\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u",
"\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Ln={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},Bn={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},zn={"function":true,object:true},Mn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Dn=zn[typeof exports]&&exports&&!exports.nodeType&&exports,Pn=zn[typeof module]&&module&&!module.nodeType&&module,qn=zn[typeof self]&&self&&self.Object&&self,Kn=zn[typeof window]&&window&&window.Object&&window,Vn=Pn&&Pn.exports===Dn&&Dn,Yn=Dn&&Pn&&typeof global=="object"&&global&&global.Object&&global||Kn!==(this&&this.window)&&Kn||qn||this,Zn=m();
typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Yn._=Zn, define(function(){return Zn})):Dn&&Pn?Vn?(Pn.exports=Zn)._=Zn:Dn._=Zn:Yn._=Zn}).call(this);

12397
lodash.src.js Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,58 +1,29 @@
{
"name": "lodash",
"version": "2.3.0",
"description": "A utility library delivering consistency, customization, performance, & extras.",
"homepage": "http://lodash.com/",
"license": "MIT",
"main": "dist/lodash.js",
"keywords": ["amd", "browser", "client", "customize", "functional", "server", "util"],
"author": "John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
"contributors": [
"John-David Dalton <john.david.dalton@gmail.com> (http://allyoucanleet.com/)",
"Blaine Bublitz <blaine@iceddev.com> (http://www.iceddev.com/)",
"Kit Cambridge <github@kitcambridge.be> (http://kitcambridge.be/)",
"Mathias Bynens <mathias@qiwi.be> (http://mathiasbynens.be/)"
],
"bugs": "https://github.com/lodash/lodash/issues",
"repository": { "type": "git", "url": "https://github.com/lodash/lodash.git" },
"engines": ["node", "rhino"],
"files": [
"LICENSE.txt",
"lodash.js",
"dist/lodash.js",
"dist/lodash.min.js",
"dist/lodash.compat.js",
"dist/lodash.compat.min.js",
"dist/lodash.underscore.js",
"dist/lodash.underscore.min.js"
],
"jam": {
"main": "dist/lodash.compat.js",
"include": [
"LICENSE.txt",
"dist/lodash.js",
"dist/lodash.min.js",
"dist/lodash.compat.js",
"dist/lodash.compat.min.js",
"dist/lodash.underscore.js",
"dist/lodash.underscore.min.js"
]
"version": "3.7.0",
"main": "lodash.src.js",
"private": true,
"devDependencies": {
"curl-amd": "0.8.12",
"dojo": "~1.10.0",
"jquery": "~1.11.0",
"platform": "~1.3.0",
"qunit-extras": "~1.4.0",
"qunitjs": "~1.17.0",
"requirejs": "~2.1.0"
},
"volo": {
"type": "directory",
"ignore": [
".*",
"*.custom.*",
"*.min.*",
"*.template.*",
"*.log",
"*.map",
"*.md",
"lodash.js",
"index.js",
"lodash.src.js",
"bower.json",
"component.json",
"doc",
"modularize",
"node_modules",
"perf",
"test",

View File

@@ -1,16 +1,16 @@
;(function(window) {
'use strict';
/** The base path of the builds */
/** The base path of the lodash builds. */
var basePath = '../';
/** The Lo-Dash build to load */
/** The lodash build to load. */
var build = (build = /build=([^&]+)/.exec(location.search)) && decodeURIComponent(build[1]);
/** The other library to load */
/** The other library to load. */
var other = (other = /other=([^&]+)/.exec(location.search)) && decodeURIComponent(other[1]);
/** The `ui` object */
/** The `ui` object. */
var ui = {};
/*--------------------------------------------------------------------------*/
@@ -34,7 +34,7 @@
/*--------------------------------------------------------------------------*/
// initialize controls
// Initialize controls.
addListener(window, 'load', function() {
function eventHandler(event) {
var buildIndex = buildList.selectedIndex,
@@ -58,13 +58,10 @@
span1.innerHTML =
'<label for="perf-build">Build: </label>' +
'<select id="perf-build">' +
'<option value="lodash-compat">Lo-Dash (compat)</option>' +
'<option value="lodash-legacy">Lo-Dash (legacy)</option>' +
'<option value="lodash-mobile">Lo-Dash (mobile)</option>' +
'<option value="lodash-modern">Lo-Dash (modern)</option>' +
'<option value="lodash-underscore">Lo-Dash (underscore)</option>' +
'<option value="lodash-custom-dev">Lo-Dash (custom development)</option>' +
'<option value="lodash-custom">Lo-Dash (custom production)</option>' +
'<option value="lodash-compat">lodash (compat)</option>' +
'<option value="lodash-modern">lodash (modern)</option>' +
'<option value="lodash-custom-dev">lodash (custom development)</option>' +
'<option value="lodash-custom">lodash (custom production)</option>' +
'</select>';
var span2 = document.createElement('span');
@@ -74,13 +71,10 @@
'<select id="perf-other">' +
'<option value="underscore-dev">Underscore (development)</option>' +
'<option value="underscore">Underscore (production)</option>' +
'<option value="lodash-compat">Lo-Dash (compat)</option>' +
'<option value="lodash-legacy">Lo-Dash (legacy)</option>' +
'<option value="lodash-mobile">Lo-Dash (mobile)</option>' +
'<option value="lodash-modern">Lo-Dash (modern)</option>' +
'<option value="lodash-underscore">Lo-Dash (underscore)</option>' +
'<option value="lodash-custom-dev">Lo-Dash (custom development)</option>' +
'<option value="lodash-custom">Lo-Dash (custom production)</option>' +
'<option value="lodash-compat">lodash (compat)</option>' +
'<option value="lodash-modern">lodash (modern)</option>' +
'<option value="lodash-custom-dev">lodash (custom development)</option>' +
'<option value="lodash-custom">lodash (custom production)</option>' +
'</select>';
var buildList = span1.lastChild,
@@ -93,13 +87,10 @@
buildList.selectedIndex = (function() {
switch (build) {
case 'lodash-compat': return 0;
case 'lodash-legacy': return 1;
case 'lodash-mobile': return 2;
case 'lodash-underscore': return 4;
case 'lodash-custom-dev': return 5;
case 'lodash-custom': return 6;
case 'lodash-custom-dev': return 2;
case 'lodash-custom': return 3;
case 'lodash-modern':
case null: return 3;
case null: return 1;
}
return -1;
}());
@@ -108,12 +99,9 @@
switch (other) {
case 'underscore-dev': return 0;
case 'lodash-compat': return 2;
case 'lodash-legacy': return 3;
case 'lodash-mobile': return 4;
case 'lodash-modern': return 5;
case 'lodash-underscore': return 6;
case 'lodash-custom-dev': return 7;
case 'lodash-custom': return 8;
case 'lodash-modern': return 3;
case 'lodash-custom-dev': return 4;
case 'lodash-custom': return 5;
case 'underscore':
case null: return 1;
}
@@ -124,49 +112,38 @@
addListener(otherList, 'change', eventHandler);
});
// expose Lo-Dash build file path
// The lodash build file path.
ui.buildPath = (function() {
var result;
switch (build) {
case 'lodash-compat': result = 'dist/lodash.compat.min.js'; break;
case 'lodash-legacy': result = 'dist/lodash.legacy.min.js'; break;
case 'lodash-mobile': result = 'dist/lodash.mobile.min.js'; break;
case 'lodash-underscore': result = 'dist/lodash.underscore.min.js'; break;
case 'lodash-compat': result = 'lodash.compat.min.js'; break;
case 'lodash-custom-dev': result = 'lodash.custom.js'; break;
case 'lodash-custom': result = 'lodash.custom.min.js'; break;
case null: build = 'lodash-modern';
case 'lodash-modern': result = 'dist/lodash.min.js'; break;
case null: build = 'lodash-modern';
case 'lodash-modern': result = 'lodash.min.js'; break;
default: return build;
}
return basePath + result;
}());
// expose other library file path
// The other library file path.
ui.otherPath = (function() {
var result;
switch (other) {
case 'lodash-compat': result = 'dist/lodash.compat.min.js'; break;
case 'lodash-legacy': result = 'dist/lodash.legacy.min.js'; break;
case 'lodash-mobile': result = 'dist/lodash.mobile.min.js'; break;
case 'lodash-modern': result = 'dist/lodash.min.js'; break;
case 'lodash-underscore': result = 'dist/lodash.underscore.min.js'; break;
case 'lodash-compat': result = 'lodash.compat.min.js'; break;
case 'lodash-modern': result = 'lodash.min.js'; break;
case 'lodash-custom-dev': result = 'lodash.custom.js'; break;
case 'lodash-custom': result = 'lodash.custom.min.js'; break;
case 'underscore-dev': result = 'vendor/underscore/underscore.js'; break;
case null: other = 'underscore';
case null: other = 'underscore';
case 'underscore': result = 'vendor/underscore/underscore-min.js'; break;
default: return other;
}
return basePath + result;
}());
// expose `ui.urlParams` properties
ui.urlParams = {
'build': build,
'other': other
};
ui.urlParams = { 'build': build, 'other': other };
// expose `ui`
window.ui = ui;
}(this));

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>Lo-Dash Performance Suite</title>
<title>lodash Performance Suite</title>
<style>
html, body {
margin: 0;
@@ -28,8 +28,8 @@
</head>
<body>
<div id="perf-toolbar"></div>
<script src="../vendor/platform.js/platform.js"></script>
<script src="../lodash.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="../lodash.src.js"></script>
<script src="../vendor/benchmark.js/benchmark.js"></script>
<script src="../vendor/firebug-lite/src/firebug-lite-debug.js"></script>
<script src="./asset/perf-ui.js"></script>
@@ -69,8 +69,8 @@
// is the applet permitted?
if (!/[?&]nojava=true(?:&|$)/.test(location.search)) {
// is the applet really needed?
while (!(measured = new Date - begin)) { }
if (measured != 1 && !((perfNow = window.performance) && typeof (perfNow.now || perfNow.webkitNow) == 'function')) {
while (!(measured = new Date - begin)) {}
if (measured > 1 && !((perfNow = window.performance) && typeof (perfNow.now || perfNow.webkitNow) == 'function')) {
// load applet
document.write('<applet code="nano" archive="../vendor/benchmark.js/nano.jar"></applet>');
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +1,12 @@
cd "$(dirname "$0")"
echo "Running performance suite in node..."
node perf.js ../dist/lodash.js && node perf.js ../dist/lodash.min.js
node perf.js ../lodash.js && node perf.js ../lodash.min.js
for cmd in rhino "rhino -require" narwhal ringo phantomjs; do
echo ""
echo "Running performance suite in $cmd..."
$cmd perf.js ../dist/lodash.compat.js && $cmd perf.js ../dist/lodash.compat.min.js
$cmd perf.js ../lodash.src.js
done
echo ""

157
test/asset/set.js Normal file
View File

@@ -0,0 +1,157 @@
;(function() {
/** Used to determine if values are of the language type Object. */
var objectTypes = {
'function': true,
'object': true
};
/** Used as the `Set#toString` return value. */
var nativeString = String(Object.prototype.toString).replace(/toString/g, 'Set');
/** Detect free variable `exports`. */
var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
/** Detect free variable `global` from Node.js. */
var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;
/** Detect free variable `self`. */
var freeSelf = objectTypes[typeof self] && self && self.Object && self;
/** Detect free variable `window`. */
var freeWindow = objectTypes[typeof window] && window && window.Object && window;
/**
* Used as a reference to the global object.
*
* The `this` value is used if it is the global object to avoid Greasemonkey's
* restricted `window` object, otherwise the `window` object is used.
*/
var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;
/*--------------------------------------------------------------------------*/
/**
* Installs `Set` on the given `context` object.
*
* @memberOf exports
* @param {Object} context The context object.
*/
function runInContext(context) {
/**
* Creates a `Set` object.
*/
function Set() {
this.__cache__ = {};
}
/**
* Gets the index at which the first occurrence of `value` is found using
* strict equality for comparisons, i.e. `===`.
*
* @private
* @param {Array} array The array to search.
* @param {*} value The value to search for.
* @returns {number} Returns the index of the matched value or `-1`.
*/
function indexOf(array, value) {
var index = -1,
length = array.length;
while (++index < length) {
if (array[index] === value) {
return index;
}
}
return -1;
}
/**
* Checks if `value` is in the set.
*
* @memberOf Set
* @param {*} value The value to search for.
* @returns {boolean} Returns `true` if `value` is found, else `false`.
*/
function has(value) {
var type = typeof value,
cache = this.__cache__;
if (type == 'boolean' || value == null) {
return cache[value] || false;
}
if (type != 'number' && type != 'string') {
type = 'object';
}
var key = type == 'number' ? value : '_' + value;
cache = (cache = cache[type]) && cache[key];
return type == 'object'
? (cache && indexOf(cache, value) > -1 ? true : false)
: (cache || false);
}
/**
* Adds `value` to the set.
*
* @memberOf Set
* @param {*} value The value to add.
*/
function add(value) {
var cache = this.__cache__,
type = typeof value;
if (type == 'boolean' || value == null) {
cache[value] = true;
} else {
if (type != 'number' && type != 'string') {
type = 'object';
}
var key = type == 'number' ? value : '_' + value,
typeCache = cache[type] || (cache[type] = {});
if (type == 'object') {
var array = typeCache[key];
if (array) {
array.push(value);
} else {
typeCache[key] = [value];
}
} else {
typeCache[key] = true;
}
}
}
/**
* Produces the `toString` result of `Set`.
*
* @static
* @memberOf Set
* @returns {string} Returns the string result.
*/
function toString() {
return nativeString;
}
Set.toString = toString;
Set.prototype.add = add;
Set.prototype.has = has;
if (!root.Set) {
context.Set = Set;
}
}
/*--------------------------------------------------------------------------*/
if (freeExports) {
freeExports.runInContext = runInContext;
} else {
runInContext(root);
}
}.call(this));

View File

@@ -1,16 +1,16 @@
;(function(window) {
'use strict';
/** The base path of the builds */
/** The base path of the lodash builds. */
var basePath = '../';
/** The Lo-Dash build to load */
/** The lodash build to load. */
var build = (build = /build=([^&]+)/.exec(location.search)) && decodeURIComponent(build[1]);
/** The module loader to use */
/** The module loader to use. */
var loader = (loader = /loader=([^&]+)/.exec(location.search)) && decodeURIComponent(loader[1]);
/** The `ui` object */
/** The `ui` object. */
var ui = {};
/*--------------------------------------------------------------------------*/
@@ -34,7 +34,7 @@
/*--------------------------------------------------------------------------*/
// initialize controls
// Initialize controls.
addListener(window, 'load', function() {
function eventHandler(event) {
var buildIndex = buildList.selectedIndex,
@@ -55,43 +55,39 @@
function init() {
var toolbar = document.getElementById('qunit-testrunner-toolbar');
if (toolbar) {
toolbar.appendChild(span1);
toolbar.appendChild(span2);
buildList.selectedIndex = (function() {
switch (build) {
case 'lodash-compat': return 1;
case 'lodash-modern-dev': return 2;
case 'lodash-modern': return 3;
case 'lodash-legacy': return 4;
case 'lodash-mobile': return 5;
case 'lodash-underscore': return 6;
case 'lodash-custom-dev': return 7;
case 'lodash-custom': return 8;
case 'lodash-compat-dev':
case null: return 0;
}
return -1;
}());
loaderList.selectedIndex = (function() {
switch (loader) {
case 'curl': return 1;
case 'dojo': return 2;
case 'requirejs': return 3;
case 'none':
case null: return 0;
}
return -1;
}());
addListener(buildList, 'change', eventHandler);
addListener(loaderList, 'change', eventHandler);
}
else {
if (!toolbar) {
setTimeout(init, 15);
return;
}
toolbar.appendChild(span1);
toolbar.appendChild(span2);
buildList.selectedIndex = (function() {
switch (build) {
case 'lodash-compat': return 1;
case 'lodash-modern-dev': return 2;
case 'lodash-modern': return 3;
case 'lodash-custom-dev': return 4;
case 'lodash-custom': return 5;
case 'lodash-compat-dev':
case null: return 0;
}
return -1;
}());
loaderList.selectedIndex = (function() {
switch (loader) {
case 'curl': return 1;
case 'dojo': return 2;
case 'requirejs': return 3;
case 'none':
case null: return 0;
}
return -1;
}());
addListener(buildList, 'change', eventHandler);
addListener(loaderList, 'change', eventHandler);
}
var span1 = document.createElement('span');
@@ -99,15 +95,12 @@
span1.innerHTML =
'<label for="qunit-build">Build: </label>' +
'<select id="qunit-build">' +
'<option value="lodash-compat-dev">Lo-Dash (compat development)</option>' +
'<option value="lodash-compat">Lo-Dash (compat production)</option>' +
'<option value="lodash-modern-dev">Lo-Dash (modern development)</option>' +
'<option value="lodash-modern">Lo-Dash (modern production)</option>' +
'<option value="lodash-legacy">Lo-Dash (legacy)</option>' +
'<option value="lodash-mobile">Lo-Dash (mobile)</option>' +
'<option value="lodash-underscore">Lo-Dash (underscore)</option>' +
'<option value="lodash-custom-dev">Lo-Dash (custom development)</option>' +
'<option value="lodash-custom">Lo-Dash (custom production)</option>' +
'<option value="lodash-compat-dev">lodash (compat development)</option>' +
'<option value="lodash-compat">lodash (compat production)</option>' +
'<option value="lodash-modern-dev">lodash (modern development)</option>' +
'<option value="lodash-modern">lodash (modern production)</option>' +
'<option value="lodash-custom-dev">lodash (custom development)</option>' +
'<option value="lodash-custom">lodash (custom production)</option>' +
'</select>';
var span2 = document.createElement('span');
@@ -124,51 +117,57 @@
var buildList = span1.lastChild,
loaderList = span2.lastChild;
setTimeout(function() {
ui.timing.loadEventEnd = +new Date;
}, 1);
init();
});
// expose Lo-Dash build file path
// Used to indicate testing a foreign file.
ui.isForeign = RegExp('^(\\w+:)?//').test(build);
// Used to indicate testing a modularized build.
ui.isModularize = /\b(?:amd|commonjs|es6?|node|npm|(index|main)\.js)\b/.test([location.pathname, location.search]);
// Used to indicate testing in Sauce Labs' automated test cloud.
ui.isSauceLabs = location.port == '9001';
// Used to indicate that lodash is in strict mode.
ui.isStrict = /\bes6?\b/.test([location.pathname, location.search]);
// The lodash build file path.
ui.buildPath = (function() {
var result;
switch (build) {
case 'lodash-compat': result = 'dist/lodash.compat.min.js'; break;
case 'lodash-modern-dev': result = 'dist/lodash.js'; break;
case 'lodash-modern': result = 'dist/lodash.min.js'; break;
case 'lodash-legacy': result = 'dist/lodash.legacy.min.js'; break;
case 'lodash-mobile': result = 'dist/lodash.mobile.min.js'; break;
case 'lodash-underscore': result = 'dist/lodash.underscore.min.js'; break;
case 'lodash-compat': result = 'lodash.compat.min.js'; break;
case 'lodash-modern-dev': result = 'lodash.js'; break;
case 'lodash-modern': result = 'lodash.min.js'; break;
case 'lodash-custom-dev': result = 'lodash.custom.js'; break;
case 'lodash-custom': result = 'lodash.custom.min.js'; break;
case null: build = 'lodash-compat-dev';
case 'lodash-compat-dev': result = 'lodash.js'; break;
case null: build = 'lodash-compat-dev';
case 'lodash-compat-dev': result = 'lodash.src.js'; break;
default: return build;
}
return basePath + result;
}());
// expose module loader file path
// The module loader file path.
ui.loaderPath = (function() {
var result;
switch (loader) {
case 'curl': result = 'vendor/curl/dist/curl-kitchen-sink/curl.js'; break;
case 'dojo': result = 'vendor/dojo/dojo.js'; break;
case 'requirejs': result = 'vendor/requirejs/require.js'; break;
case 'curl': result = 'node_modules/curl-amd/dist/curl-kitchen-sink/curl.js'; break;
case 'dojo': result = 'node_modules/dojo/dojo.js'; break;
case 'requirejs': result = 'node_modules/requirejs/require.js'; break;
case null: loader = 'none'; return '';
default: return loader;
}
return basePath + result;
}());
// expose `ui.urlParams` properties
ui.urlParams = {
'build': build,
'loader': loader
};
ui.urlParams = { 'build': build, 'loader': loader };
ui.timing = { 'loadEventEnd': 0 };
// used to indicate testing a modularized build
ui.isModularize = /\b(?:commonjs|(index|main)\.js|lodash-(?:amd|node)|modularize|npm)\b/.test([location.pathname, location.search, ui.buildPath]);
// expose `ui`
window.ui = ui;
}(this));

102
test/asset/weakmap.js Normal file
View File

@@ -0,0 +1,102 @@
;(function() {
/** Used to determine if values are of the language type Object. */
var objectTypes = {
'function': true,
'object': true
};
/** Used as the `WeakMap#toString` return value. */
var nativeString = String(Object.prototype.toString).replace(/toString/g, 'WeakMap');
/** Detect free variable `exports`. */
var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
/** Detect free variable `module`. */
var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;
/** Detect free variable `global` from Node.js. */
var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;
/** Detect free variable `self`. */
var freeSelf = objectTypes[typeof self] && self && self.Object && self;
/** Detect free variable `window`. */
var freeWindow = objectTypes[typeof window] && window && window.Object && window;
/**
* Used as a reference to the global object.
*
* The `this` value is used if it is the global object to avoid Greasemonkey's
* restricted `window` object, otherwise the `window` object is used.
*/
var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || freeSelf || this;
/*--------------------------------------------------------------------------*/
/**
* Installs `WeakMap` on the given `context` object.
*
* @memberOf exports
* @param {Object} context The context object.
*/
function runInContext(context) {
/**
* Creates a `WeakMap` object.
*/
function WeakMap() {
// No operation performed.
}
/**
* Gets the value associated with the given key.
*
* @memberOf WeakMap
* @param {Object} key The key object.
* @returns {*} Returns the associated value, else `undefined`.
*/
function get(key) {
return key.__weakmap__;
}
/**
* Sets a value for the given key.
*
* @memberOf WeakMap
* @param {Object} key The key object.
* @param {*} value The value to set.
*/
function set(key, value) {
key.__weakmap__ = value;
return this;
}
/**
* Produces the `toString` result of `WeakMap`.
*
* @static
* @memberOf WeakMap
* @returns {string} Returns the string result.
*/
function toString() {
return nativeString;
}
WeakMap.toString = toString;
WeakMap.prototype.get = get;
WeakMap.prototype.set = set;
if (!root.WeakMap) {
context.WeakMap = WeakMap;
}
}
/*--------------------------------------------------------------------------*/
if (freeExports) {
freeExports.runInContext = runInContext;
} else {
runInContext(root);
}
}.call(this));

View File

@@ -1,6 +1,12 @@
self.console || (self.console = { 'log': function() {} });
addEventListener('message', function(e) {
if (e.data) {
importScripts('../' + e.data);
try {
importScripts('../' + e.data);
} catch(e) {
self._ = { 'VERSION': e.message };
}
postMessage(_.VERSION);
}
}, false);

View File

@@ -3,112 +3,139 @@
<head>
<meta charset="utf-8">
<title>Backbone Test Suite</title>
<link rel="stylesheet" href="../vendor/qunit/qunit/qunit.css">
<style>
body > #qunit-header {
display: none;
}
</style>
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
</head>
<body>
<div id="qunit"></div>
<h1 id="qunit-header"></h1>
<div id="qunit-fixture">
<div id='testElement'>
<h1>Test</h1>
</div>
</div>
<script src="../vendor/json-js/json2.js"></script>
<script src="../vendor/jquery/jquery.js"></script>
<script src="../vendor/platform.js/platform.js"></script>
<script src="../vendor/qunit/qunit/qunit.js"></script>
<script src="./asset/test-ui.js"></script>
<script src="../lodash.js"></script>
<script>
var lodash = _.noConflict();
QUnit.config.hidepassed = true;
// assign results to `global_test_results` for Sauce Labs
var global_test_results;
QUnit.done(function(results) {
global_test_results = results;
});
// skip tests we intentionally fail or those with problems
(function() {
var skipped = {
'Backbone.Collection': {
'set with many models does not overflow the stack': true
},
'Backbone.Router': {
'#2656 - No trailing slash on root.': true,
'#2765 - Fragment matching sans query/hash.': true
// avoid reporting tests to Sauce Labs when script errors occur
if (location.port == '9001') {
window.onerror = function(message) {
if (window.QUnit) {
QUnit.config.done.length = 0;
}
global_test_results = { 'message': message };
};
}
</script>
<script src="../node_modules/qunitjs/qunit/qunit.js"></script>
<script src="../node_modules/qunit-extras/qunit-extras.js"></script>
<script src="../vendor/json-js/json2.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="./asset/test-ui.js"></script>
<script src="../lodash.src.js"></script>
<script>
var mixinPrereqs = (function() {
var lodash = _.noConflict();
return function(_) {
_.mixin({
'debounce': _.debounce || lodash.debounce,
'defer': _.defer || lodash.defer,
'pluck': _.pluck || lodash.pluck
});
};
// only skip `Backbone.Router` tests in IE < 8
if (!(document.attachEvent && (document.documentMode || 0) < 8)) {
delete skipped['Backbone.Router'];
}
QUnit.testStart(function(details) {
var test = QUnit.config.current,
finish = test.finish,
skippedTests = skipped[details.module],
skippedAsserts = skippedTests && skippedTests[details.name];
if (!skippedAsserts) {
return;
}
if (skippedAsserts === true) {
test.async = false;
test.callback = function() {};
test.expected = 0;
return;
}
test.finish = function() {
var index = -1,
asserts = this.assertions,
length = asserts.length;
while (++index < length) {
var assert = asserts[index],
message = _.unescape(_.result(/^<span class='test-message'>([\s\S]*?)<\/span>/.exec(assert.message), 1)),
died = _.result(/^Died on test #\d+/.exec(message), 0),
expected = _.unescape(_.result(/Expected: *<\/th><td><pre>([\s\S]*?)<\/pre>/.exec(assert.message), 1));
if ((message && _.contains(skippedAsserts, message)) ||
(died && _.contains(skippedAsserts, died)) ||
(expected && (_.contains(skippedAsserts, expected) ||
_.contains(skippedAsserts, expected.replace(/\s+/g, '')))
)) {
assert.result = true;
}
}
finish.call(this);
};
});
}());
// load Lo-Dash again to overwrite the existing `_` value
document.write('<script src="' + ui.buildPath + '"><\/script>');
QUnit.config.asyncRetries = 10;
QUnit.config.hidepassed = true;
// load lodash
if (!ui.isModularize) {
document.write('<script src="' + ui.buildPath + '"><\/script>');
}
// load test scripts
document.write(ui.urlParams.loader != 'none'
? '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
: ([
'<script src="' + ui.buildPath + '"><\/script>',
'<script src="../node_modules/jquery/dist/jquery.js"><\/script>',
'<script src="../vendor/backbone/backbone.js"><\/script>',
'<script src="../vendor/backbone/test/environment.js"><\/script>',
'<script src="../vendor/backbone/test/noconflict.js"><\/script>',
'<script src="../vendor/backbone/test/events.js"><\/script>',
'<script src="../vendor/backbone/test/model.js"><\/script>',
'<script src="../vendor/backbone/test/collection.js"><\/script>',
'<script src="../vendor/backbone/test/router.js"><\/script>',
'<script src="../vendor/backbone/test/view.js"><\/script>',
'<script src="../vendor/backbone/test/sync.js"><\/script>'
].join('\n'))
);
</script>
<script>
_.mixin({
'debounce': _.debounce || lodash.debounce,
'defer': _.defer || lodash.defer,
'pluck': _.pluck || lodash.pluck
});
(function() {
if (window.curl) {
curl.config({ 'apiName': 'require' });
}
if (!window.require) {
mixinPrereqs(_);
return;
}
var reBasename = /[\w.-]+$/,
basePath = ('//' + location.host + location.pathname.replace(reBasename, '')).replace(/\btest\/$/, ''),
modulePath = ui.buildPath.replace(/\.js$/, ''),
locationPath = modulePath.replace(reBasename, '').replace(/^\/|\/$/g, ''),
moduleMain = modulePath.match(reBasename)[0],
uid = +new Date;
function getConfig() {
var result = {
'baseUrl': './',
'urlArgs': 't=' + uid++,
'waitSeconds': 0,
'paths': {
'backbone': '../vendor/backbone/backbone',
'jquery': '../node_modules/jquery/dist/jquery'
},
'packages': [{
'name': 'test',
'location': '../vendor/backbone/test',
'config': {
// work around no global being exported
'exports': 'QUnit',
'loader': 'curl/loader/legacy'
}
}]
};
if (ui.isModularize) {
result.packages.push({
'name': 'underscore',
'location': locationPath,
'main': moduleMain
});
} else {
result.paths.underscore = modulePath;
}
return result;
}
QUnit.config.autostart = false;
require(getConfig(), ['underscore', 'backbone'], function(lodash) {
mixinPrereqs(lodash);
if (ui.isModularize) {
window._ = lodash;
}
require(getConfig(), [
'test/environment',
'test/noconflict',
'test/events',
'test/model',
'test/collection',
'test/router',
'test/view',
'test/sync'
], function() {
QUnit.start();
});
});
}());
</script>
<script src="../vendor/backbone/backbone.js"></script>
<script src="../vendor/backbone/test/environment.js"></script>
<script src="../vendor/backbone/test/noconflict.js"></script>
<script src="../vendor/backbone/test/events.js"></script>
<script src="../vendor/backbone/test/model.js"></script>
<script src="../vendor/backbone/test/collection.js"></script>
<script src="../vendor/backbone/test/router.js"></script>
<script src="../vendor/backbone/test/view.js"></script>
<script src="../vendor/backbone/test/sync.js"></script>
</body>
</html>

View File

@@ -2,8 +2,8 @@
<html lang="en">
<head>
<meta charset="utf-8">
<title>Lo-Dash Test Suite</title>
<link rel="stylesheet" href="../vendor/qunit/qunit/qunit.css">
<title>lodash Test Suite</title>
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
<style>
#exports {
display: none;
@@ -11,81 +11,273 @@
</style>
</head>
<body>
<script src="../vendor/qunit/qunit/qunit.js"></script>
<script src="../vendor/platform.js/platform.js"></script>
<script>
// avoid reporting tests to Sauce Labs when script errors occur
if (location.port == '9001') {
window.onerror = function(message) {
if (window.QUnit) {
QUnit.config.done.length = 0;
}
global_test_results = { 'message': message };
};
}
</script>
<script src="../node_modules/qunitjs/qunit/qunit.js"></script>
<script src="../node_modules/qunit-extras/qunit-extras.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="./asset/set.js"></script>
<script src="./asset/weakmap.js"></script>
<script src="./asset/test-ui.js"></script>
<div id="qunit"></div>
<div id="exports"></div>
<script>
// set bad shims
Array._isArray = Array.isArray;
Array.isArray = function() { return false; };
var setProperty = (function() {
var _defineProperty = Object.defineProperty;
return function(object, key, value) {
try {
_defineProperty(object, key, {
'configurable': true,
'enumerable': false,
'writable': true,
'value': value
});
} catch(e) {
object[key] = value;
}
};
}());
Function.prototype._bind = Function.prototype.bind;
Function.prototype.bind = function() { return function() {}; };
function addBizarroMethods() {
var funcProto = Function.prototype,
objectProto = Object.prototype,
stringProto = String.prototype;
Object._create = Object.create;
Object.create = function() {};
var hasOwnProperty = objectProto.hasOwnProperty,
fnToString = funcProto.toString,
nativeString = fnToString.call(objectProto.toString),
noop = function() {},
parseInt = window.parseInt,
propertyIsEnumerable = objectProto.propertyIsEnumerable,
reToString = /toString/g,
whitespace = ' \t\x0B\f\xA0\ufeff\n\r\u2028\u2029\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000';
Object._defineProperty = Object.defineProperty;
Object.defineProperty = function() {};
function constant(value) {
return function() {
return value;
};
}
function createToString(funcName) {
return constant(nativeString.replace(reToString, funcName));
}
// allow bypassing native checks
setProperty(funcProto, 'toString', (function() {
function wrapper() {
setProperty(funcProto, 'toString', fnToString);
var result = hasOwnProperty.call(this, 'toString') ? this.toString() : fnToString.call(this);
setProperty(funcProto, 'toString', wrapper);
return result;
}
return wrapper;
}()));
Object._keys = Object.keys;
Object.keys = function() { return []; };
// add extensions
funcProto._method = noop;
// load Lo-Dash and expose it to the bad `Object.keys` shim
document.write('<script src="' + (ui.isModularize ? '../lodash.js' : ui.buildPath) + '"><\/script>');
// set bad shims
setProperty(Array, '_isArray', Array.isArray);
setProperty(Array, 'isArray', noop);
setProperty(Date, '_now', Date.now);
setProperty(Date, 'now', noop);
setProperty(Object, '_getOwnPropertySymbols', Object.getOwnPropertySymbols);
setProperty(Object, 'getOwnPropertySymbols', (function() {
function getOwnPropertySymbols() {
return [];
}
setProperty(getOwnPropertySymbols, 'toString', createToString('getOwnPropertySymbols'));
return getOwnPropertySymbols;
}()));
setProperty(Object, '_getPrototypeOf', Object.getPrototypeOf);
setProperty(Object, 'getPrototypeOf', noop);
setProperty(Object, '_keys', Object.keys);
setProperty(Object, 'keys', noop);
setProperty(objectProto, '_propertyIsEnumerable', propertyIsEnumerable);
setProperty(objectProto, 'propertyIsEnumerable', function(key) {
if (key == '1' && this && typeof this == 'object' &&
hasOwnProperty.call(this, 'callee') &&
!propertyIsEnumerable.call(this, 'callee') &&
this.length === 2 && this[0] === 1 && this[1] === 0) {
throw new Error;
}
return propertyIsEnumerable.call(this, key);
});
setProperty(Number, '_isFinite', Number.isFinite);
setProperty(Number, 'isFinite', noop);
setProperty(window, '_ArrayBuffer', window.ArrayBuffer);
if (window.ArrayBuffer && window.Uint8Array) {
ArrayBuffer = (function(_ArrayBuffer) {
function ArrayBuffer(byteLength) {
var buffer = new _ArrayBuffer(byteLength);
if (!byteLength) {
setProperty(buffer, 'slice', buffer.slice ? null : bufferSlice);
}
return buffer;
}
function bufferSlice() {
var newBuffer = new _ArrayBuffer(this.byteLength),
view = new Uint8Array(newBuffer);
view.set(new Uint8Array(this));
return newBuffer;
}
setProperty(ArrayBuffer, 'toString', createToString('ArrayBuffer'));
setProperty(bufferSlice, 'toString', createToString('slice'));
return ArrayBuffer;
}(_ArrayBuffer));
}
if (!window.Float64Array && window.Uint8Array) {
Float64Array = (function() {
function Float64Array(buffer, byteOffset, length) {
return arguments.length == 1
? new Uint8Array(buffer)
: new Uint8Array(buffer, byteOffset || 0, length || buffer.byteLength);
}
setProperty(Float64Array, 'BYTES_PER_ELEMENT', 8);
setProperty(Float64Array, 'toString', createToString('Float64Array'));
return Float64Array;
}());
}
setProperty(window, '_Set', window.Set);
setProperty(window, 'Set', noop);
setProperty(window, '_WeakMap', window.WeakMap);
setProperty(window, 'WeakMap', noop);
setProperty(window, '_parseInt', parseInt);
setProperty(window, 'parseInt', (function() {
var checkStr = whitespace + '08',
isFaked = parseInt(checkStr) != 8,
reHexPrefix = /^0[xX]/,
reTrim = RegExp('^[' + whitespace + ']+|[' + whitespace + ']+$');
return function(value, radix) {
if (value == checkStr && !isFaked) {
isFaked = true;
return 0;
}
value = String(value == null ? '' : value).replace(reTrim, '');
return parseInt(value, +radix || (reHexPrefix.test(value) ? 16 : 10));
};
}()));
// fake lack of DOM support
setProperty(document, '_createDocumentFragment', document.createDocumentFragment);
document.createDocumentFragment = noop;
// fake `WinRTError`
setProperty(window, 'WinRTError', Error);
// fake free variable `global`
setProperty(window, 'exports', window);
setProperty(window, 'global', window);
setProperty(window, 'module', {});
}
function removeBizarroMethods() {
var funcProto = Function.prototype,
objectProto = Object.prototype,
stringProto = String.prototype;
if (Array._isArray) {
setProperty(Array, 'isArray', Array._isArray);
} else {
delete Array.isArray;
}
if (Date._now) {
setProperty(Date, 'now', Date._now);
} else {
delete Date.now;
}
if (Object._getOwnPropertySymbols) {
setProperty(Object, 'getOwnPropertySymbols', Object._getOwnPropertySymbols);
} else {
delete Object.getOwnPropertySymbols;
}
if (Object._getPrototypeOf) {
setProperty(Object, 'getPrototypeOf', Object._getPrototypeOf);
} else {
delete Object.getPrototypeOf;
}
if (Object._keys) {
setProperty(Object, 'keys', Object._keys);
} else {
delete Object.keys;
}
if (Number._isFinite) {
setProperty(Number, 'isFinite', Number._isFinite);
} else {
delete Number.isFinite;
}
if (window._ArrayBuffer) {
ArrayBuffer = _ArrayBuffer;
}
setProperty(window, '_ArrayBuffer', undefined);
if (window._Set) {
Set = _Set;
}
setProperty(window, '_Set', undefined);
if (window._WeakMap) {
WeakMap = _WeakMap;
}
setProperty(window, '_WeakMap', undefined);
setProperty(window, 'parseInt', window._parseInt);
setProperty(window, '_parseInt', undefined);
document.createDocumentFragment = document._createDocumentFragment;
setProperty(document, '_createDocumentFragment', undefined);
setProperty(window, 'WinRTError', undefined);
setProperty(window, 'exports', undefined);
setProperty(window, 'global', undefined);
setProperty(window, 'module', undefined);
setProperty(objectProto, 'propertyIsEnumerable', objectProto._propertyIsEnumerable);
delete Array._isArray;
delete Date._now;
delete Object._getOwnPropertySymbols;
delete Object._getPrototypeOf;
delete Object._keys;
delete funcProto._method;
delete objectProto._propertyIsEnumerable;
}
// load lodash and expose it to the bad extensions/shims
if (!ui.isModularize) {
addBizarroMethods();
document.write('<script src="' + ui.buildPath + '"><\/script>');
}
</script>
<script>
// store Lo-Dash to test for bad shim detection
var lodashBadShim = window._;
// restore native methods
if (Array._isArray) {
Array.isArray = Array._isArray;
} else {
delete Array.isArray;
// store lodash to test for bad extensions/shims
if (!ui.isModularize) {
var lodashBizarro = window._;
window._ = undefined;
removeBizarroMethods();
}
if (Function.prototype._bind) {
Function.prototype.bind = Function.prototype._bind;
} else {
delete Function.prototype.bind;
}
if (Object._create) {
Object.create = Object._create;
} else {
delete Object.create;
}
if (Object._defineProperty) {
Object.defineProperty = Object._defineProperty;
} else {
delete Object.defineProperty;
}
if (Object._keys) {
Object.keys = Object._keys;
} else {
delete Object.keys;
}
delete Array._isArray;
delete Function.prototype._bind;
delete Object._create;
delete Object._defineProperty;
delete Object._keys;
QUnit.config.hidepassed = true;
// assign results to `global_test_results` for Sauce Labs
var global_test_results;
QUnit.done(function(results) {
global_test_results = results;
});
// load Lo-Dash again to overwrite the existing `_` value
document.write('<script src="' + (ui.isModularize ? '../lodash.js' : ui.buildPath) + '"><\/script>');
// load test.js if not using require.js
document.write(ui.urlParams.loader == 'none'
? '<script src="test.js"><\/script>'
// load test scripts
document.write((ui.isForeign || ui.urlParams.loader == 'none')
? '<script src="' + ui.buildPath + '"><\/script><script src="test.js"><\/script>'
: '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
);
</script>
@@ -98,74 +290,118 @@
if (window.curl) {
curl.config({ 'apiName': 'require' });
}
if (!window.require) {
if (ui.isForeign || !window.require) {
return;
}
var reBasename = /[\w.-]+$/,
basePath = ('//' + location.host + location.pathname.replace(reBasename, '')).replace(/\btest\/$/, ''),
modulePath = ui.buildPath.replace(/\.js$/, ''),
locationPath = modulePath.replace(reBasename, ''),
moduleMain = modulePath.match(reBasename)[0];
moduleMain = modulePath.match(reBasename)[0],
locationPath = modulePath.replace(reBasename, '').replace(/^\/|\/$/g, ''),
shimmedLocationPath = './abc/../' + locationPath,
underscoreLocationPath = './xyz/../' + locationPath,
uid = +new Date;
QUnit.config.autostart = false;
// load Lo-Dash as a module
require({
'baseUrl': './',
'urlArgs': 't=' + (+new Date),
'packages': [
{
'name': 'lodash',
'location': locationPath,
'main': moduleMain
},
{
'name': 'shimmed',
'location': './abc/../' + locationPath,
'main': moduleMain
},
{
'name': 'underscore',
'location': './xyz/../' + locationPath,
'main': moduleMain
},
{
function getConfig() {
var result = {
'baseUrl': './',
'urlArgs': 't=' + uid++,
'waitSeconds': 0,
'paths': {},
'packages': [{
'name': 'test',
'location': basePath + '/test',
'location': basePath + 'test',
'main': 'test',
'config': {
// work around no global being exported
'exports': 'QUnit',
'loader': 'curl/loader/legacy'
}
}],
'shim': {
'shimmed': {
'exports': '_'
}
}
],
'shim': {
'shimmed': {
'exports': '_'
}
}
},
['lodash', 'shimmed', 'underscore'], function(lodash, shimmed, underscore) {
if (shimmed && shimmed.noConflict) {
shimmedModule = shimmed.noConflict();
shimmedModule.moduleName = 'shimmed';
}
if (underscore && underscore.noConflict) {
underscoreModule = underscore.noConflict();
underscoreModule.moduleName = 'underscore';
}
if (lodash && lodash.noConflict) {
lodashModule = lodash.noConflict();
lodashModule.moduleName = 'lodash';
}
};
if (ui.isModularize) {
window._ = lodash;
result.packages.push({
'name': 'lodash',
'location': locationPath,
'main': moduleMain
}, {
'name': 'shimmed',
'location': shimmedLocationPath,
'main': moduleMain
}, {
'name': 'underscore',
'location': underscoreLocationPath,
'main': moduleMain
});
} else {
result.paths.lodash = modulePath;
result.paths.shimmed = shimmedLocationPath + '/' + moduleMain;
result.paths.underscore = underscoreLocationPath + '/' + moduleMain;
}
require(['test'], function() {
return result;
}
function loadTests() {
require(getConfig(), ['test'], function() {
QUnit.start();
});
});
}
function loadModulesAndTests() {
require(getConfig(), ['lodash', 'shimmed', 'underscore'], function(lodash, shimmed, underscore) {
lodashModule = lodash;
lodashModule.moduleName = 'lodash';
if (shimmed) {
shimmedModule = shimmed.result(shimmed, 'noConflict') || shimmed;
shimmedModule.moduleName = 'shimmed';
}
if (underscore) {
underscoreModule = underscore.result(underscore, 'noConflict') || underscore;
underscoreModule.moduleName = 'underscore';
}
if (ui.isModularize) {
window._ = lodash;
}
if (ui.isModularize) {
require(getConfig(), [
'lodash/internal/baseEach',
'lodash/internal/isIndex',
'lodash/internal/isIterateeCall',
'lodash/internal/isLength'
], function(baseEach, isIndex, isIterateeCall, isLength) {
lodash._baseEach = baseEach;
lodash._isIndex = isIndex;
lodash._isIterateeCall = isIterateeCall;
lodash._isLength = isLength;
loadTests();
});
} else {
loadTests();
}
});
}
QUnit.config.autostart = false;
if (window.requirejs) {
addBizarroMethods();
require(getConfig(), ['lodash'], function(lodash) {
lodashBizarro = lodash.result(lodash, 'noConflict') || lodash;
delete requirejs.s.contexts._;
removeBizarroMethods();
loadModulesAndTests();
});
} else {
loadModulesAndTests();
}
}());
// set a more readable browser name

View File

@@ -1,13 +1,13 @@
cd "$(dirname "$0")"
for cmd in rhino "rhino -require" narwhal ringo phantomjs; do
echo "Testing in $cmd..."
$cmd test.js ../dist/lodash.compat.js && $cmd test.js ../dist/lodash.compat.min.js
echo ""
done
echo "Testing in node..."
node test.js ../dist/lodash.js && node test.js ../dist/lodash.min.js
node test.js ../lodash.src.js
for cmd in rhino "rhino -require" ringo phantomjs; do
echo ""
echo "Testing in $cmd..."
$cmd test.js ../lodash.src.js
done
echo ""
echo "Testing in a browser..."

File diff suppressed because it is too large Load Diff

15155
test/test.js

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title>Underscore Test Suite</title>
<link rel="stylesheet" href="../vendor/qunit/qunit/qunit.css">
<link rel="stylesheet" href="../node_modules/qunitjs/qunit/qunit.css">
<style>
iframe {
display: none;
@@ -19,160 +19,157 @@
</div>
<img id="chart_image" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">
</div>
<script src="../vendor/qunit/qunit/qunit.js"></script>
<script src="../vendor/jquery/jquery.js"></script>
<script src="../vendor/platform.js/platform.js"></script>
<script>
// avoid reporting tests to Sauce Labs when script errors occur
if (location.port == '9001') {
window.onerror = function(message) {
if (window.QUnit) {
QUnit.config.done.length = 0;
}
global_test_results = { 'message': message };
};
}
</script>
<script src="../node_modules/qunitjs/qunit/qunit.js"></script>
<script src="../node_modules/qunit-extras/qunit-extras.js"></script>
<script src="../node_modules/jquery/dist/jquery.js"></script>
<script src="../node_modules/platform/platform.js"></script>
<script src="./asset/test-ui.js"></script>
<script>
QUnit.config.asyncRetries = 10;
QUnit.config.hidepassed = true;
// assign results to `global_test_results` for Sauce Labs
var global_test_results;
QUnit.done(function(results) {
global_test_results = results;
});
// skip tests we intentionally fail or those with problems
(function() {
var skipped = {
'Arrays': {
'union': [
'[null,1,2,3]'
]
},
'Chaining': {
'reverse/concat/unshift/pop/map': [
'"34, 10, 8, 6, 4, 2, 10, 10"'
]
},
'Collections': {
'reduce': [
'handles a null (without initial value) properly',
'throws an error for empty arrays with no initial value'
],
'reduceRight': [
'handles a null (without initial value) properly',
'throws an error for empty arrays with no initial value'
],
'where': [
'Only get the first object matched.'
]
},
'Functions': {
'bind': [
'can bind without specifying a context',
'Died on test #2'
],
'bindAll': [
'throws an error for bindAll with no functions named'
],
'throttle': true,
'throttle arguments': true,
'throttle once': true,
'throttle twice': true,
'more throttling': true,
'throttle repeatedly with results': true,
'throttle triggers trailing call when invoked repeatedly': true,
'throttle does not trigger leading call when leading is set to false': true,
'more throttle does not trigger leading call when leading is set to false': true,
'throttle does not trigger trailing call when trailing is set to false': true,
'debounce': true,
'debounce asap': true,
'debounce asap recursively': true
},
'Objects': {
'isEqual': [
'Died on test #78'
],
'keys': [
'throws an error for `null` values',
'throws an error for `undefined` values',
'throws an error for number primitives',
'throws an error for string primitives',
'throws an error for boolean primitives'
]
},
'Utility': {
'_.escape': [
'"&lt;a href=&quot;http://moe.com&quot;&gt;Curly &amp; Moe&#x27;s&lt;/a&gt;"'
],
'_.unescape': [
'"<a href=\\"http://moe.com\\">Curly & Moe&#039;s</a>"'
],
'times': [
'Died on test #1'
],
'uniqueId': [
'Died on test #1'
]
}
};
// only skip in non-Underscore builds
if (/\bunderscore\b/i.test(ui.buildPath)) {
delete skipped.Chaining;
delete skipped.Collections.where;
delete skipped.Utility['_.escape'];
delete skipped.Utility['_.unescape'];
}
// only skip in Sauce Labs
if (location.port != '8081') {
for (var key in skipped.Functions) {
if (/\b(debounce|throttl)/.test(key)) {
delete skipped.Functions[key];
}
}
delete skipped.Objects.isEqual;
delete skipped.Utility.times;
delete skipped.Utility.uniqueId;
// excuse tests we intentionally fail or those with problems
QUnit.config.excused = {
'Arrays': {
'drop': [
'alias for rest'
],
'first': [
'can pass an index to first',
'[1,2]',
'0'
],
'flatten': [
'Flattens empty arrays',
'can flatten nested arrays',
'can shallowly flatten nested arrays',
'works on an arguments object',
'can shallowly flatten arrays containing only other arrays'
],
'initial': [
'initial can take an index',
'initial can take a large index',
'initial works on arguments object'
],
'intersection': [
'can perform an OO-style intersection',
'returns an empty array when passed null as first argument',
'returns an empty array when passed null as argument beyond the first'
],
'last': [
'can pass an index to last',
'0'
],
'lastIndexOf': [
'[0,-1,-1]'
],
'rest': [
'working rest(0)',
'rest can take an index',
'works on arguments object'
],
'take': [
'alias for first'
]
},
'Chaining': {
'pop': true,
'shift': true,
'splice': true,
'reverse/concat/unshift/pop/map': [
'can chain together array functions.'
]
},
'Collections': {
'filter': [
'OO-filter'
],
'invoke': [
'handles null & undefined'
],
'map': [
'OO-style doubled numbers'
],
'Resistant to collection length and properties changing while iterating': [
'Died on test #50'
]
},
'Functions': {
'bind': [
'Died on test #2'
],
'bindAll': [
'throws an error for bindAll with no functions named'
],
'memoize': [
'{"bar":"BAR","foo":"FOO"}',
'Died on test #8'
],
'throttle repeatedly with results': true,
'more throttle does not trigger leading call when leading is set to false': true,
'throttle does not trigger trailing call when trailing is set to false': true,
'debounce asap': true
},
'Objects': {
'#1929 Typed Array constructors are functions': true,
'allKeys': true,
'extendOwn': true,
'mapObject': true,
'matcher': true,
'matcher ': true,
'extend': [
'extend copies all properties from source'
],
'isFinite': [
'Numeric strings are numbers',
'Number instances can be finite'
],
'isMatch': [
'inherited and own properties are checked on the test object',
'doesnt falsey match constructor on undefined/null'
],
'keys': [
'is not fooled by sparse arrays; see issue #95',
'[]'
],
'matches': [
'inherited and own properties are checked on the test object',
'doesnt fasley match constructor on undefined/null'
]
},
'Utility': {
'_.templateSettings.variable': [
'"x"'
],
'times': [
'works as a wrapper'
]
}
};
QUnit.testStart(function(details) {
var test = QUnit.config.current,
finish = test.finish,
skippedTests = skipped[details.module],
skippedAsserts = skippedTests && skippedTests[details.name];
if (!skippedAsserts) {
return;
}
if (skippedAsserts === true) {
test.async = false;
test.callback = function() {};
test.expected = 0;
return;
}
test.finish = function() {
var index = -1,
asserts = this.assertions,
length = asserts.length;
while (++index < length) {
var assert = asserts[index],
message = _.unescape(_.result(/^<span class='test-message'>([\s\S]*?)<\/span>/.exec(assert.message), 1)),
died = _.result(/^Died on test #\d+/.exec(message), 0),
expected = _.unescape(_.result(/Expected: *<\/th><td><pre>([\s\S]*?)<\/pre>/.exec(assert.message), 1));
if ((message && _.contains(skippedAsserts, message)) ||
(died && _.contains(skippedAsserts, died)) ||
(expected && (_.contains(skippedAsserts, expected) ||
_.contains(skippedAsserts, expected.replace(/\s+/g, '')))
)) {
assert.result = true;
}
}
finish.call(this);
};
});
}());
// load Lo-Dash again to overwrite the existing `_` value
document.write('<script src="' + (ui.isModularize ? '../lodash.js' : ui.buildPath) + '"><\/script>');
// load test.js if not using require.js
// only excuse in Sauce Labs (buggy Safari and timers)
if (!ui.isSauceLabs) {
delete QUnit.config.excused.Functions['throttle repeatedly with results'];
delete QUnit.config.excused.Functions['more throttle does not trigger leading call when leading is set to false'];
delete QUnit.config.excused.Functions['throttle does not trigger trailing call when trailing is set to false'];
delete QUnit.config.excused.Functions['debounce asap'];
}
// load test scripts
document.write(ui.urlParams.loader != 'none'
? '<script data-dojo-config="async:1" src="' + ui.loaderPath + '"><\/script>'
: ([
'<script src="' + ui.buildPath + '"><\/script>',
'<script src="../vendor/underscore/test/collections.js"><\/script>',
'<script src="../vendor/underscore/test/arrays.js"><\/script>',
'<script src="../vendor/underscore/test/functions.js"><\/script>',
@@ -191,24 +188,20 @@
return;
}
var reBasename = /[\w.-]+$/,
basePath = ('//' + location.host + location.pathname).replace(/\btest\/$/, ''),
basePath = ('//' + location.host + location.pathname.replace(reBasename, '')).replace(/\btest\/$/, ''),
modulePath = ui.buildPath.replace(/\.js$/, ''),
locationPath = modulePath.replace(reBasename, ''),
moduleMain = modulePath.match(reBasename)[0];
locationPath = modulePath.replace(reBasename, '').replace(/^\/|\/$/g, ''),
moduleId = /\bunderscore\b/i.test(ui.buildPath) ? 'underscore' : 'lodash',
moduleMain = modulePath.match(reBasename)[0],
uid = +new Date;
QUnit.config.autostart = false;
// load Lo-Dash as a module
require({
'baseUrl': './',
'urlArgs': 't=' + (+new Date),
'packages': [
{
'name': 'lodash',
'location': locationPath,
'main': moduleMain
},
{
function getConfig() {
var result = {
'baseUrl': './',
'urlArgs': 't=' + uid++,
'waitSeconds': 0,
'paths': {},
'packages': [{
'name': 'test',
'location': '../vendor/underscore/test',
'config': {
@@ -216,14 +209,28 @@
'exports': 'QUnit',
'loader': 'curl/loader/legacy'
}
}
]
},
['lodash'], function(lodash) {
}]
};
if (ui.isModularize) {
result.packages.push({
'name': moduleId,
'location': locationPath,
'main': moduleMain
});
} else {
result.paths[moduleId] = modulePath;
}
return result;
}
QUnit.config.autostart = false;
require(getConfig(), [moduleId], function(lodash) {
if (ui.isModularize) {
window._ = lodash;
}
require([
require(getConfig(), [
'test/collections',
'test/arrays',
'test/functions',

View File

@@ -1,4 +1,4 @@
Copyright (c) 2010-2013 Jeremy Ashkenas, DocumentCloud
Copyright (c) 2010-2014 Jeremy Ashkenas, DocumentCloud
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation

View File

@@ -1,20 +1,35 @@
// Backbone.js 1.1.0
// Backbone.js 1.1.2
// (c) 2010-2011 Jeremy Ashkenas, DocumentCloud Inc.
// (c) 2011-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// (c) 2010-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Backbone may be freely distributed under the MIT license.
// For all details and documentation:
// http://backbonejs.org
(function(){
(function(root, factory) {
// Set up Backbone appropriately for the environment. Start with AMD.
if (typeof define === 'function' && define.amd) {
define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
// Export global even in AMD case in case this script is loaded with
// others that may still expect a global Backbone.
root.Backbone = factory(root, exports, _, $);
});
// Next for Node.js or CommonJS. jQuery may not be needed as a module.
} else if (typeof exports !== 'undefined') {
var _ = require('underscore');
factory(root, exports, _);
// Finally, as a browser global.
} else {
root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
}
}(this, function(root, Backbone, _, $) {
// Initial Setup
// -------------
// Save a reference to the global object (`window` in the browser, `exports`
// on the server).
var root = this;
// Save the previous value of the `Backbone` variable, so that it can be
// restored later on, if `noConflict` is used.
var previousBackbone = root.Backbone;
@@ -25,25 +40,12 @@
var slice = array.slice;
var splice = array.splice;
// The top-level namespace. All public Backbone classes and modules will
// be attached to this. Exported for both the browser and the server.
var Backbone;
if (typeof exports !== 'undefined') {
Backbone = exports;
} else {
Backbone = root.Backbone = {};
}
// Current version of the library. Keep in sync with `package.json`.
Backbone.VERSION = '1.1.0';
// Require Underscore, if we're on the server, and it's not already present.
var _ = root._;
if (!_ && (typeof require !== 'undefined')) _ = require('underscore');
Backbone.VERSION = '1.1.2';
// For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns
// the `$` variable.
Backbone.$ = root.jQuery || root.Zepto || root.ender || root.$;
Backbone.$ = $;
// Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable
// to its previous owner. Returns a reference to this Backbone object.
@@ -109,7 +111,7 @@
var retain, ev, events, names, i, l, j, k;
if (!this._events || !eventsApi(this, 'off', name, [callback, context])) return this;
if (!name && !callback && !context) {
this._events = {};
this._events = void 0;
return this;
}
names = name ? [name] : _.keys(this._events);
@@ -205,7 +207,7 @@
case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;
case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;
case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;
default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args);
default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;
}
};
@@ -350,7 +352,7 @@
// Trigger all relevant attribute changes.
if (!silent) {
if (changes.length) this._pending = true;
if (changes.length) this._pending = options;
for (var i = 0, l = changes.length; i < l; i++) {
this.trigger('change:' + changes[i], this, current[changes[i]], options);
}
@@ -361,6 +363,7 @@
if (changing) return this;
if (!silent) {
while (this._pending) {
options = this._pending;
this._pending = false;
this.trigger('change', this, options);
}
@@ -528,9 +531,12 @@
// using Backbone's restful methods, override this to change the endpoint
// that will be called.
url: function() {
var base = _.result(this, 'urlRoot') || _.result(this.collection, 'url') || urlError();
var base =
_.result(this, 'urlRoot') ||
_.result(this.collection, 'url') ||
urlError();
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) === '/' ? '' : '/') + encodeURIComponent(this.id);
return base.replace(/([^\/])$/, '$1/') + encodeURIComponent(this.id);
},
// **parse** converts a response into the hash of attributes to be `set` on
@@ -546,7 +552,7 @@
// A model is new if it has never been saved to the server, and lacks an id.
isNew: function() {
return this.id == null;
return !this.has(this.idAttribute);
},
// Check if the model is currently in a valid state.
@@ -650,7 +656,7 @@
options.index = index;
model.trigger('remove', model, this, options);
}
this._removeReference(model);
this._removeReference(model, options);
}
return singular ? models[0] : models;
},
@@ -676,11 +682,11 @@
// Turn bare objects into model references, and prevent invalid models
// from being added.
for (i = 0, l = models.length; i < l; i++) {
attrs = models[i];
attrs = models[i] || {};
if (attrs instanceof Model) {
id = model = attrs;
} else {
id = attrs[targetModel.prototype.idAttribute];
id = attrs[targetModel.prototype.idAttribute || 'id'];
}
// If a duplicate is found, prevent it from being added and
@@ -700,14 +706,13 @@
model = models[i] = this._prepareModel(attrs, options);
if (!model) continue;
toAdd.push(model);
// Listen to added models' events, and index models for lookup by
// `id` and by `cid`.
model.on('all', this._onModelEvent, this);
this._byId[model.cid] = model;
if (model.id != null) this._byId[model.id] = model;
this._addReference(model, options);
}
if (order) order.push(existing || model);
// Do not add multiple models with the same `id`.
model = existing || model;
if (order && (model.isNew() || !modelMap[model.id])) order.push(model);
modelMap[model.id] = true;
}
// Remove nonexistent models if appropriate.
@@ -745,7 +750,7 @@
}
if (sort || (order && order.length)) this.trigger('sort', this, options);
}
// Return the added (or merged) model (or models).
return singular ? models[0] : models;
},
@@ -757,7 +762,7 @@
reset: function(models, options) {
options || (options = {});
for (var i = 0, l = this.models.length; i < l; i++) {
this._removeReference(this.models[i]);
this._removeReference(this.models[i], options);
}
options.previousModels = this.models;
this._reset();
@@ -798,7 +803,7 @@
// Get a model from the set by id.
get: function(obj) {
if (obj == null) return void 0;
return this._byId[obj.id] || this._byId[obj.cid] || this._byId[obj];
return this._byId[obj] || this._byId[obj.id] || this._byId[obj.cid];
},
// Get the model at the given index.
@@ -874,7 +879,7 @@
if (!options.wait) this.add(model, options);
var collection = this;
var success = options.success;
options.success = function(model, resp, options) {
options.success = function(model, resp) {
if (options.wait) collection.add(model, options);
if (success) success(model, resp, options);
};
@@ -904,10 +909,7 @@
// Prepare a hash of attributes (or other model) to be added to this
// collection.
_prepareModel: function(attrs, options) {
if (attrs instanceof Model) {
if (!attrs.collection) attrs.collection = this;
return attrs;
}
if (attrs instanceof Model) return attrs;
options = options ? _.clone(options) : {};
options.collection = this;
var model = new this.model(attrs, options);
@@ -916,8 +918,16 @@
return false;
},
// Internal method to create a model's ties to a collection.
_addReference: function(model, options) {
this._byId[model.cid] = model;
if (model.id != null) this._byId[model.id] = model;
if (!model.collection) model.collection = this;
model.on('all', this._onModelEvent, this);
},
// Internal method to sever a model's ties to a collection.
_removeReference: function(model) {
_removeReference: function(model, options) {
if (this === model.collection) delete model.collection;
model.off('all', this._onModelEvent, this);
},
@@ -946,7 +956,7 @@
'reject', 'every', 'all', 'some', 'any', 'include', 'contains', 'invoke',
'max', 'min', 'toArray', 'size', 'first', 'head', 'take', 'initial', 'rest',
'tail', 'drop', 'last', 'without', 'difference', 'indexOf', 'shuffle',
'lastIndexOf', 'isEmpty', 'chain'];
'lastIndexOf', 'isEmpty', 'chain', 'sample'];
// Mix in each Underscore method as a proxy to `Collection#models`.
_.each(methods, function(method) {
@@ -958,7 +968,7 @@
});
// Underscore methods that take a property name as an argument.
var attributeMethods = ['groupBy', 'countBy', 'sortBy'];
var attributeMethods = ['groupBy', 'countBy', 'sortBy', 'indexBy'];
// Use attributes instead of properties.
_.each(attributeMethods, function(method) {
@@ -1180,7 +1190,9 @@
return xhr;
};
var noXhrPatch = typeof window !== 'undefined' && !!window.ActiveXObject && !(window.XMLHttpRequest && (new XMLHttpRequest).dispatchEvent);
var noXhrPatch =
typeof window !== 'undefined' && !!window.ActiveXObject &&
!(window.XMLHttpRequest && (new XMLHttpRequest).dispatchEvent);
// Map from CRUD to HTTP for our default `Backbone.sync` implementation.
var methodMap = {
@@ -1239,7 +1251,7 @@
var router = this;
Backbone.history.route(route, function(fragment) {
var args = router._extractParameters(route, fragment);
callback && callback.apply(router, args);
router.execute(callback, args);
router.trigger.apply(router, ['route:' + name].concat(args));
router.trigger('route', name, args);
Backbone.history.trigger('route', router, name, args);
@@ -1247,6 +1259,12 @@
return this;
},
// Execute a route handler with the provided parameters. This is an
// excellent place to do pre-route setup or post-route cleanup.
execute: function(callback, args) {
if (callback) callback.apply(this, args);
},
// Simple proxy to `Backbone.history` to save a fragment into the history.
navigate: function(fragment, options) {
Backbone.history.navigate(fragment, options);
@@ -1271,10 +1289,10 @@
route = route.replace(escapeRegExp, '\\$&')
.replace(optionalParam, '(?:$1)?')
.replace(namedParam, function(match, optional) {
return optional ? match : '([^\/]+)';
return optional ? match : '([^/?]+)';
})
.replace(splatParam, '(.*?)');
return new RegExp('^' + route + '$');
.replace(splatParam, '([^?]*?)');
return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$');
},
// Given a route, and a URL fragment that it matches, return the array of
@@ -1282,7 +1300,9 @@
// treated as `null` to normalize cross-browser behavior.
_extractParameters: function(route, fragment) {
var params = route.exec(fragment).slice(1);
return _.map(params, function(param) {
return _.map(params, function(param, i) {
// Don't decode the search params.
if (i === params.length - 1) return param || null;
return param ? decodeURIComponent(param) : null;
});
}
@@ -1320,8 +1340,8 @@
// Cached regex for removing a trailing slash.
var trailingSlash = /\/$/;
// Cached regex for stripping urls of hash and query.
var pathStripper = /[?#].*$/;
// Cached regex for stripping urls of hash.
var pathStripper = /#.*$/;
// Has the history handling already been started?
History.started = false;
@@ -1333,6 +1353,11 @@
// twenty times a second.
interval: 50,
// Are we at the app root?
atRoot: function() {
return this.location.pathname.replace(/[^\/]$/, '$&/') === this.root;
},
// Gets the true hash value. Cannot use location.hash directly due to bug
// in Firefox where location.hash will always be decoded.
getHash: function(window) {
@@ -1345,7 +1370,7 @@
getFragment: function(fragment, forcePushState) {
if (fragment == null) {
if (this._hasPushState || !this._wantsHashChange || forcePushState) {
fragment = this.location.pathname;
fragment = decodeURI(this.location.pathname + this.location.search);
var root = this.root.replace(trailingSlash, '');
if (!fragment.indexOf(root)) fragment = fragment.slice(root.length);
} else {
@@ -1376,7 +1401,8 @@
this.root = ('/' + this.root + '/').replace(rootStripper, '/');
if (oldIE && this._wantsHashChange) {
this.iframe = Backbone.$('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo('body')[0].contentWindow;
var frame = Backbone.$('<iframe src="javascript:0" tabindex="-1">');
this.iframe = frame.hide().appendTo('body')[0].contentWindow;
this.navigate(fragment);
}
@@ -1394,7 +1420,6 @@
// opened by a non-pushState browser.
this.fragment = fragment;
var loc = this.location;
var atRoot = loc.pathname.replace(/[^\/]$/, '$&/') === this.root;
// Transition from hashChange to pushState or vice versa if both are
// requested.
@@ -1402,17 +1427,17 @@
// If we've started off with a route from a `pushState`-enabled
// browser, but we're currently in a browser that doesn't support it...
if (!this._hasPushState && !atRoot) {
if (!this._hasPushState && !this.atRoot()) {
this.fragment = this.getFragment(null, true);
this.location.replace(this.root + this.location.search + '#' + this.fragment);
this.location.replace(this.root + '#' + this.fragment);
// Return immediately as browser will do redirect to new url
return true;
// Or if we've started out with a hash-based route, but we're currently
// in a browser where it could be `pushState`-based instead...
} else if (this._hasPushState && atRoot && loc.hash) {
} else if (this._hasPushState && this.atRoot() && loc.hash) {
this.fragment = this.getHash().replace(routeStripper, '');
this.history.replaceState({}, document.title, this.root + this.fragment + loc.search);
this.history.replaceState({}, document.title, this.root + this.fragment);
}
}
@@ -1424,7 +1449,7 @@
// but possibly useful for unit testing Routers.
stop: function() {
Backbone.$(window).off('popstate', this.checkUrl).off('hashchange', this.checkUrl);
clearInterval(this._checkUrlInterval);
if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);
History.started = false;
},
@@ -1472,7 +1497,7 @@
var url = this.root + (fragment = this.getFragment(fragment || ''));
// Strip the fragment of the query and hash for matching.
// Strip the hash for matching.
fragment = fragment.replace(pathStripper, '');
if (this.fragment === fragment) return;
@@ -1578,4 +1603,6 @@
};
};
}).call(this);
return Backbone;
}));

View File

@@ -85,6 +85,11 @@
equal(col2.get(model.clone()), col2.first());
});
test('get with "undefined" id', function() {
var collection = new Backbone.Collection([{id: 1}, {id: 'undefined'}]);
equal(collection.get(1).id, 1);
}),
test("update index when id changes", 4, function() {
var col = new Backbone.Collection();
col.add([
@@ -107,7 +112,7 @@
equal(col.pluck('label').join(' '), 'a b c d');
});
test("add", 10, function() {
test("add", 14, function() {
var added, opts, secondAdded;
added = opts = secondAdded = null;
e = new Backbone.Model({id: 10, label : 'e'});
@@ -136,6 +141,18 @@
equal(atCol.length, 4);
equal(atCol.at(1), e);
equal(atCol.last(), h);
var coll = new Backbone.Collection(new Array(2));
var addCount = 0;
coll.on('add', function(){
addCount += 1;
});
coll.add([undefined, f, g]);
equal(coll.length, 5);
equal(addCount, 3);
coll.add(new Array(4));
equal(coll.length, 9);
equal(addCount, 7);
});
test("add multiple models", 6, function() {
@@ -535,7 +552,7 @@
equal(coll.findWhere({a: 4}), void 0);
});
test("Underscore methods", 14, function() {
test("Underscore methods", 16, function() {
equal(col.map(function(model){ return model.get('label'); }).join(' '), 'a b c d');
equal(col.any(function(model){ return model.id === 100; }), false);
equal(col.any(function(model){ return model.id === 0; }), true);
@@ -554,9 +571,12 @@
.value(),
[4, 0]);
deepEqual(col.difference([c, d]), [a, b]);
ok(col.include(col.sample()));
var first = col.first();
ok(col.indexBy('id')[first.id] === first);
});
test("reset", 12, function() {
test("reset", 16, function() {
var resetCount = 0;
var models = col.models;
col.on('reset', function() { resetCount += 1; });
@@ -576,6 +596,15 @@
col.reset();
equal(col.length, 0);
equal(resetCount, 4);
var f = new Backbone.Model({id: 20, label : 'f'});
col.reset([undefined, f]);
equal(col.length, 2);
equal(resetCount, 5);
col.reset(new Array(4));
equal(col.length, 4);
equal(resetCount, 6);
});
test ("reset with different values", function(){
@@ -942,20 +971,6 @@
strictEqual(c.length, 0);
});
test("set with many models does not overflow the stack", function() {
var n = 150000;
var collection = new Backbone.Collection();
var models = [];
for (var i = 0; i < n; i++) {
models.push({id: i});
}
collection.set(models);
equal(collection.length, n);
collection.reset();
collection.set(models, {at: 0});
equal(collection.length, n);
});
test("set with only cids", 3, function() {
var m1 = new Backbone.Model;
var m2 = new Backbone.Model;
@@ -1274,4 +1289,50 @@
equal(job.items.get(2).subItems.get(3).get('subName'), 'NewThree');
});
test('_addReference binds all collection events & adds to the lookup hashes', 9, function() {
var calls = {add: 0, remove: 0};
var Collection = Backbone.Collection.extend({
_addReference: function(model) {
Backbone.Collection.prototype._addReference.apply(this, arguments);
calls.add++;
equal(model, this._byId[model.id]);
equal(model, this._byId[model.cid]);
equal(model._events.all.length, 1);
},
_removeReference: function(model) {
Backbone.Collection.prototype._removeReference.apply(this, arguments);
calls.remove++;
equal(this._byId[model.id], void 0);
equal(this._byId[model.cid], void 0);
equal(model.collection, void 0);
equal(model._events.all, void 0);
}
});
var collection = new Collection();
var model = collection.add({id: 1});
collection.remove(model);
equal(calls.add, 1);
equal(calls.remove, 1);
});
test('Do not allow duplicate models to be `add`ed or `set`', function() {
var c = new Backbone.Collection();
c.add([{id: 1}, {id: 1}]);
equal(c.length, 1);
equal(c.models.length, 1);
c.set([{id: 1}, {id: 1}]);
equal(c.length, 1);
equal(c.models.length, 1);
});
})();

View File

@@ -4,9 +4,15 @@
var ajax = Backbone.ajax;
var emulateHTTP = Backbone.emulateHTTP;
var emulateJSON = Backbone.emulateJSON;
var history = window.history;
var pushState = history.pushState;
var replaceState = history.replaceState;
QUnit.testStart(function() {
var env = this.config.current.testEnvironment;
var env = QUnit.config.current.testEnvironment;
// We never want to actually call these during tests.
history.pushState = history.replaceState = function(){};
// Capture ajax settings for comparison.
Backbone.ajax = function(settings) {
@@ -30,6 +36,8 @@
Backbone.ajax = ajax;
Backbone.emulateHTTP = emulateHTTP;
Backbone.emulateJSON = emulateJSON;
history.pushState = pushState;
history.replaceState = replaceState;
});
})();

View File

@@ -305,7 +305,7 @@
test("if callback is truthy but not a function, `on` should throw an error just like jQuery", 1, function() {
var view = _.extend({}, Backbone.Events).on('test', 'noop');
throws(function() {
raises(function() {
view.trigger('test');
});
});

View File

@@ -262,6 +262,26 @@
model.set({result: void 0});
});
test("nested set triggers with the correct options", function() {
var model = new Backbone.Model();
var o1 = {};
var o2 = {};
var o3 = {};
model.on('change', function(__, options) {
switch (model.get('a')) {
case 1:
equal(options, o1);
return model.set('a', 2, o2);
case 2:
equal(options, o2);
return model.set('a', 3, o3);
case 3:
equal(options, o3);
}
});
model.set('a', 1, o1);
});
test("multiple unsets", 1, function() {
var i = 0;
var counter = function(){ i++; };

View File

@@ -5,10 +5,10 @@
var lastRoute = null;
var lastArgs = [];
function onRoute(router, route, args) {
var onRoute = function(router, route, args) {
lastRoute = route;
lastArgs = args;
}
};
var Location = function(href) {
this.replace(href);
@@ -16,8 +16,11 @@
_.extend(Location.prototype, {
parser: document.createElement('a'),
replace: function(href) {
_.extend(this, _.pick($('<a></a>', {href: href})[0],
this.parser.href = href;
_.extend(this, _.pick(this.parser,
'href',
'hash',
'host',
@@ -64,7 +67,7 @@
this.value = value;
}
};
_.bindAll(ExternalObject);
_.bindAll(ExternalObject, 'routingFunction');
var Router = Backbone.Router.extend({
@@ -87,7 +90,7 @@
":repo/compare/*from...*to": "github",
"decode/:named/*splat": "decode",
"*first/complex-*part/*rest": "complex",
":entity?*args": "query",
"query/:entity": "query",
"function/:value": ExternalObject.routingFunction,
"*anything": "anything"
},
@@ -208,6 +211,11 @@
equal(router.page, '20');
});
test("routes via navigate with params", 1, function() {
Backbone.history.navigate('query/test?a=b', {trigger: true});
equal(router.queryArgs, 'a=b');
});
test("routes via navigate for backwards-compatibility", 2, function() {
Backbone.history.navigate('search/manhattan/p20', true);
equal(router.query, 'manhattan');
@@ -285,7 +293,7 @@
});
test("routes (query)", 5, function() {
location.replace('http://example.com#mandel?a=b&c=d');
location.replace('http://example.com#query/mandel?a=b&c=d');
Backbone.history.checkUrl();
equal(router.entity, 'mandel');
equal(router.queryArgs, 'a=b&c=d');
@@ -535,7 +543,7 @@
Backbone.history.stop();
location.replace('http://example.com/root/x/y?a=b');
location.replace = function(url) {
strictEqual(url, '/root/?a=b#x/y');
strictEqual(url, '/root/#x/y?a=b');
};
Backbone.history = _.extend(new Backbone.History, {
location: location,
@@ -552,7 +560,7 @@
test("#1695 - hashChange to pushState with search.", 1, function() {
Backbone.history.stop();
location.replace('http://example.com/root?a=b#x/y');
location.replace('http://example.com/root#x/y?a=b');
Backbone.history = _.extend(new Backbone.History, {
location: location,
history: {
@@ -601,7 +609,7 @@
test("#2062 - Trigger 'route' event on router instance.", 2, function() {
router.on('route', function(name, args) {
strictEqual(name, 'routeEvent');
deepEqual(args, ['x']);
deepEqual(args, ['x', null]);
});
location.replace('http://example.com#route-event/x');
Backbone.history.checkUrl();
@@ -684,7 +692,7 @@
}
});
location.replace('http://example.com/root/path');
Backbone.history.start({pushState: true, root: 'root'});
Backbone.history.start({pushState: true, hashChange: false, root: 'root'});
Backbone.history.navigate('');
});
@@ -699,7 +707,7 @@
}
});
location.replace('http://example.com/path');
Backbone.history.start({pushState: true});
Backbone.history.start({pushState: true, hashChange: false});
Backbone.history.navigate('');
});
@@ -722,8 +730,81 @@
var router = new Router;
location.replace('http://example.com/');
Backbone.history.start({pushState: true});
Backbone.history.start({pushState: true, hashChange: false});
Backbone.history.navigate('path?query#hash', true);
});
test('Do not decode the search params.', function() {
var Router = Backbone.Router.extend({
routes: {
path: function(params){
strictEqual(params, 'x=y%20z');
}
}
});
var router = new Router;
Backbone.history.navigate('path?x=y%20z', true);
});
test('Navigate to a hash url.', function() {
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
Backbone.history.start({pushState: true});
var Router = Backbone.Router.extend({
routes: {
path: function(params) {
strictEqual(params, 'x=y');
}
}
});
var router = new Router;
location.replace('http://example.com/path?x=y#hash');
Backbone.history.checkUrl();
});
test('#navigate to a hash url.', function() {
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
Backbone.history.start({pushState: true});
var Router = Backbone.Router.extend({
routes: {
path: function(params) {
strictEqual(params, 'x=y');
}
}
});
var router = new Router;
Backbone.history.navigate('path?x=y#hash', true);
});
test('unicode pathname', 1, function() {
location.replace('http://example.com/myyjä');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
routes: {
myyjä: function() {
ok(true);
}
}
});
new Router;
Backbone.history.start({pushState: true});
});
test('newline in route', 1, function() {
location.replace('http://example.com/stuff%0Anonsense?param=foo%0Abar');
Backbone.history.stop();
Backbone.history = _.extend(new Backbone.History, {location: location});
var Router = Backbone.Router.extend({
routes: {
'stuff\nnonsense': function() {
ok(true);
}
}
});
new Router;
Backbone.history.start({pushState: true});
});
})();

View File

@@ -39,23 +39,23 @@
test("delegateEvents", 6, function() {
var counter1 = 0, counter2 = 0;
var view = new Backbone.View({el: '<p><a id="test"></a></p>'});
var view = new Backbone.View({el: '#testElement'});
view.increment = function(){ counter1++; };
view.$el.on('click', function(){ counter2++; });
var events = {'click #test': 'increment'};
var events = {'click h1': 'increment'};
view.delegateEvents(events);
view.$('#test').trigger('click');
view.$('h1').trigger('click');
equal(counter1, 1);
equal(counter2, 1);
view.$('#test').trigger('click');
view.$('h1').trigger('click');
equal(counter1, 2);
equal(counter2, 2);
view.delegateEvents(events);
view.$('#test').trigger('click');
view.$('h1').trigger('click');
equal(counter1, 3);
equal(counter2, 3);
});
@@ -92,24 +92,24 @@
test("undelegateEvents", 6, function() {
var counter1 = 0, counter2 = 0;
var view = new Backbone.View({el: '<p><a id="test"></a></p>'});
var view = new Backbone.View({el: '#testElement'});
view.increment = function(){ counter1++; };
view.$el.on('click', function(){ counter2++; });
var events = {'click #test': 'increment'};
var events = {'click h1': 'increment'};
view.delegateEvents(events);
view.$('#test').trigger('click');
view.$('h1').trigger('click');
equal(counter1, 1);
equal(counter2, 1);
view.undelegateEvents();
view.$('#test').trigger('click');
view.$('h1').trigger('click');
equal(counter1, 1);
equal(counter2, 2);
view.delegateEvents(events);
view.$('#test').trigger('click');
view.$('h1').trigger('click');
equal(counter1, 2);
equal(counter2, 3);
});
@@ -218,7 +218,7 @@
$('body').trigger('fake$event').trigger('fake$event');
equal(count, 2);
$('body').unbind('.namespaced');
$('body').off('.namespaced');
$('body').trigger('fake$event');
equal(count, 2);
});
@@ -304,28 +304,24 @@
ok(view.$el.has('a'));
});
test("events passed in options", 2, function() {
test("events passed in options", 1, function() {
var counter = 0;
var View = Backbone.View.extend({
el: '<p><a id="test"></a></p>',
el: '#testElement',
increment: function() {
counter++;
}
});
var view = new View({events:{'click #test':'increment'}});
var view2 = new View({events:function(){
return {'click #test':'increment'};
}});
var view = new View({
events: {
'click h1': 'increment'
}
});
view.$('#test').trigger('click');
view2.$('#test').trigger('click');
view.$('h1').trigger('click').trigger('click');
equal(counter, 2);
view.$('#test').trigger('click');
view2.$('#test').trigger('click');
equal(counter, 4);
});
})();

View File

@@ -1,4 +1,4 @@
Copyright 2010-2013 Mathias Bynens <http://mathiasbynens.be/>
Copyright 2010-2015 Mathias Bynens <http://mathiasbynens.be/>
Based on JSLitmus.js, copyright Robert Kieffer <http://broofa.com/>
Modified by John-David Dalton <http://allyoucanleet.com/>
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

File diff suppressed because it is too large Load Diff

View File

@@ -1,24 +0,0 @@
Open Source Initiative OSI - The MIT License
http://www.opensource.org/licenses/mit-license.php
Copyright (c) 2010-2013 Brian Cavalier and John Hann
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,48 +0,0 @@
(function(){/*
MIT License (c) copyright 2010-2013 B Cavalier & J Hann MIT (c) copyright 2010-2013 B Cavalier & J Hann */
(function(f){function k(){}function g(a,e){return 0==T.call(a).indexOf("[object "+e)}function n(a){return a&&"/"==a.charAt(a.length-1)?a.substr(0,a.length-1):a}function d(a,e){var l,h,D,m;l=1;h=a;"."==h.charAt(0)&&(D=!0,h=h.replace(U,function(a,e,h,D){h&&l++;return D||""}));if(D){D=e.split("/");m=D.length-l;if(0>m)return a;D.splice(m,l);return D.concat(h||[]).join("/")}return h}function s(a){var e=a.indexOf("!");return{g:a.substr(e+1),d:0<=e&&a.substr(0,e)}}function v(){}function q(a,e){v.prototype=
a||Q;var l=new v;v.prototype=Q;for(var h in e)l[h]=e[h];return l}function y(){function a(a,e,l){h.push([a,e,l])}function e(a,e){for(var l,D=0;l=h[D++];)(l=l[a])&&l(e)}var l,h,D;l=this;h=[];D=function(l,m){a=l?function(a){a&&a(m)}:function(a,e){e&&e(m)};D=k;e(l?0:1,m);e=k;h=G};this.l=function(e,h,D){a(e,h,D);return l};this.k=function(a){l.H=a;D(!0,a)};this.e=function(a){l.Ba=a;D(!1,a)};this.F=function(a){e(2,a)}}function x(a){return a instanceof y||a instanceof u}function r(a,e,l,h){x(a)?a.l(e,l,h):
e(a)}function w(a,e,l){var h;return function(){0<=--a&&e&&(h=e.apply(G,arguments));0==a&&l&&l(h);return h}}function b(){var a,e;p="";a=[].slice.call(arguments);g(a[0],"Object")&&(e=a.shift(),e=c(e));return new u(a[0],a[1],a[2],e)}function c(a,e,l){var h;p="";if(a&&(t.V(a),E=t.b(a),"preloads"in a&&(h=new u(a.preloads,G,l,J,!0),t.n(function(){J=h})),a=a.main))return new u(a,e,l)}function u(a,e,l,h,D){var m;m=t.i(E,G,[].concat(a),D);this.then=this.l=a=function(a,e){r(m,function(e){a&&a.apply(G,e)},function(a){if(e)e(a);
else throw a;});return this};this.next=function(a,e,h){return new u(a,e,h,m)};this.config=c;(e||l)&&a(e,l);t.n(function(){r(D||J,function(){r(h,function(){t.A(m)},l)})})}function z(a){var e,l;e=a.id;e==G&&(K!==G?K={L:"Multiple anonymous defines encountered"}:(e=t.ja())||(K=a));if(e!=G){l=F[e];e in F||(l=t.o(e,E),l=t.I(l.b,e),F[e]=l);if(!x(l))throw Error("duplicate define: "+e);l.oa=!1;t.J(l,a)}}function A(){var a=t.ga(arguments);z(a)}var p,E,C,H,B=f.document,L=B&&(B.head||B.getElementsByTagName("head")[0]),
N=L&&L.getElementsByTagName("base")[0]||null,M={},I={},m={},V="addEventListener"in f?{}:{loaded:1,complete:1},Q={},T=Q.toString,G,F={},O={},J=!1,K,S=/^\/|^[^:]+:\/\//,U=/(\.)(\.?)(?:$|\/([^\.\/]+.*)?)/g,W=/\/\*[\s\S]*?\*\/|\/\/.*?[\n\r]/g,X=/require\s*\(\s*(["'])(.*?[^\\])\1\s*\)|[^\\]?(["'])/g,Y=/\s*,\s*/,R,t;t={t:function(a,e,l){var h;a=d(a,e);if("."==a.charAt(0))return a;h=s(a);a=(e=h.d)||h.g;a in l.c&&(a=l.c[a].Q||a);e&&(0>e.indexOf("/")&&!(e in l.c)&&(a=n(l.T)+"/"+e),a=a+"!"+h.g);return a},i:function(a,
e,l,h){function m(e,h){var l,c;l=t.t(e,b.id,a);if(!h)return l;c=s(l);if(!c.d)return l;l=F[c.d];c.g="normalize"in l?l.normalize(c.g,m,b.b)||"":m(c.g);return c.d+"!"+c.g}function c(e,l,d){var s;s=l&&function(a){l.apply(G,a)};if(g(e,"String")){if(s)throw Error("require(id, callback) not allowed");d=m(e,!0);e=F[d];if(!(d in F))throw Error("Module not resolved: "+d);return(d=x(e)&&e.a)||e}r(t.A(t.i(a,b.id,e,h)),s,d)}var b;b=new y;b.id=e||"";b.ka=h;b.K=l;b.b=a;b.s=c;c.toUrl=function(e){return t.o(m(e,!0),
a).url};b.t=m;return b},I:function(a,e,l){var h,m,c;h=t.i(a,e,G,l);m=h.k;c=w(1,function(a){h.w=a;try{return t.ba(h)}catch(e){h.e(e)}});h.k=function(a){r(l||J,function(){m(F[h.id]=O[h.url]=c(a))})};h.M=function(a){r(l||J,function(){h.a&&(c(a),h.F(I))})};return h},$:function(a,e,l,h){return t.i(a,l,G,h)},ia:function(a){return a.s},O:function(a){return a.a||(a.a={})},ha:function(a){var e=a.B;e||(e=a.B={id:a.id,uri:t.P(a),exports:t.O(a),config:function(){return a.b}},e.a=e.exports);return e},P:function(a){return a.url||
(a.url=t.u(a.s.toUrl(a.id),a.b))},V:function(a){var e,l,h,m,c;e="curl";l="define";h=m=f;if(a&&(c=a.overwriteApi||a.ya,e=a.apiName||a.qa||e,h=a.apiContext||a.pa||h,l=a.defineName||a.ua||l,m=a.defineContext||a.ta||m,C&&g(C,"Function")&&(f.curl=C),C=null,H&&g(H,"Function")&&(f.define=H),H=null,!c)){if(h[e]&&h[e]!=b)throw Error(e+" already exists");if(m[l]&&m[l]!=A)throw Error(l+" already exists");}h[e]=b;m[l]=A},b:function(a){function e(a,e){var l,h,b,p,f;for(f in a){b=a[f];g(b,"String")&&(b={path:a[f]});
b.name=b.name||f;p=m;h=s(n(b.name));l=h.g;if(h=h.d)p=c[h],p||(p=c[h]=q(m),p.c=q(m.c),p.f=[]),delete a[f];h=b;var k=e,r=void 0;h.path=n(h.path||h.location||"");k&&(r=h.main||"./main","."==r.charAt(0)||(r="./"+r),h.Q=d(r,h.name+"/"));h.b=h.config;h.b&&(h.b=q(m,h.b));h.W=l.split("/").length;l?(p.c[l]=h,p.f.push(l)):p.p=t.U(b.path,m)}}function l(a){var e=a.c;a.S=RegExp("^("+a.f.sort(function(a,h){return e[h].W-e[a].W}).join("|").replace(/\/|\./g,"\\$&")+")(?=\\/|$)");delete a.f}var h,m,c,b;"baseUrl"in
a&&(a.p=a.baseUrl);"main"in a&&(a.Q=a.main);"preloads"in a&&(a.za=a.preloads);"pluginPath"in a&&(a.T=a.pluginPath);if("dontAddFileExt"in a||a.j)a.j=RegExp(a.dontAddFileExt||a.j);h=E;m=q(h,a);m.c=q(h.c);c=a.plugins||{};m.plugins=q(h.plugins);m.D=q(h.D,a.D);m.C=q(h.C,a.C);m.f=[];e(a.packages,!0);e(a.paths,!1);for(b in c)a=t.t(b+"!","",m),m.plugins[a.substr(0,a.length-1)]=c[b];c=m.plugins;for(b in c)if(c[b]=q(m,c[b]),a=c[b].f)c[b].f=a.concat(m.f),l(c[b]);for(b in h.c)m.c.hasOwnProperty(b)||m.f.push(b);
l(m);return m},o:function(a,e){var m,h,b,c;m=e.c;b=S.test(a)?a:a.replace(e.S,function(a){h=m[a]||{};c=h.b;return h.path||""});return{b:c||E,url:t.U(b,e)}},U:function(a,e){var m=e.p;return m&&!S.test(a)?n(m)+"/"+a:a},u:function(a,e){return a+((e||E).j.test(a)?"":".js")},m:function(a,e,l){var h=B.createElement("script");h.onload=h.onreadystatechange=function(l){l=l||f.event;if("load"==l.type||V[h.readyState])delete m[a.id],h.onload=h.onreadystatechange=h.onerror="",e()};h.onerror=function(){l(Error("Syntax or http error: "+
a.url))};h.type=a.r||"text/javascript";h.charset="utf-8";h.async=!a.R;h.src=a.url;m[a.id]=h;L.insertBefore(h,N);return h},N:function(a){var e=[],m;("string"==typeof a?a:a.toSource?a.toSource():a.toString()).replace(W,"").replace(X,function(a,b,c,d){d?m=m==d?G:m:m||e.push(c);return""});return e},ga:function(a){var e,m,h,b,c,d;c=a.length;h=a[c-1];b=g(h,"Function")?h.length:-1;2==c?g(a[0],"Array")?m=a[0]:e=a[0]:3==c&&(e=a[0],m=a[1]);!m&&0<b&&(d=!0,m=["require","exports","module"].slice(0,b).concat(t.N(h)));
return{id:e,w:m||[],G:0<=b?h:function(){return h},v:d}},ba:function(a){var e;e=a.G.apply(a.v?a.a:G,a.w);e===G&&a.a&&(e=a.B?a.a=a.B.a:a.a);return e},J:function(a,e){a.G=e.G;a.v=e.v;a.K=e.w;t.A(a)},A:function(a){function e(a,e,m){d[e]=a;m&&s(a,e)}function m(e,h){var b,c,l,d;b=w(1,function(a){c(a);g(a,h)});c=w(1,function(a){s(a,h)});l=t.da(e,a);(d=x(l)&&l.a)&&c(d);r(l,b,a.e,a.a&&function(a){l.a&&(a==M?c(l.a):a==I&&b(l.a))})}function h(){a.k(d)}var b,c,d,p,f,s,g;d=[];c=a.K;p=c.length;0==c.length&&h();
s=w(p,e,function(){a.M&&a.M(d)});g=w(p,e,h);for(b=0;b<p;b++)f=c[b],f in R?(g(R[f](a),b,!0),a.a&&a.F(M)):f?m(f,b):g(G,b,!0);return a},ea:function(a){t.P(a);t.m(a,function(){var e=K;K=G;!1!==a.oa&&(!e||e.L?a.e(Error(e&&e.L||"define() missing or duplicated: "+a.url)):t.J(a,e))},a.e);return a},da:function(a,e){var m,h,b,c,d,p,f,g,q,k,n,u;m=e.t;h=e.ka;b=e.b||E;d=m(a);d in F?p=d:(c=s(d),g=c.g,p=c.d||g,q=t.o(p,b));if(!(d in F))if(u=t.o(g,b).b,c.d)f=p;else if(f=u.moduleLoader||u.xa||u.loader||u.wa)g=p,p=
f,q=t.o(f,b);p in F?k=F[p]:q.url in O?k=F[p]=O[q.url]:(k=t.I(u,p,h),k.url=t.u(q.url,q.b),F[p]=O[q.url]=k,t.ea(k));p==f&&(c.d&&b.plugins[c.d]&&(u=b.plugins[c.d]),n=new y,r(k,function(a){var e,b,c;c=a.dynamic;g="normalize"in a?a.normalize(g,m,k.b)||"":m(g);b=f+"!"+g;e=F[b];if(!(b in F)){e=t.$(u,b,g,h);c||(F[b]=e);var d=function(a){c||(F[b]=a);e.k(a)};d.resolve=d;d.reject=d.error=e.e;a.load(g,e.s,d,u)}n!=e&&r(e,n.k,n.e,n.F)},n.e));return n||k},ja:function(){var a;if(!g(f.opera,"Opera"))for(var e in m)if("interactive"==
m[e].readyState){a=e;break}return a},fa:function(a){var e=0,m,b;for(m=B&&(B.scripts||B.getElementsByTagName("script"));m&&(b=m[e++]);)if(a(b))return b},ca:function(){var a,e="";(a=t.fa(function(a){(a=a.getAttribute("data-curl-run"))&&(e=a);return a}))&&a.setAttribute("data-curl-run","");return e},X:function(){function a(){t.m({url:b.shift()},e,e)}function e(){p&&(b.length?(t.n(m),a()):m("run.js script did not run."))}function m(a){throw Error(a||"Primary run.js failed. Trying fallback.");}var b=p.split(Y);
b.length&&a()},n:function(a){setTimeout(a,0)}};R={require:t.ia,exports:t.O,module:t.ha};b.version="0.8.4";b.config=c;A.amd={plugins:!0,jQuery:!0,curl:"0.8.4"};E={p:"",T:"curl/plugin",j:/\?|\.js\b/,D:{},C:{},plugins:{},c:{},S:/$^/};C=f.curl;H=f.define;C&&g(C,"Object")?(f.curl=G,c(C)):t.V();(p=t.ca())&&t.n(t.X);F.curl=b;F["curl/_privileged"]={core:t,cache:F,config:function(){return E},_define:z,_curl:b,Promise:y}})(this.window||"undefined"!=typeof global&&global||this);
(function(f,k){function g(){if(!k.body)return!1;A||(A=k.createTextNode(""));try{return k.body.removeChild(k.body.appendChild(A)),A=z,!0}catch(b){return!1}}function n(){var d;d=v[k[s]]&&g();if(!x&&d){x=!0;for(clearTimeout(u);b=c.pop();)b();y&&(k[s]="complete");for(var f;f=q.shift();)f()}return d}function d(){n();x||(u=setTimeout(d,r))}var s="readyState",v={loaded:1,interactive:1,complete:1},q=[],y=k&&"string"!=typeof k[s],x=!1,r=10,w,b,c=[],u,z,A;w="addEventListener"in f?function(b,c){b.addEventListener(c,
n,!1);return function(){b.removeEventListener(c,n,!1)}}:function(b,c){b.attachEvent("on"+c,n);return function(){b.detachEvent(c,n)}};k&&!n()&&(c=[w(f,"load"),w(k,"readystatechange"),w(f,"DOMContentLoaded")],u=setTimeout(d,r));define("curl/domReady",function(){function b(c){x?c():q.push(c)}b.then=b;b.amd=!0;return b})})(this,this.document);var P;
(function(f,k){define("curl/shim/dojo18",["curl/_privileged"],function(g){function n(c){c.has||(c.has=b);c.on||(c.on=s);c.idle||(c.idle=d);c.async=!0}function d(){for(var b in q)if(q[b]instanceof y)return!1;return!0}function s(){}var v,q,y,x;v=g._curl;q=g.cache;y=g.Promise;x=g.core.i;var r,w,b;r=g.b().va||{};w=k&&k.createElement("div");b=function(b){return"function"==typeof r[b]?r[b]=r[b](f,k,w):r[b]};b.add=function(c,d,f,g){if(void 0===r[c]||g)r[c]=d;if(f)return b(c)};r["dojo-loader"]=!1;q["dojo/_base/loader"]=
0;"undefined"==typeof P&&(n(v),P=v);g.core.i=function(){var b=x.apply(this,arguments);n(b.s);return b};return!0})})("object"==typeof global?global:this.window||this.global,"object"==typeof document&&document);
(function(f,k,g){define("curl/plugin/js",["curl/_privileged"],function(f){function d(b,c,d){function s(){p||(k<new Date?d():setTimeout(s,10))}var k,p,q;k=(new Date).valueOf()+(b.na||3E5);d&&b.a&&setTimeout(s,10);q=f.core.m(b,function(){p=!0;b.a&&(b.H=g(b.a));!b.a||b.H?c(q):d()},function(b){p=!0;d(b)})}function s(b,c){d(b,function(){var d=q.shift();r=0<q.length;d&&s.apply(null,d);c.k(b.H||!0)},function(b){c.e(b)})}var v={},q=[],y=k&&!0==k.createElement("script").async,x,r,w=/\?|\.js\b/;x=f.Promise;
return{dynamic:!0,normalize:function(b,c){var d=b.indexOf("!");return 0<=d?c(b.substr(0,d))+b.substr(d):c(b)},load:function(b,c,f,g){function k(b){(f.error||function(b){throw b;})(b)}var p,n,C,H,B;p=0<b.indexOf("!order");n=b.indexOf("!exports=");C=0<n?b.substr(n+9):g.a;H="prefetch"in g?g.prefetch:!0;b=p||0<n?b.substr(0,b.indexOf("!")):b;n=(n=g.dontAddFileExt||g.j)?RegExp(n):w;B=c.toUrl(b);n.test(B)||(B=B.lastIndexOf(".")<=B.lastIndexOf("/")?B+".js":B);B in v?v[B]instanceof x?v[B].l(f,k):f(v[B]):(b=
{name:b,url:B,R:p,a:C,na:g.timeout},v[B]=c=new x,c.l(function(b){v[B]=b;f(b)},k),p&&!y&&r?(q.push([b,c]),H&&(b.r="text/cache",d(b,function(b){b&&b.parentNode.removeChild(b)},function(){}),b.r="")):(r=r||p,s(b,c)))},cramPlugin:"../cram/js"}})})(this,this.document,function(f){try{return eval(f)}catch(k){}});
define("curl/plugin/_fetchText",[],function(){var f,k;k=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"];f=function(){if("undefined"!==typeof XMLHttpRequest)f=function(){return new XMLHttpRequest};else for(var g=f=function(){throw Error("getXhr(): XMLHttpRequest not available");};0<k.length&&f===g;)(function(g){try{new ActiveXObject(g),f=function(){return new ActiveXObject(g)}}catch(d){}})(k.shift());return f()};return function(g,k,d){var s=f();s.open("GET",g,!0);s.onreadystatechange=function(){4===
s.readyState&&(400>s.status?k(s.responseText):d(Error("fetchText() failed. status: "+s.statusText)))};s.send(null)}});define("curl/plugin/text",["./_fetchText"],function(f){function k(f){throw f;}return{load:function(g,n,d){f(n.toUrl(g),d,d.error||k)},cramPlugin:"../cram/text"}});
define("curl/plugin/async",function(){return{load:function(f,k,g){function n(d){"function"==typeof g.error&&g.error(d)}k([f],function(d){"function"==typeof d.l?d.l(function(f){0==arguments.length&&(f=d);g(f)},n):g(d)},g.error||function(d){throw d;})},analyze:function(f,k,g){g(f)}}});
(function(f){function k(){var b;b=p[z]("link");b.rel="stylesheet";b.type="text/css";return b}function g(b,c){b.onload=function(){I.load=I.load||!0;c()}}function n(b,c){b.onerror=function(){I.error=I.error||!0;c()}}function d(b,c,d){B.push({url:b,Y:c,aa:function(){d(Error(M))}});(b=v())&&s(b)}function s(b){var c,d;c=B.shift();d=b.styleSheet;c?(b.onload=function(){c.Y(c.ma);s(b)},b.onerror=function(){c.aa();s(b)},c.ma=d.imports[d.addImport(c.url)]):(b.onload=b.onerror=u,H.push(b))}function v(){var b;
b=H.shift();!b&&C.length<L&&(b=p.createElement("style"),C.push(b),E.appendChild(b));return b}function q(b){var c,d,f;if(!b.href||p.readyState&&"complete"!=p.readyState)return!1;c=!1;try{if(d=b.sheet)f=d.cssRules,c=null===f,!c&&f&&(d.insertRule("-curl-css-test {}",0),d.deleteRule(0),c=!0)}catch(g){c="[object Opera]"!=Object.prototype.toString.call(window.opera)&&/security|denied/i.test(g.message)}return c}function y(b,c,d){I.load||(q(b)?d(b.sheet):b.onload==u||!b.onload||A(function(){y(b,c,d)},c))}
function x(c,d,f){function k(){c.onload!=u&&c.onload&&(c.onload=c.onerror=u,b(function(){f(c.sheet)}))}g(c,k);y(c,d,k)}function r(b,c){n(b,function(){b.onload!=u&&b.onload&&(b.onload=b.onerror=u,c(Error(M)))})}function w(b,c,d,f){var g;g=k();x(g,f,c);r(g,d);g.href=b;E.appendChild(g)}function b(b){function c(){p.readyState&&"complete"!=p.readyState?A(c,10):b()}c()}function c(b){return b.lastIndexOf(".")<=b.lastIndexOf("/")?b+".css":b}function u(){}var z="createElement",A=f.setTimeout,p=f.document,
E;f=p&&p.createStyleSheet&&!(10<=p.documentMode);var C=[],H=[],B=[],L=12,N,M="HTTP or network error.",I={};p&&(E=p.head||p.getElementsByTagName("head")[0],N=f?d:w);define("curl/plugin/css",{normalize:function(b,c){var d,f;if(!b)return b;d=b.split(",");f=[];for(var g=0,k=d.length;g<k;g++)f.push(c(d[g]));return f.join(",")},load:function(b,d,f,g){function p(b){1<n.length&&q.push(b);0==--C&&f(1==n.length?b:q)}function s(b){(f.e||function(b){throw b;})(b)}var q,n,r,C,w;q=[];n=(b||"").split(",");r=g.cssWatchPeriod||
50;g=g.cssNoWait;C=n.length;for(w=0;w<n.length;w++){b=n[w];var u;b=c(d.toUrl(b));g?(u=k(),u.href=b,E.appendChild(u),p(u.sheet||u.styleSheet)):N(b,p,s,r)}},cramPlugin:"../cram/css"})})(this);
(function(f){var k=f.document,g=/^\/\//,n;k&&(n=k.head||(k.head=k.getElementsByTagName("head")[0]));define("curl/plugin/link",{load:function(d,f,v,q){d=f.toUrl(d);d=d.lastIndexOf(".")<=d.lastIndexOf("/")?d+".css":d;q=d=(q="fixSchemalessUrls"in q?q.fixSchemalessUrls:k.location.protocol)?d.replace(g,q+"//"):d;d=k.createElement("link");d.rel="stylesheet";d.type="text/css";d.href=q;n.appendChild(d);v(d.sheet||d.styleSheet)}})})(this);
define("curl/plugin/domReady",["../domReady"],function(f){return{load:function(k,g,n){f(n)}}});(function(f){define("curl/shim/_fetchText",function(){function k(d,f,g){n.Aa(d,function(d,k){d?g(d):f(k.toString())})}function g(f,g,k){var n;f=s.parse(f,!1,!0);n="";d.get(f,function(d){d.h("data",function(b){n+=b}).h("end",function(){g(n)}).h("error",k)}).h("error",k)}var n,d,s;n=f("fs");d=f("http");s=f("url");var v;v=/^https?:/;return function(d,f,n){v.test(d)?g(d,f,n):k(d,f,n)}})})(P);define.amd.Da=!0;
(function(f,k){define("curl/shim/ssjs",["curl/_privileged","./_fetchText"],function(g,n){function d(b,c,d){try{k(b.url),c()}catch(f){d(f)}}function s(b,c,d){var g;try{g=b.url.replace(/\.js$/,""),f(g),c()}catch(k){d(k)}}function v(b,c,d){var g;b=f("url").parse(b.url,!1,!0);g="";z.get(b,function(b){b.h("data",function(b){g+=b}).h("end",function(){y(g);c()}).h("error",d)}).h("error",d)}function q(b){throw Error("ssjs: unable to load module in current environment: "+b.url);}function y(b){eval(b)}function x(b){return b&&
b.replace(c,function(b,c){return c})}var r,w,b,c,u,z,A,p;if("object"!=typeof window||!window.sa&&!window.navigator){r=g.ra;w=g.b();b=/^\w+:\/\//;c=/(^\w+:)?.*$/;"undefined"==typeof XMLHttpRequest&&(r["curl/plugin/_fetchText"]=n);u=(w.q&&":"!=w.q[w.q.length-1]?w.q+":":w.q)||x(w.p)||"http:";if(k)A=p=d;else if(f){A=s;try{z=f("http"),p=v}catch(E){p=q}}else A=p=q;"object"===typeof process&&process.la&&(g.Z.n=process.la);g.Z.m=function(c,d,f){/^\/\//.test(c.url)&&(c.url=u+c.url);return b.test(c.url)?p(c,
d,f):A(c,d,f)}}})})(P,void 0);
(function(f,k,g){define("curl/loader/cjsm11",["../plugin/_fetchText","curl/_privileged"],function(f,d){function s(d,b){s="text"in d?function(b,d){b.text=d}:function(b,d){b.appendChild(k.createTextNode(d))};s(d,b)}function v(d,b,c){c=c?"/*\n////@ sourceURL="+c.replace(/\s/g,"%20")+".js\n*/":"";return"define('"+b+"',['require','exports','module'],function(require,exports,module){"+d+"\n});\n"+c+"\n"}var q,y,x,r;y=(q=k&&(k.head||k.getElementsByTagName("head")[0]))&&q.getElementsByTagName("base")[0]||null;
x=d.core.N;r=d.core.u;v.load=function(d,b,c,u){var z,A,p;z=c.error||function(b){throw b;};A=r(b.Fa(d),u);p=!1!==u.injectSourceUrl&&A;f(A,function(f){var n;n=x(f);b(n,function(){f=v(f,d,p);if(u.injectScript){var n=f,r=k.createElement("script");s(r,n);r.charset="utf-8";q.insertBefore(r,y)}else g(f);c(b(d))},z)},z)};v.cramPlugin="../cram/cjsm11";return v})})(this,this.document,function(f){eval(f)});
define("curl/plugin/locale",function(){function f(f,d){var g;if(f&&(g=f.locale,"function"==typeof g&&(g=g(f,d)),"string"==typeof g))return g;if("undefined"==typeof window)return!1;g=window.clientInformation||window.navigator;return(g&&(g.language||g.userLanguage)||"").toLowerCase()}function k(f,d){return f.replace(g,(d?"/"+d:"")+"$&")}var g;g=/(\.js)?$/;f.toModuleId=k;f.load=function(g,d,s,v){function q(){var b=Error("Unable to find correct locale for "+g);if(s.error)s.error(b);else throw b;}var y,
x;y=f(v,g);x=v.localeToModuleId||k;v=y?x(g,y):g;try{s(d(v))}catch(r){x=y?x(g,!1):g;if(x==v)return q();try{s(d(x))}catch(w){if(!0!==y)return q();d(["i18n!"+g],s,q)}}};return f});
define("curl/plugin/i18n",["./locale"],function(f){function k(f,k,d,s,v){f([k],function(f){s(f,d)},v)}return{load:function(g,n,d,s){function v(b,c){w[c]=b;q()}function q(){var f;if(++b==c.length)if(0==w.length)y(Error('No i18n bundles found: "'+g+'", locale "'+r+'"'));else{f=w[0]||{};for(z=1;z<w.length;z++){var k=w[z],n={},q=void 0;for(q in f)n[q]=f[q];if(k)for(q in k)n[q]=k[q];f=n}d(f)}}var y,x,r,w,b,c,u,z;y=d.error;g||y(Error("blank i18n bundle id."));x=s.localeToModuleId||f.Ea;r=f(s,g);c=[g];w=
[];b=0;if(r&&!1!==s.locale)for(c=c.concat(r.split("-")),u=[],z=1;z<c.length;z++)u[z-1]=c[z],s=x(g,u.join("-")),k(n,s,z,v,q);k(n,g,0,v,q)},cramPlugin:"../cram/i18n"}});
(function(f,k,g){define("curl/loader/legacy",["curl/_privileged"],function(n){var d,s,v;d=k&&!0==k.createElement("script").async;s=n.core.m;v=/\?|\.js\b/;return{load:function(k,n,x,r){function w(){E.r="";s(E,b,c)}function b(){var b;if(!(0<--C)){if(z)try{b=z.call(f,k)}catch(d){c(Error("Factory for legacy "+k+" failed: "+d.message))}else try{b=g(u)}catch(n){c(Error("Failed to find exports "+u+" for legacy "+k))}define(k,b);x(b)}}function c(b){(x.error||function(b){throw b;})(b)}var u,z,A,p,E,C;u=r.exports||
r.a;z=r.factory||r.factory;if(!u&&!z)throw Error("`exports` or `factory` required for legacy: "+k);A=[].concat(r.requires||r.Ca||[]);r=(r=r.dontAddFileExt||r.j)?RegExp(r):v;p=n.toUrl(k);r.test(p)||(p=p.lastIndexOf(".")<=p.lastIndexOf("/")?p+".js":p);E={url:p,R:!0,r:d||!A.length?"":"text/cache"};A.length?(C=2,n(A,d?b:w,c)):C=1;s(E,b,c)},cramPlugin:"../cram/legacy"}})})(this,this.document,function(f){return(0,eval)(f)});
}).call(this);

View File

@@ -1,20 +0,0 @@
Copyright 2011-2013 John-David Dalton <http://allyoucanleet.com/>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,38 +0,0 @@
<?php
/*!
* Docdown v1.0.0-pre
* Copyright 2011-2013 John-David Dalton <http://allyoucanleet.com/>
* Available under MIT license <http://mths.be/mit>
*/
require(dirname(__FILE__) . '/src/DocDown/MarkdownGenerator.php');
/**
* Generates Markdown from JSDoc entries in a given file.
*
* @param {Array} [$options=array()] The options array.
* @returns {string} The generated Markdown.
* @example
*
* // specify a file path
* $markdown = docdown(array(
* // path to js file
* 'path' => $filepath,
* // url used to reference line numbers in code
* 'url' => 'https://github.com/username/project/blob/master/my.js'
* ));
*
* // or pass raw js
* $markdown = docdown(array(
* // raw JavaScript source
* 'source' => $rawJS,
* // documentation title
* 'title' => 'My API Documentation',
* // url used to reference line numbers in code
* 'url' => 'https://github.com/username/project/blob/master/my.js'
* ));
*/
function docdown( $options = array() ) {
$gen = new MarkdownGenerator($options);
return $gen->generate();
}
?>

View File

@@ -1,226 +0,0 @@
<?php
/**
* A class to represent a JSDoc entry alias.
*/
class Alias {
/**
* The alias owner.
*
* @memberOf Alias
* @type Object
*/
public $owner;
/*--------------------------------------------------------------------------*/
/**
* The Alias constructor.
*
* @constructor
* @param {string} $name The alias name.
* @param {Object} $owner The alias owner.
*/
public function __construct( $name, $owner ) {
$this->owner = $owner;
$this->_name = $name;
$this->_call = $owner->getCall();
$this->_category = $owner->getCategory();
$this->_desc = $owner->getDesc();
$this->_example = $owner->getExample();
$this->_isCtor = $owner->isCtor();
$this->_isLicense = $owner->isLicense();
$this->_isPlugin = $owner->isPlugin();
$this->_isPrivate = $owner->isPrivate();
$this->_isStatic = $owner->isStatic();
$this->_lineNumber = $owner->getLineNumber();
$this->_members = $owner->getMembers();
$this->_params = $owner->getParams();
$this->_returns = $owner->getReturns();
$this->_type = $owner->getType();
}
/*--------------------------------------------------------------------------*/
/**
* Extracts the entry's `alias` objects.
*
* @memberOf Alias
* @param {number} $index The index of the array value to return.
* @returns {Array|string} The entry's `alias` objects.
*/
public function getAliases( $index = null ) {
$result = array();
return $index !== null
? @$result[$index]
: $result;
}
/**
* Extracts the function call from the owner entry.
*
* @memberOf Alias
* @returns {string} The function call.
*/
public function getCall() {
return $this->_call;
}
/**
* Extracts the owner entry's `category` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `category` data.
*/
public function getCategory() {
return $this->_category;
}
/**
* Extracts the owner entry's description.
*
* @memberOf Alias
* @returns {string} The owner entry's description.
*/
public function getDesc() {
return $this->_desc;
}
/**
* Extracts the owner entry's `example` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `example` data.
*/
public function getExample() {
return $this->_example;
}
/**
* Checks if the entry is an alias.
*
* @memberOf Alias
* @returns {boolean} Returns `true`.
*/
public function isAlias() {
return true;
}
/**
* Checks if the owner entry is a constructor.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if a constructor, else `false`.
*/
public function isCtor() {
return $this->_isCtor;
}
/**
* Checks if the owner entry is a license.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if a license, else `false`.
*/
public function isLicense() {
return $this->_isLicense;
}
/**
* Checks if the owner entry *is* assigned to a prototype.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if assigned to a prototype, else `false`.
*/
public function isPlugin() {
return $this->_isPlugin;
}
/**
* Checks if the owner entry is private.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if private, else `false`.
*/
public function isPrivate() {
return $this->_isPrivate;
}
/**
* Checks if the owner entry is *not* assigned to a prototype.
*
* @memberOf Alias
* @returns {boolean} Returns `true` if not assigned to a prototype, else `false`.
*/
public function isStatic() {
return $this->_isStatic;
}
/**
* Resolves the owner entry's line number.
*
* @memberOf Alias
* @returns {number} The owner entry's line number.
*/
public function getLineNumber() {
return $this->_lineNumber;
}
/**
* Extracts the owner entry's `member` data.
*
* @memberOf Alias
* @param {number} $index The index of the array value to return.
* @returns {Array|string} The owner entry's `member` data.
*/
public function getMembers( $index = null ) {
return $index !== null
? @$this->_members[$index]
: $this->_members;
}
/**
* Extracts the owner entry's `name` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `name` data.
*/
public function getName() {
return $this->_name;
}
/**
* Extracts the owner entry's `param` data.
*
* @memberOf Alias
* @param {number} $index The index of the array value to return.
* @returns {Array} The owner entry's `param` data.
*/
public function getParams( $index = null ) {
return $index !== null
? @$this->_params[$index]
: $this->_params;
}
/**
* Extracts the owner entry's `returns` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `returns` data.
*/
public function getReturns() {
return $this->_returns;
}
/**
* Extracts the owner entry's `type` data.
*
* @memberOf Alias
* @returns {string} The owner entry's `type` data.
*/
public function getType() {
return $this->_type;
}
}
?>

View File

@@ -1,451 +0,0 @@
<?php
require(dirname(__FILE__) . "/Alias.php");
/**
* A class to simplify parsing a single JSDoc entry.
*/
class Entry {
/**
* The documentation entry.
*
* @memberOf Entry
* @type string
*/
public $entry = '';
/**
* The language highlighter used for code examples.
*
* @memberOf Entry
* @type string
*/
public $lang = '';
/**
* The source code.
*
* @memberOf Entry
* @type string
*/
public $source = '';
/*--------------------------------------------------------------------------*/
/**
* The Entry constructor.
*
* @constructor
* @param {string} $entry The documentation entry to analyse.
* @param {string} $source The source code.
* @param {string} [$lang ='js'] The language highlighter used for code examples.
*/
public function __construct( $entry, $source, $lang = 'js' ) {
$this->entry = $entry;
$this->lang = $lang;
$this->source = str_replace(PHP_EOL, "\n", $source);
}
/*--------------------------------------------------------------------------*/
/**
* Extracts the documentation entries from source code.
*
* @static
* @memberOf Entry
* @param {string} $source The source code.
* @returns {Array} The array of entries.
*/
public static function getEntries( $source ) {
preg_match_all('#/\*\*(?![-!])[\s\S]*?\*/\s*.+#', $source, $result);
return array_pop($result);
}
/*--------------------------------------------------------------------------*/
/**
* Checks if the entry is a function reference.
*
* @private
* @memberOf Entry
* @returns {boolean} Returns `true` if the entry is a function reference, else `false`.
*/
private function isFunction() {
if (!isset($this->_isFunction)) {
$this->_isFunction = !!(
$this->isCtor() ||
count($this->getParams()) ||
count($this->getReturns()) ||
preg_match('/\*[\t ]*@function\b/', $this->entry)
);
}
return $this->_isFunction;
}
/*--------------------------------------------------------------------------*/
/**
* Extracts the entry's `alias` objects.
*
* @memberOf Entry
* @param {number} $index The index of the array value to return.
* @returns {Array|string} The entry's `alias` objects.
*/
public function getAliases( $index = null ) {
if (!isset($this->_aliases)) {
preg_match('#\*[\t ]*@alias\s+(.+)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]));
$result = preg_split('/,\s*/', $result);
natsort($result);
foreach ($result as $resultIndex => $value) {
$result[$resultIndex] = new Alias($value, $this);
}
}
$this->_aliases = $result;
}
return $index !== null
? @$this->_aliases[$index]
: $this->_aliases;
}
/**
* Extracts the function call from the entry.
*
* @memberOf Entry
* @returns {string} The function call.
*/
public function getCall() {
if (isset($this->_call)) {
return $this->_call;
}
preg_match('#\*/\s*(?:function ([^(]*)|(.*?)(?=[:=,]|return\b))#', $this->entry, $result);
if ($result = array_pop($result)) {
$result = array_pop(explode('var ', trim(trim(array_pop(explode('.', $result))), "'")));
}
// resolve name
// avoid $this->getName() because it calls $this->getCall()
preg_match('#\*[\t ]*@name\s+(.+)#', $this->entry, $name);
if (count($name)) {
$name = trim($name[1]);
} else {
$name = $result;
}
// compile function call syntax
if ($this->isFunction()) {
// compose parts
$result = array($result);
$params = $this->getParams();
foreach ($params as $param) {
// skip params that are properties of other params (e.g. `options.leading`)
if (!preg_match('/\w+\.[\w.]+\s*=/', $param[1])) {
$result[] = $param[1];
}
}
// format
$result = $name .'('. implode(array_slice($result, 1), ', ') .')';
}
$this->_call = $result ? $result : $name;
return $this->_call;
}
/**
* Extracts the entry's `category` data.
*
* @memberOf Entry
* @returns {string} The entry's `category` data.
*/
public function getCategory() {
if (isset($this->_category)) {
return $this->_category;
}
preg_match('#\*[\t ]*@category\s+(.+)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]));
} else {
$result = $this->getType() == 'Function' ? 'Methods' : 'Properties';
}
$this->_category = $result;
return $result;
}
/**
* Extracts the entry's description.
*
* @memberOf Entry
* @returns {string} The entry's description.
*/
public function getDesc() {
if (isset($this->_desc)) {
return $this->_desc;
}
preg_match('#/\*\*(?:\s*\*)?([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
if (count($result)) {
$type = $this->getType();
$result = preg_replace('/:\n[\t ]*\*[\t ]*/', ":<br>\n", $result[1]);
$result = preg_replace('/(?:^|\n)[\t ]*\*\n[\t ]*\*[\t ]*/', "\n\n", $result);
$result = preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result);
$result = trim($result);
$result = ($type == 'Function' ? '' : '(' . str_replace('|', ', ', trim($type, '{}')) . '): ') . $result;
}
$this->_desc = $result;
return $result;
}
/**
* Extracts the entry's `example` data.
*
* @memberOf Entry
* @returns {string} The entry's `example` data.
*/
public function getExample() {
if (isset($this->_example)) {
return $this->_example;
}
preg_match('#\*[\t ]*@example\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', "\n", $result[1]));
$result = '```' . $this->lang . "\n" . $result . "\n```";
}
$this->_example = $result;
return $result;
}
/**
* Checks if the entry is an alias.
*
* @memberOf Entry
* @returns {boolean} Returns `false`.
*/
public function isAlias() {
return false;
}
/**
* Checks if the entry is a constructor.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if a constructor, else `false`.
*/
public function isCtor() {
if (!isset($this->_isCtor)) {
$this->_isCtor = !!preg_match('/\*[\t ]*@constructor\b/', $this->entry);
}
return $this->_isCtor;
}
/**
* Checks if the entry is a license.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if a license, else `false`.
*/
public function isLicense() {
if (!isset($this->_isLicense)) {
$this->_isLicense = !!preg_match('/\*[\t ]*@license\b/', $this->entry);
}
return $this->_isLicense;
}
/**
* Checks if the entry *is* assigned to a prototype.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if assigned to a prototype, else `false`.
*/
public function isPlugin() {
if (!isset($this->_isPlugin)) {
$this->_isPlugin = !$this->isCtor() && !$this->isPrivate() && !$this->isStatic();
}
return $this->_isPlugin;
}
/**
* Checks if the entry is private.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if private, else `false`.
*/
public function isPrivate() {
if (!isset($this->_isPrivate)) {
$this->_isPrivate = $this->isLicense() || !!preg_match('/\*[\t ]*@private\b/', $this->entry) || !preg_match('/\*[\t ]*@[a-z]+\b/', $this->entry);
}
return $this->_isPrivate;
}
/**
* Checks if the entry is *not* assigned to a prototype.
*
* @memberOf Entry
* @returns {boolean} Returns `true` if not assigned to a prototype, else `false`.
*/
public function isStatic() {
if (isset($this->_isStatic)) {
return $this->_isStatic;
}
$public = !$this->isPrivate();
$result = $public && !!preg_match('/\*[\t ]*@static\b/', $this->entry);
// set in cases where it isn't explicitly stated
if ($public && !$result) {
if ($parent = array_pop(preg_split('/[#.]/', $this->getMembers(0)))) {
foreach (Entry::getEntries($this->source) as $entry) {
$entry = new Entry($entry, $this->source);
if ($entry->getName() == $parent) {
$result = !$entry->isCtor();
break;
}
}
} else {
$result = true;
}
}
$this->_isStatic = $result;
return $result;
}
/**
* Resolves the entry's line number.
*
* @memberOf Entry
* @returns {number} The entry's line number.
*/
public function getLineNumber() {
if (!isset($this->_lineNumber)) {
preg_match_all('/\n/', substr($this->source, 0, strrpos($this->source, $this->entry) + strlen($this->entry)), $lines);
$this->_lineNumber = count(array_pop($lines)) + 1;
}
return $this->_lineNumber;
}
/**
* Extracts the entry's `member` data.
*
* @memberOf Entry
* @param {number} $index The index of the array value to return.
* @returns {Array|string} The entry's `member` data.
*/
public function getMembers( $index = null ) {
if (!isset($this->_members)) {
preg_match('#\*[\t ]*@member(?:Of)?\s+(.+)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]));
$result = preg_split('/,\s*/', $result);
natsort($result);
}
$this->_members = $result;
}
return $index !== null
? @$this->_members[$index]
: $this->_members;
}
/**
* Extracts the entry's `name` data.
*
* @memberOf Entry
* @returns {string} The entry's `name` data.
*/
public function getName() {
if (isset($this->_name)) {
return $this->_name;
}
preg_match('#\*[\t ]*@name\s+(.+)#', $this->entry, $result);
if (count($result)) {
$result = trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]));
} else {
$result = array_shift(explode('(', $this->getCall()));
}
$this->_name = $result;
return $result;
}
/**
* Extracts the entry's `param` data.
*
* @memberOf Entry
* @param {number} $index The index of the array value to return.
* @returns {Array} The entry's `param` data.
*/
public function getParams( $index = null ) {
if (!isset($this->_params)) {
preg_match_all('#\*[\t ]*@param\s+\{\(?([^})]+)\)?\}\s+(\[.+\]|[$\w|]+(?:\[.+\])?)\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#i', $this->entry, $matchTuples);
$matchTuples = array_filter(array_slice($matchTuples, 1));
$result = array();
if (count($matchTuples)) {
foreach ($matchTuples as $tupleKey => $tuple) {
foreach ($tuple as $key => $value) {
if (!isset($result[$key])) {
$result[$key] = array();
}
$result[$key][] = $tupleKey
? trim(preg_replace('/(?:^|\n)[\t ]*\*[\t ]*/', ' ', $value))
: trim($value);
}
}
}
$this->_params = $result;
}
return $index !== null
? @$this->_params[$index]
: $this->_params;
}
/**
* Extracts the entry's `returns` data.
*
* @memberOf Entry
* @returns {string} The entry's `returns` data.
*/
public function getReturns() {
if (isset($this->_returns)) {
return $this->_returns;
}
preg_match('#\*[\t ]*@returns\s+\{([^}]+)\}\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
if (count($result)) {
$result = array_map('trim', array_slice($result, 1));
$result[0] = str_replace('|', ', ', $result[0]);
$result[1] = preg_replace('/(?:^|\n)[\t ]*\*[\t ]?/', ' ', $result[1]);
}
$this->_returns = $result;
return $result;
}
/**
* Extracts the entry's `type` data.
*
* @memberOf Entry
* @returns {string} The entry's `type` data.
*/
public function getType() {
if (isset($this->_type)) {
return $this->_type;
}
preg_match('#\*[\t ]*@type\s(?:\{\(?)?([^)}\n]+)#', $this->entry, $result);
if (count($result)) {
$result = trim($result[1]);
if (preg_match('/^(?:array|function|object|regexp)$/', $result)) {
$result = ucfirst($result);
}
} else {
$result = $this->isFunction() ? 'Function' : 'unknown';
}
$this->_type = $result;
return $result;
}
}
?>

View File

@@ -1,590 +0,0 @@
<?php
require(dirname(__FILE__) . "/Entry.php");
/**
* Generates Markdown from JSDoc entries.
*/
class MarkdownGenerator {
/**
* The HTML for the close tag.
*
* @static
* @memberOf MarkdownGenerator
* @type string
*/
public $closeTag = "\n<!-- /div -->\n";
/**
* An array of JSDoc entries.
*
* @memberOf MarkdownGenerator
* @type Array
*/
public $entries = array();
/**
* The HTML for the open tag.
*
* @static
* @memberOf MarkdownGenerator
* @type string
*/
public $openTag = "\n<!-- div -->\n";
/**
* An options array used to configure the generator.
*
* @memberOf MarkdownGenerator
* @type Array
*/
public $options = array();
/**
* The file's source code.
*
* @memberOf MarkdownGenerator
* @type string
*/
public $source = '';
/*--------------------------------------------------------------------------*/
/**
* The MarkdownGenerator constructor.
*
* @constructor
* @param {string} $source The source code to parse.
* @param {Array} $options The options array.
*/
public function __construct( $source, $options = array() ) {
// juggle arguments
if (is_array($source)) {
$options = $source;
} else {
$options['source'] = $source;
}
if (isset($options['source']) && realpath($options['source'])) {
$options['path'] = $options['source'];
}
if (isset($options['path'])) {
preg_match('/(?<=\.)[a-z]+$/', $options['path'], $ext);
$options['source'] = file_get_contents($options['path']);
$ext = array_pop($ext);
if (!isset($options['lang']) && $ext) {
$options['lang'] = $ext;
}
if (!isset($options['title'])) {
$options['title'] = ucfirst(basename($options['path'])) . ' API documentation';
}
}
if (!isset($options['lang'])) {
$options['lang'] = 'js';
}
if (!isset($options['toc'])) {
$options['toc'] = 'properties';
}
$this->options = $options;
$this->source = str_replace(PHP_EOL, "\n", $options['source']);
$this->entries = Entry::getEntries($this->source);
foreach ($this->entries as $index => $value) {
$this->entries[$index] = new Entry($value, $this->source, $options['lang']);
}
}
/*--------------------------------------------------------------------------*/
/**
* Performs common string formatting operations.
*
* @private
* @static
* @memberOf MarkdownGenerator
* @param {string} $string The string to format.
* @returns {string} The formatted string.
*/
private static function format( $string ) {
$counter = 0;
// tokenize inline code snippets
preg_match_all('/`[^`]+`/', $string, $tokenized);
$tokenized = $tokenized[0];
foreach ($tokenized as $snippet) {
$string = str_replace($snippet, '__token' . ($counter++) .'__', $string);
}
// italicize parentheses
$string = preg_replace('/(^|\s)(\([^)]+\))/', '$1*$2*', $string);
// mark numbers as inline code
$string = preg_replace('/[\t ](-?\d+(?:.\d+)?)(?!\.[^\n])/', ' `$1`', $string);
// detokenize inline code snippets
$counter = 0;
foreach ($tokenized as $snippet) {
$string = str_replace('__token' . ($counter++) . '__', $snippet, $string);
}
return trim($string);
}
/**
* Escapes special Markdown characters.
*
* @private
* @memberOf Entry
* @param {string} $string The string to escape.
* @returns {string} Returns the escaped string.
*/
private function escape( $string ) {
$string = preg_replace('/(?<!\\\)\*/', '&#42;', $string);
$string = preg_replace('/(?<!\\\)\[/', '&#91;', $string);
$string = preg_replace('/(?<!\\\)\]/', '&#93;', $string);
return $string;
}
/**
* Modify a string by replacing named tokens with matching assoc. array values.
*
* @private
* @static
* @memberOf MarkdownGenerator
* @param {string} $string The string to modify.
* @param {Array|Object} $object The template object.
* @returns {string} The modified string.
*/
private static function interpolate( $string, $object ) {
preg_match_all('/#\{([^}]+)\}/', $string, $tokens);
$tokens = array_unique(array_pop($tokens));
foreach ($tokens as $token) {
$pattern = '/#\{' . preg_replace('/([.*+?^${}()|[\]\\\])/', '\\\$1', $token) . '\}/';
$replacement = '';
if (is_object($object)) {
preg_match('/\(([^)]+?)\)$/', $token, $args);
$args = preg_split('/,\s*/', array_pop($args));
$method = 'get' . ucfirst(preg_replace('/\([^)]+?\)$/', '', $token));
if (method_exists($object, $method)) {
$replacement = (string) call_user_func_array(array($object, $method), $args);
} else if (isset($object->{$token})) {
$replacement = (string) $object->{$token};
}
} else if (isset($object[$token])) {
$replacement = (string) $object[$token];
}
$string = preg_replace($pattern, trim($replacement), $string);
}
return MarkdownGenerator::format($string);
}
/*--------------------------------------------------------------------------*/
/**
* Adds the given `$entries` to the `$result` array.
*
* @private
* @memberOf MarkdownGenerator
* @param {Array} $result The result array to modify.
* @param {Array} $entries The entries to add to the `$result`.
*/
private function addEntries( &$result, $entries ) {
foreach ($entries as $entry) {
// skip aliases
if ($entry->isAlias()) {
continue;
}
// name and description
array_push(
$result,
$this->openTag,
MarkdownGenerator::interpolate("### <a id=\"#{hash}\"></a>`#{member}#{separator}#{call}`\n<a href=\"##{hash}\">#</a> [&#x24C8;](#{href} \"View in source\") [&#x24C9;][1]\n\n#{desc}", array(
'call' => $entry->getCall(),
'desc' => $this->escape($entry->getDesc()),
'hash' => $entry->hash,
'href' => $entry->href,
'member' => $entry->member,
'separator' => $entry->separator
))
);
// @alias
if (count($aliases = $entry->getAliases())) {
array_push($result, '', '#### Aliases');
foreach ($aliases as $index => $alias) {
$aliases[$index] = MarkdownGenerator::interpolate('#{member}#{separator}#{name}', $alias);
}
$result[] = '*' . implode(', ', $aliases) . '*';
}
// @param
if (count($params = $entry->getParams())) {
array_push($result, '', '#### Arguments');
foreach ($params as $index => $param) {
$result[] = MarkdownGenerator::interpolate('#{num}. `#{name}` (#{type}): #{desc}', array(
'desc' => $this->escape($param[2]),
'name' => $param[1],
'num' => $index + 1,
'type' => $this->escape($param[0])
));
}
}
// @returns
if (count($returns = $entry->getReturns())) {
array_push(
$result, '',
'#### Returns',
MarkdownGenerator::interpolate('(#{type}): #{desc}', array(
'desc' => $this->escape($returns[1]),
'type' => $this->escape($returns[0])
))
);
}
// @example
if ($example = $entry->getExample()) {
array_push($result, '', '#### Example', $example);
}
array_push($result, "\n* * *", $this->closeTag);
}
}
/**
* Resolves the entry's hash used to navigate the documentation.
*
* @private
* @memberOf MarkdownGenerator
* @param {number|Object} $entry The entry object.
* @param {string} $member The name of the member.
* @returns {string} The url hash.
*/
private function getHash( $entry, $member = '' ) {
$entry = is_numeric($entry) ? $this->entries[$entry] : $entry;
$member = !$member ? $entry->getMembers(0) : $member;
$result = ($member ? $member . ($entry->isPlugin() ? 'prototype' : '') : '') . $entry->getCall();
$result = preg_replace('/\(\[|\[\]/', '', $result);
$result = preg_replace('/[\t =|\'"{}.()\]]/', '', $result);
$result = preg_replace('/[\[#,]+/', '-', $result);
return strtolower($result);
}
/**
* Resolves the entry's url for the specific line number.
*
* @private
* @memberOf MarkdownGenerator
* @param {number|Object} $entry The entry object.
* @returns {string} The url.
*/
private function getLineUrl( $entry ) {
$entry = is_numeric($entry) ? $this->entries($entry) : $entry;
return $this->options['url'] . '#L' . $entry->getLineNumber();
}
/**
* Extracts the character used to separate the entry's name from its member.
*
* @private
* @memberOf MarkdownGenerator
* @param {number|Object} $entry The entry object.
* @returns {string} The separator.
*/
private function getSeparator( $entry ) {
$entry = is_numeric($entry) ? $this->entries($entry) : $entry;
return $entry->isPlugin() ? '.prototype.' : '.';
}
/*--------------------------------------------------------------------------*/
/**
* Generates Markdown from JSDoc entries.
*
* @memberOf MarkdownGenerator
* @returns {string} The rendered Markdown.
*/
public function generate() {
$api = array();
$byCategory = $this->options['toc'] == 'categories';
$categories = array();
$closeTag = $this->closeTag;
$compiling = false;
$openTag = $this->openTag;
$result = array('# ' . $this->options['title']);
$toc = 'toc';
// initialize $api array
foreach ($this->entries as $entry) {
// skip invalid or private entries
$name = $entry->getName();
if (!$name || $entry->isPrivate()) {
continue;
}
$members = $entry->getMembers();
$members = count($members) ? $members : array('');
foreach ($members as $member) {
// create api category arrays
if ($member && !isset($api[$member])) {
// create temporary entry to be replaced later
$api[$member] = new stdClass;
$api[$member]->static = array();
$api[$member]->plugin = array();
}
// append entry to api member
if (!$member || $entry->isCtor() || ($entry->getType() == 'Object' &&
!preg_match('/[=:]\s*(?:null|undefined)\s*[,;]?$/', $entry->entry))) {
// assign the real entry, replacing the temporary entry if it exist
$member = ($member ? $member . ($entry->isPlugin() ? '#' : '.') : '') . $name;
$entry->static = @$api[$member] ? $api[$member]->static : array();
$entry->plugin = @$api[$member] ? $api[$member]->plugin : array();
$api[$member] = $entry;
foreach ($entry->getAliases() as $alias) {
$api[$member]->static[] = $alias;
}
}
else if ($entry->isStatic()) {
$api[$member]->static[] = $entry;
foreach ($entry->getAliases() as $alias) {
$api[$member]->static[] = $alias;
}
}
else if (!$entry->isCtor()) {
$api[$member]->plugin[] = $entry;
foreach ($entry->getAliases() as $alias) {
$api[$member]->plugin[] = $alias;
}
}
}
}
// add properties to each entry
foreach ($api as $entry) {
$entry->hash = $this->getHash($entry);
$entry->href = $this->getLineUrl($entry);
$entry->separator = '';
$member = $entry->getMembers(0);
$member = ($member ? $member . $this->getSeparator($entry) : '') . $entry->getName();
$entry->member = preg_replace('/' . $entry->getName() . '$/', '', $member);
// add properties to static and plugin sub-entries
foreach (array('static', 'plugin') as $kind) {
foreach ($entry->{$kind} as $subentry) {
$subentry->hash = $this->getHash($subentry);
$subentry->href = $this->getLineUrl($subentry);
$subentry->member = $member;
$subentry->separator = $this->getSeparator($subentry);
}
}
}
/*------------------------------------------------------------------------*/
// custom sort for root level entries
// TODO: see how well it handles deeper namespace traversal
function sortCompare($a, $b) {
$score = array( 'a' => 0, 'b' => 0);
foreach (array( 'a' => $a, 'b' => $b) as $key => $value) {
// capitalized properties are last
if (preg_match('/[#.][A-Z]/', $value)) {
$score[$key] = 0;
}
// lowercase prototype properties are next to last
else if (preg_match('/#[a-z]/', $value)) {
$score[$key] = 1;
}
// lowercase static properties next to first
else if (preg_match('/\.[a-z]/', $value)) {
$score[$key] = 2;
}
// root properties are first
else if (preg_match('/^[^#.]+$/', $value)) {
$score[$key] = 3;
}
}
$score = $score['b'] - $score['a'];
return $score ? $score : strcasecmp($a, $b);
}
uksort($api, 'sortCompare');
// sort static and plugin sub-entries
foreach ($api as $entry) {
foreach (array('static', 'plugin') as $kind) {
$sortBy = array( 'a' => array(), 'b' => array(), 'c' => array() );
foreach ($entry->{$kind} as $subentry) {
$name = $subentry->getName();
// functions w/o ALL-CAPs names are last
$sortBy['a'][] = $subentry->getType() == 'Function' && !preg_match('/^[A-Z_]+$/', $name);
// ALL-CAPs properties first
$sortBy['b'][] = preg_match('/^[A-Z_]+$/', $name);
// lowercase alphanumeric sort
$sortBy['c'][] = strtolower($name);
}
array_multisort($sortBy['a'], SORT_ASC, $sortBy['b'], SORT_DESC, $sortBy['c'], SORT_ASC, $entry->{$kind});
}
}
/*------------------------------------------------------------------------*/
// add categories
foreach ($api as $entry) {
$categories[$entry->getCategory()][] = $entry;
foreach (array('static', 'plugin') as $kind) {
foreach ($entry->{$kind} as $subentry) {
$categories[$subentry->getCategory()][] = $subentry;
}
}
}
// sort categories
ksort($categories);
foreach(array('Methods', 'Properties') as $category) {
if (isset($categories[$category])) {
$entries = $categories[$category];
unset($categories[$category]);
$categories[$category] = $entries;
}
}
/*------------------------------------------------------------------------*/
// compile TOC
$result[] = $openTag;
// compile TOC by categories
if ($byCategory) {
foreach ($categories as $category => $entries) {
if ($compiling) {
$result[] = $closeTag;
} else {
$compiling = true;
}
// assign TOC hash
if (count($result) == 2) {
$toc = strtolower($category);
}
// add category
array_push(
$result,
$openTag, '## ' . (count($result) == 2 ? '<a id="' . $toc . '"></a>' : '') . '`' . $category . '`'
);
// add entries
foreach ($entries as $entry) {
$result[] = MarkdownGenerator::interpolate('* [`#{member}#{separator}#{name}`](##{hash})', $entry);
}
}
}
// compile TOC by namespace
else {
foreach ($api as $entry) {
if ($compiling) {
$result[] = $closeTag;
} else {
$compiling = true;
}
$member = $entry->member . $entry->getName();
// assign TOC hash
if (count($result) == 2) {
$toc = $member;
}
// add root entry
array_push(
$result,
$openTag, '## ' . (count($result) == 2 ? '<a id="' . $toc . '"></a>' : '') . '`' . $member . '`',
MarkdownGenerator::interpolate('* [`' . $member . '`](##{hash})', $entry)
);
// add static and plugin sub-entries
foreach (array('static', 'plugin') as $kind) {
if ($kind == 'plugin' && count($entry->plugin)) {
array_push(
$result,
$closeTag,
$openTag,
'## `' . $member . ($entry->isCtor() ? '.prototype`' : '`')
);
}
foreach ($entry->{$kind} as $subentry) {
$subentry->member = $member;
$result[] = MarkdownGenerator::interpolate('* [`#{member}#{separator}#{name}`](##{hash})', $subentry);
}
}
}
}
array_push($result, $closeTag, $closeTag);
/*------------------------------------------------------------------------*/
// compile content
$compiling = false;
$result[] = $openTag;
if ($byCategory) {
foreach ($categories as $category => $entries) {
if ($compiling) {
$result[] = $closeTag;
} else {
$compiling = true;
}
if ($category != 'Methods' && $category != 'Properties') {
$category = '“' . $category . '” Methods';
}
array_push($result, $openTag, '## `' . $category . '`');
$this->addEntries($result, $entries);
}
}
else {
foreach ($api as $entry) {
// skip aliases
if ($entry->isAlias()) {
continue;
}
if ($compiling) {
$result[] = $closeTag;
} else {
$compiling = true;
}
// add root entry name
$member = $entry->member . $entry->getName();
array_push($result, $openTag, '## `' . $member . '`');
foreach (array($entry, 'static', 'plugin') as $kind) {
$subentries = is_string($kind) ? $entry->{$kind} : array($kind);
// add sub-entry name
if ($kind != 'static' && $entry->getType() != 'Object' &&
count($subentries) && $subentries[0] != $kind) {
if ($kind == 'plugin') {
$result[] = $closeTag;
}
array_push(
$result,
$openTag,
'## `' . $member . ($kind == 'plugin' ? '.prototype`' : '`')
);
}
$this->addEntries($result, $subentries);
}
}
}
// close tags add TOC link reference
array_push($result, $closeTag, $closeTag, '', ' [1]: #' . $toc . ' "Jump back to the TOC."');
// cleanup whitespace
return trim(preg_replace('/[\t ]+\n/', "\n", join($result, "\n")));
}
}
?>

195
vendor/dojo/LICENSE vendored
View File

@@ -1,195 +0,0 @@
Dojo is available under *either* the terms of the modified BSD license *or* the
Academic Free License version 2.1. As a recipient of Dojo, you may choose which
license to receive this code under (except as noted in per-module LICENSE
files). Some modules may not be the copyright of the Dojo Foundation. These
modules contain explicit declarations of copyright in both the LICENSE files in
the directories in which they reside and in the code itself. No external
contributions are allowed under licenses which are fundamentally incompatible
with the AFL or BSD licenses that Dojo is distributed under.
The text of the AFL and BSD licenses is reproduced below.
-------------------------------------------------------------------------------
The "New" BSD License:
**********************
Copyright (c) 2005-2013, The Dojo Foundation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the Dojo Foundation nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-------------------------------------------------------------------------------
The Academic Free License, v. 2.1:
**********************************
This Academic Free License (the "License") applies to any original work of
authorship (the "Original Work") whose owner (the "Licensor") has placed the
following notice immediately following the copyright notice for the Original
Work:
Licensed under the Academic Free License version 2.1
1) Grant of Copyright License. Licensor hereby grants You a world-wide,
royalty-free, non-exclusive, perpetual, sublicenseable license to do the
following:
a) to reproduce the Original Work in copies;
b) to prepare derivative works ("Derivative Works") based upon the Original
Work;
c) to distribute copies of the Original Work and Derivative Works to the
public;
d) to perform the Original Work publicly; and
e) to display the Original Work publicly.
2) Grant of Patent License. Licensor hereby grants You a world-wide,
royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
claims owned or controlled by the Licensor that are embodied in the Original
Work as furnished by the Licensor, to make, use, sell and offer for sale the
Original Work and Derivative Works.
3) Grant of Source Code License. The term "Source Code" means the preferred
form of the Original Work for making modifications to it and all available
documentation describing how to modify the Original Work. Licensor hereby
agrees to provide a machine-readable copy of the Source Code of the Original
Work along with each copy of the Original Work that Licensor distributes.
Licensor reserves the right to satisfy this obligation by placing a
machine-readable copy of the Source Code in an information repository
reasonably calculated to permit inexpensive and convenient access by You for as
long as Licensor continues to distribute the Original Work, and by publishing
the address of that information repository in a notice immediately following
the copyright notice that applies to the Original Work.
4) Exclusions From License Grant. Neither the names of Licensor, nor the names
of any contributors to the Original Work, nor any of their trademarks or
service marks, may be used to endorse or promote products derived from this
Original Work without express prior written permission of the Licensor. Nothing
in this License shall be deemed to grant any rights to trademarks, copyrights,
patents, trade secrets or any other intellectual property of Licensor except as
expressly stated herein. No patent license is granted to make, use, sell or
offer to sell embodiments of any patent claims other than the licensed claims
defined in Section 2. No right is granted to the trademarks of Licensor even if
such marks are included in the Original Work. Nothing in this License shall be
interpreted to prohibit Licensor from licensing under different terms from this
License any Original Work that Licensor otherwise would have a right to
license.
5) This section intentionally omitted.
6) Attribution Rights. You must retain, in the Source Code of any Derivative
Works that You create, all copyright, patent or trademark notices from the
Source Code of the Original Work, as well as any notices of licensing and any
descriptive text identified therein as an "Attribution Notice." You must cause
the Source Code for any Derivative Works that You create to carry a prominent
Attribution Notice reasonably calculated to inform recipients that You have
modified the Original Work.
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
the copyright in and to the Original Work and the patent rights granted herein
by Licensor are owned by the Licensor or are sublicensed to You under the terms
of this License with the permission of the contributor(s) of those copyrights
and patent rights. Except as expressly stated in the immediately proceeding
sentence, the Original Work is provided under this License on an "AS IS" BASIS
and WITHOUT WARRANTY, either express or implied, including, without limitation,
the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No
license to Original Work is granted hereunder except under this disclaimer.
8) Limitation of Liability. Under no circumstances and under no legal theory,
whether in tort (including negligence), contract, or otherwise, shall the
Licensor be liable to any person for any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License
or the use of the Original Work including, without limitation, damages for loss
of goodwill, work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses. This limitation of liability shall not
apply to liability for death or personal injury resulting from Licensor's
negligence to the extent applicable law prohibits such limitation. Some
jurisdictions do not allow the exclusion or limitation of incidental or
consequential damages, so this exclusion and limitation may not apply to You.
9) Acceptance and Termination. If You distribute copies of the Original Work or
a Derivative Work, You must make a reasonable effort under the circumstances to
obtain the express assent of recipients to the terms of this License. Nothing
else but this License (or another written agreement between Licensor and You)
grants You permission to create Derivative Works based upon the Original Work
or to exercise any of the rights granted in Section 1 herein, and any attempt
to do so except under the terms of this License (or another written agreement
between Licensor and You) is expressly prohibited by U.S. copyright law, the
equivalent laws of other countries, and by international treaty. Therefore, by
exercising any of the rights granted to You in Section 1 herein, You indicate
Your acceptance of this License and all of its terms and conditions.
10) Termination for Patent Action. This License shall terminate automatically
and You may no longer exercise any of the rights granted to You by this License
as of the date You commence an action, including a cross-claim or counterclaim,
against Licensor or any licensee alleging that the Original Work infringes a
patent. This termination provision shall not apply for an action alleging
patent infringement by combinations of the Original Work with other software or
hardware.
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
License may be brought only in the courts of a jurisdiction wherein the
Licensor resides or in which Licensor conducts its primary business, and under
the laws of that jurisdiction excluding its conflict-of-law provisions. The
application of the United Nations Convention on Contracts for the International
Sale of Goods is expressly excluded. Any use of the Original Work outside the
scope of this License or after its termination shall be subject to the
requirements and penalties of the U.S. Copyright Act, 17 U.S.C. § 101 et
seq., the equivalent laws of other countries, and international treaty. This
section shall survive the termination of this License.
12) Attorneys Fees. In any action to enforce the terms of this License or
seeking damages relating thereto, the prevailing party shall be entitled to
recover its costs and expenses, including, without limitation, reasonable
attorneys' fees and costs incurred in connection with such action, including
any appeal of such action. This section shall survive the termination of this
License.
13) Miscellaneous. This License represents the complete agreement concerning
the subject matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent necessary to
make it enforceable.
14) Definition of "You" in This License. "You" throughout this License, whether
in upper or lower case, means an individual or a legal entity exercising rights
under, and complying with all of the terms of, this License. For legal
entities, "You" includes any entity that controls, is controlled by, or is
under common control with you. For purposes of this definition, "control" means
(i) the power, direct or indirect, to cause the direction or management of such
entity, whether by contract or otherwise, or (ii) ownership of fifty percent
(50%) or more of the outstanding shares, or (iii) beneficial ownership of such
entity.
15) Right to Use. You may use the Original Work in all ways not otherwise
restricted or conditioned by this License or by law, and Licensor promises not
to interfere with or be responsible for such uses by You.
This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved.
Permission is hereby granted to copy and distribute this license without
modification. This license may not be modified without the express written
permission of its copyright owner.

1997
vendor/dojo/dojo.js vendored

File diff suppressed because it is too large Load Diff

0
vendor/firebug-lite/license.txt vendored Executable file → Normal file
View File

0
vendor/firebug-lite/skin/xp/blank.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

0
vendor/firebug-lite/skin/xp/buttonBg.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 167 B

0
vendor/firebug-lite/skin/xp/buttonBgHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 171 B

After

Width:  |  Height:  |  Size: 171 B

0
vendor/firebug-lite/skin/xp/debugger.css vendored Executable file → Normal file
View File

0
vendor/firebug-lite/skin/xp/detach.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 655 B

0
vendor/firebug-lite/skin/xp/detachHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 586 B

0
vendor/firebug-lite/skin/xp/disable.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 340 B

0
vendor/firebug-lite/skin/xp/disable.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 543 B

After

Width:  |  Height:  |  Size: 543 B

0
vendor/firebug-lite/skin/xp/disableHover.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 344 B

After

Width:  |  Height:  |  Size: 344 B

0
vendor/firebug-lite/skin/xp/disableHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 512 B

After

Width:  |  Height:  |  Size: 512 B

0
vendor/firebug-lite/skin/xp/down.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 637 B

After

Width:  |  Height:  |  Size: 637 B

0
vendor/firebug-lite/skin/xp/downActive.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 543 B

After

Width:  |  Height:  |  Size: 543 B

0
vendor/firebug-lite/skin/xp/downHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 526 B

After

Width:  |  Height:  |  Size: 526 B

0
vendor/firebug-lite/skin/xp/errorIcon-sm.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 447 B

After

Width:  |  Height:  |  Size: 447 B

0
vendor/firebug-lite/skin/xp/errorIcon.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 365 B

0
vendor/firebug-lite/skin/xp/errorIcon.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 457 B

After

Width:  |  Height:  |  Size: 457 B

28
vendor/firebug-lite/skin/xp/firebug-1.3a2.css vendored Executable file → Normal file
View File

@@ -70,7 +70,7 @@ html, body {
body {
font-family: Lucida Grande, Tahoma, sans-serif;
font-size: 11px;
background: #fff;
background: #fff;
}
.clear {
@@ -103,7 +103,7 @@ body {
border: 1px solid #ccc;
margin: 0 5px 0 0;
background: #fff url(search.png) no-repeat 4px 2px;
padding-left: 20px;
padding-left: 20px;
font-size: 11px;
}
@@ -124,7 +124,7 @@ body {
height: 14px;
background: url(errorIcon.png) no-repeat;
color: #f00;
font-weight: bold;
font-weight: bold;
}
#fbMiniErrors {
@@ -139,7 +139,7 @@ body {
margin: 3px 4px 0;
height: 20px;
width: 20px;
float: right;
float: right;
background: url(sprite.png) 0 -135px;
cursor: pointer;
}
@@ -192,10 +192,10 @@ body {
}
/************************************************************************************************
Sub-Layout
Sub-Layout
*************************************************************************************************/
/* fbToolbar
/* fbToolbar
*************************************************************************************************/
#fbToolbarIcon {
float: left;
@@ -237,7 +237,7 @@ body {
position: relative;
top: 5px;
line-height: 19px;
cursor: default;
cursor: default;
}
.fbToolbarSeparator{
@@ -262,7 +262,7 @@ body {
.fbStatusBar span a:hover {
color: blue;
cursor: pointer;
cursor: pointer;
}
@@ -307,7 +307,7 @@ body {
padding-left: 10px;
}
/* body
/* body
*************************************************************************************************/
.fbPanel {
display: none;
@@ -340,7 +340,7 @@ body {
visibility: hidden !important;
}
/* fbBottom
/* fbBottom
*************************************************************************************************/
#fbCommand {
@@ -391,7 +391,7 @@ div.fbFitHeight {
Layout Controls
*************************************************************************************************/
/* fbToolbar buttons
/* fbToolbar buttons
*************************************************************************************************/
#fbWindowButtons a {
font-size: 1px;
@@ -420,7 +420,7 @@ div.fbFitHeight {
background: url(sprite.png) -48px -119px;
}
/* fbPanelBarBox tabs
/* fbPanelBarBox tabs
*************************************************************************************************/
.fbTab {
text-decoration: none;
@@ -475,7 +475,7 @@ a.fbTab:hover .fbTabR {
background: url(sprite.png) -8px -96px !important;
}
/* splitters
/* splitters
*************************************************************************************************/
#fbHSplitter {
position: absolute;
@@ -571,7 +571,7 @@ div.objectBox-element {
color: #fff !important;
}
/* Webkit CSS Hack - bug in "highlight" named color */
/* Webkit CSS Hack - bug in "highlight" named color */
@media screen and (-webkit-min-device-pixel-ratio:0) {
.selectedElement{
background: #316AC5;

0
vendor/firebug-lite/skin/xp/firebug.IE6.css vendored Executable file → Normal file
View File

68
vendor/firebug-lite/skin/xp/firebug.css vendored Executable file → Normal file
View File

@@ -136,10 +136,10 @@ h1.groupHeader {
position: relative;
top: -7px;
left: -5px;
outline: none;
resize: none;
/*
_border: 1px solid #999 !important;
_padding: 1px !important;
@@ -311,17 +311,17 @@ h1.groupHeader {
outline: none;
background-color: transparent
}
.useA11y .a11yCSSView .focusRow:focus .cssSelector,
.useA11y .a11yCSSView .focusRow:focus .cssPropName,
.useA11y .a11yCSSView .focusRow:focus .cssSelector,
.useA11y .a11yCSSView .focusRow:focus .cssPropName,
.useA11y .a11yCSSView .focusRow:focus .cssPropValue,
.useA11y .a11yCSSView .computedStyleRow:focus,
.useA11y .a11yCSSView .computedStyleRow:focus,
.useA11y .a11yCSSView .groupHeader:focus {
outline: 2px solid #FF9933;
outline-offset: -2px;
background-color: #FFFFD6;
}
.useA11y .a11yCSSView .groupHeader:focus {
outline-offset: -2px;
}
@@ -731,7 +731,7 @@ h1.groupHeader {
/* Time Info tip */
.timeInfoTip {
width: 150px;
width: 150px;
height: 40px
}
@@ -944,7 +944,7 @@ h1.groupHeader {
/*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
}
/* replaced by .netInfoTextSelected for IE6 support
/* replaced by .netInfoTextSelected for IE6 support
.netInfoText[selected="true"] {
display: block;
}
@@ -963,7 +963,7 @@ h1.groupHeader {
}
.netInfoPostText .netInfoParamName {
width: 1px; /* Google Chrome need this otherwise the first column of
width: 1px; /* Google Chrome need this otherwise the first column of
the post variables table will be larger than expected */
}
@@ -1148,7 +1148,7 @@ h1.groupHeader {
}
* html .opened .spyHead .spyTitle,
* html .opened .logGroupLabel,
* html .opened .logGroupLabel,
* html .opened .memberLabelCell .memberLabel {
background-image: url(tree_close.gif);
background-repeat: no-repeat;
@@ -1677,7 +1677,7 @@ h1.groupHeader {
/*
.logRow-errorMessage > .hasTwisty > .errorTitle,
.logRow-spy .spyHead .spyTitle,
.logGroup > .logRow
.logGroup > .logRow
*/
.logRow-errorMessage .hasTwisty .errorTitle,
.logRow-spy .spyHead .spyTitle,
@@ -2056,11 +2056,11 @@ h1.groupHeader {
width: 10px;
height: 10px;
margin-top: 6px;
background: url(tabMenuTarget.png);
background: url(tabMenuTarget.png);
}
.fbTabMenuTarget:hover {
background: url(tabMenuTargetHover.png);
background: url(tabMenuTargetHover.png);
}
.fbShadow {
@@ -2098,7 +2098,7 @@ h1.groupHeader {
padding: 1px 18px 0;
text-decoration: none;
color: #000;
cursor: default;
cursor: default;
background: #ACA899;
margin: 4px 0;
}
@@ -2149,7 +2149,7 @@ h1.groupHeader {
}
.fbMenuShortcut {
padding-right: 85px;
padding-right: 85px;
}
.fbMenuShortcutKey {
@@ -2274,7 +2274,7 @@ h1.groupHeader {
margin: 0;
padding: 0;
overflow: hidden;
font-family: Lucida Grande, Tahoma, sans-serif;
font-size: 11px;
background: #fff;
@@ -2311,7 +2311,7 @@ h1.groupHeader {
margin: 0 5px 0 0;
background: #fff url(search.png) no-repeat 4px 2px !important;
background: #fff url(search.gif) no-repeat 4px 2px;
padding-left: 20px;
padding-left: 20px;
font-size: 11px;
}
@@ -2333,7 +2333,7 @@ h1.groupHeader {
background: url(errorIcon.png) no-repeat !important;
background: url(errorIcon.gif) no-repeat;
color: #f00;
font-weight: bold;
font-weight: bold;
}
#fbMiniErrors {
@@ -2348,7 +2348,7 @@ h1.groupHeader {
margin: 3px 4px 0;
height: 20px;
width: 20px;
float: right;
float: right;
background: url(sprite.png) 0 -135px;
cursor: pointer;
}
@@ -2403,10 +2403,10 @@ h1.groupHeader {
}
/************************************************************************************************
Sub-Layout
Sub-Layout
*************************************************************************************************/
/* fbToolbar
/* fbToolbar
*************************************************************************************************/
#fbToolbarIcon {
float: left;
@@ -2472,7 +2472,7 @@ h1.groupHeader {
#fbStatusBarBox {
top: 4px;
cursor: default;
cursor: default;
}
.fbToolbarSeparator {
@@ -2500,7 +2500,7 @@ h1.groupHeader {
.fbStatusBar a:hover {
color: blue;
cursor: pointer;
cursor: pointer;
}
@@ -2545,7 +2545,7 @@ h1.groupHeader {
padding-left: 4px;
}
/* body
/* body
*************************************************************************************************/
.fbPanel {
display: none;
@@ -2609,7 +2609,7 @@ h1.groupHeader {
position: absolute;
right: 2px;
bottom: 3px;
z-index: 99;
}
@@ -2624,7 +2624,7 @@ h1.groupHeader {
visibility: hidden !important;
}
/* fbBottom
/* fbBottom
*************************************************************************************************/
#fbCommand {
@@ -2689,7 +2689,7 @@ div.fbFitHeight {
Layout Controls
*************************************************************************************************/
/* fbToolbar buttons
/* fbToolbar buttons
*************************************************************************************************/
.fbSmallButton {
overflow: hidden;
@@ -2729,7 +2729,7 @@ div.fbFitHeight {
}
/* fbPanelBarBox tabs
/* fbPanelBarBox tabs
*************************************************************************************************/
.fbTab {
text-decoration: none;
@@ -2785,7 +2785,7 @@ a.fbTab:hover .fbTabR {
background: url(sprite.png) -8px -96px !important;
}
/* splitters
/* splitters
*************************************************************************************************/
#fbHSplitter {
position: fixed;
@@ -2888,7 +2888,7 @@ div.objectBox-element {
position: relative;
}
/* Webkit CSS Hack - bug in "highlight" named color */
/* Webkit CSS Hack - bug in "highlight" named color */
@media screen and (-webkit-min-device-pixel-ratio:0) {
.selectedElement{
background: #316AC5;
@@ -2903,7 +2903,7 @@ div.objectBox-element {
}
/* TODO: remove this? */
/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to
/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to
position. if so, override it at chrome.js initialization when creating the div */
.logRow {
position: relative;
@@ -2939,9 +2939,9 @@ position. if so, override it at chrome.js initialization when creating the div *
.objectBox-string {
color: red;
/* TODO: xxxpedro make long strings break line */
/*white-space: pre; */
/*white-space: pre; */
}
.objectBox-number {

80
vendor/firebug-lite/skin/xp/firebug.html vendored Executable file → Normal file
View File

@@ -14,71 +14,71 @@
<tr>
<!-- Interface - Top Area -->
<td id="fbTop" colspan="2">
<!--
<!--
<div>
--><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!--
--><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!--
<input type="text" id="fbToolbarSearch" />
</div>
-->
<!-- Window Buttons -->
<div id="fbWindowButtons">
<a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
<a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
<a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
</div>
<!-- Toolbar buttons and Status Bar -->
<div id="fbToolbar">
<div id="fbToolbarContent">
<!-- Firebug Button -->
<span id="fbToolbarIcon">
<a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
</span>
<!--
<!--
<span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
-->
<!-- Toolbar Buttons -->
<span id="fbToolbarButtons">
<!-- Fixed Toolbar Buttons -->
<span id="fbFixedButtons">
<a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
</span>
<!-- Console Panel Toolbar Buttons -->
<span id="fbConsoleButtons" class="fbToolbarButtons">
<a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
</span>
<!-- HTML Panel Toolbar Buttons -->
<!--
<!--
<span id="fbHTMLButtons" class="fbToolbarButtons">
<a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
</span>
-->
</span>
<!-- Status Bar -->
<span id="fbStatusBarBox">
<span class="fbToolbarSeparator"></span>
<!-- HTML Panel Status Bar -->
<!--
<!--
<span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
</span>
-->
</span>
</div>
</div>
<!-- PanelBars -->
<div id="fbPanelBarBox">
<!-- Main PanelBar -->
<div id="fbPanelBar1" class="fbPanelBar">
<a id="fbConsoleTab" class="fbTab fbHover">
@@ -112,7 +112,7 @@
<!-- Side PanelBars -->
<div id="fbPanelBar2Box" class="hide">
<div id="fbPanelBar2" class="fbPanelBar">
<!--
<!--
<a class="fbTab fbHover">
<span class="fbTabL"></span>
<span class="fbTabText">Style</span>
@@ -131,18 +131,18 @@
-->
</div>
</div>
</div>
<!-- Horizontal Splitter -->
<div id="fbHSplitter">&nbsp;</div>
</td>
</tr>
<!-- Interface - Main Area -->
<tr id="fbContent">
<!-- Panels -->
<td id="fbPanelBox1">
<div id="fbPanel1" class="fbFitHeight">
@@ -150,41 +150,41 @@
<div id="fbHTML" class="fbPanel"></div>
</div>
</td>
<!-- Side Panel Box -->
<td id="fbPanelBox2" class="hide">
<!-- VerticalSplitter -->
<div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
<!-- Side Panels -->
<div id="fbPanel2" class="fbFitHeight">
<!-- HTML Side Panels -->
<div id="fbHTML_Style" class="fbPanel"></div>
<div id="fbHTML_Layout" class="fbPanel"></div>
<div id="fbHTML_DOM" class="fbPanel"></div>
</div>
<!-- Large Command Line -->
<textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
<!-- Large Command Line Buttons -->
<div id="fbLargeCommandButtons">
<a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
<a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
<a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
</div>
</td>
</tr>
<!-- Interface - Bottom Area -->
<tr id="fbBottom" class="hide">
<!-- Command Line -->
<td id="fbCommand" colspan="2">
<div id="fbCommandBox">
@@ -193,18 +193,18 @@
<a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
</div>
</td>
</tr>
</tbody>
</table>
</table>
<span id="fbMiniChrome">
<span id="fbMiniContent">
<span id="fbMiniIcon" title="Open Firebug Lite"></span>
<span id="fbMiniErrors" class="fbErrors"><!-- 2 errors --></span>
</span>
</span>
<!--
<!--
<div id="fbErrorPopup">
<div id="fbErrorPopupContent">
<div id="fbErrorIndicator" class="fbErrors">2 errors</div>

0
vendor/firebug-lite/skin/xp/firebug.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
vendor/firebug-lite/skin/xp/group.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 158 B

After

Width:  |  Height:  |  Size: 158 B

0
vendor/firebug-lite/skin/xp/html.css vendored Executable file → Normal file
View File

0
vendor/firebug-lite/skin/xp/infoIcon.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 359 B

0
vendor/firebug-lite/skin/xp/infoIcon.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 524 B

After

Width:  |  Height:  |  Size: 524 B

0
vendor/firebug-lite/skin/xp/loading_16.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
vendor/firebug-lite/skin/xp/min.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 552 B

After

Width:  |  Height:  |  Size: 552 B

0
vendor/firebug-lite/skin/xp/minHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 485 B

After

Width:  |  Height:  |  Size: 485 B

0
vendor/firebug-lite/skin/xp/off.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 742 B

After

Width:  |  Height:  |  Size: 742 B

0
vendor/firebug-lite/skin/xp/offHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 680 B

After

Width:  |  Height:  |  Size: 680 B

0
vendor/firebug-lite/skin/xp/pixel_transparent.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

0
vendor/firebug-lite/skin/xp/roundCorner.svg vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 228 B

0
vendor/firebug-lite/skin/xp/search.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 550 B

After

Width:  |  Height:  |  Size: 550 B

0
vendor/firebug-lite/skin/xp/search.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 685 B

After

Width:  |  Height:  |  Size: 685 B

0
vendor/firebug-lite/skin/xp/shadow.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

0
vendor/firebug-lite/skin/xp/shadow2.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

0
vendor/firebug-lite/skin/xp/shadowAlpha.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

0
vendor/firebug-lite/skin/xp/sprite.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

0
vendor/firebug-lite/skin/xp/tabHoverLeft.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 438 B

After

Width:  |  Height:  |  Size: 438 B

0
vendor/firebug-lite/skin/xp/tabHoverMid.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 261 B

0
vendor/firebug-lite/skin/xp/tabHoverRight.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 436 B

After

Width:  |  Height:  |  Size: 436 B

0
vendor/firebug-lite/skin/xp/tabLeft.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 449 B

After

Width:  |  Height:  |  Size: 449 B

0
vendor/firebug-lite/skin/xp/tabMenuCheckbox.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 220 B

0
vendor/firebug-lite/skin/xp/tabMenuPin.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 207 B

Some files were not shown because too many files have changed in this diff Show More