diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 730cafb48..89e11a1dd 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -2,7 +2,7 @@ fs = require 'fs' path = require 'path' fm = require 'json-front-matter' -_ = require 'underscore' +_ = require 'underscore-plus' packageJson = require './package.json' diff --git a/exports/atom.coffee b/exports/atom.coffee index 618f4b840..0b41a15ff 100644 --- a/exports/atom.coffee +++ b/exports/atom.coffee @@ -1,8 +1,12 @@ {View, $$, $$$} = require '../src/space-pen-extensions' {Document, Point, Range, Site} = require 'telepath' +_ = require 'underscore-plus' + +#TODO Remove once all packages have been updated +_.nextTick = setImmediate module.exports = - _: require '../src/underscore-extensions' + _: _ $: require '../src/jquery-extensions' $$: $$ $$$: $$$ diff --git a/package.json b/package.json index 5f5a55c6a..f4dbe3054 100644 --- a/package.json +++ b/package.json @@ -35,10 +35,9 @@ "season": "0.13.0", "semver": "1.1.4", "space-pen": "1.3.0", - "tantamount": "0.5.0", "telepath": "0.8.1", "temp": "0.5.0", - "underscore": "1.4.4", + "underscore-plus": "0.2.0", "atom-light-ui": "0.4.0", "atom-light-syntax": "0.4.0", diff --git a/spec/atom-reporter.coffee b/spec/atom-reporter.coffee index 4f0d9fed2..05a729588 100644 --- a/spec/atom-reporter.coffee +++ b/spec/atom-reporter.coffee @@ -1,6 +1,6 @@ $ = require 'jquery' {View, $$} = require 'space-pen' -_ = require 'underscore' +_ = require 'underscore-plus' {convertStackTrace} = require 'coffeestack' sourceMaps = {} diff --git a/spec/text-mate-grammar-spec.coffee b/spec/text-mate-grammar-spec.coffee index d8cf67f23..33ef67a22 100644 --- a/spec/text-mate-grammar-spec.coffee +++ b/spec/text-mate-grammar-spec.coffee @@ -2,7 +2,7 @@ TextMateGrammar = require '../src/text-mate-grammar' TextMatePackage = require '../src/text-mate-package' {_, fs} = require 'atom' -describe "TextMateGrammar", -> +fdescribe "TextMateGrammar", -> grammar = null beforeEach -> @@ -214,7 +214,7 @@ describe "TextMateGrammar", -> atom.activatePackage('html-tmbundle', sync: true) atom.activatePackage('ruby-on-rails-tmbundle', sync: true) - grammar = syntax.selectGrammar('foo.html.erb') + grammar = syntax.grammarForScopeName('text.html.ruby') {tokens} = grammar.tokenizeLine("
<%= User.find(2).full_name %>
") expect(tokens[0]).toEqual value: '<', scopes: ["text.html.ruby","meta.tag.block.any.html","punctuation.definition.tag.begin.html"] @@ -263,7 +263,7 @@ describe "TextMateGrammar", -> atom.deactivatePackage('html-tmbundle') atom.activatePackage('ruby-on-rails-tmbundle', sync: true) - grammar = syntax.selectGrammar('foo.html.erb') + grammar = syntax.grammarForScopeName('text.html.ruby') {tokens} = grammar.tokenizeLine("
<%= User.find(2).full_name %>
") expect(tokens[0]).toEqual value: "
", scopes: ["text.html.ruby"] expect(tokens[1]).toEqual value: '<%=', scopes: ["text.html.ruby","source.ruby.rails.embedded.html","punctuation.section.embedded.ruby"] diff --git a/spec/underscore-extensions-spec.coffee b/spec/underscore-extensions-spec.coffee deleted file mode 100644 index d108474aa..000000000 --- a/spec/underscore-extensions-spec.coffee +++ /dev/null @@ -1,117 +0,0 @@ -{_} = require 'atom' - -describe "underscore extensions", -> - describe "_.adviseBefore", -> - [object, calls] = [] - - beforeEach -> - calls = [] - object = { - method: (args...) -> - calls.push(["original", this, args]) - } - - it "calls the given function before the advised method", -> - _.adviseBefore object, 'method', (args...) -> calls.push(["advice", this, args]) - object.method(1, 2, 3) - expect(calls).toEqual [['advice', object, [1, 2, 3]], ['original', object, [1, 2, 3]]] - - it "cancels the original method's invocation if the advice returns true", -> - _.adviseBefore object, 'method', -> false - object.method(1, 2, 3) - expect(calls).toEqual [] - - describe "_.endsWith", -> - it "returns whether the given string ends with the given suffix", -> - expect(_.endsWith("test.txt", ".txt")).toBeTruthy() - expect(_.endsWith("test.txt", "txt")).toBeTruthy() - expect(_.endsWith("test.txt", "test.txt")).toBeTruthy() - expect(_.endsWith("test.txt", "")).toBeTruthy() - expect(_.endsWith("test.txt", ".txt2")).toBeFalsy() - expect(_.endsWith("test.txt", ".tx")).toBeFalsy() - expect(_.endsWith("test.txt", "test")).toBeFalsy() - - describe "_.camelize(string)", -> - it "converts `string` to camel case", -> - expect(_.camelize("corey_dale_johnson")).toBe "coreyDaleJohnson" - expect(_.camelize("corey-dale-johnson")).toBe "coreyDaleJohnson" - expect(_.camelize("corey_dale-johnson")).toBe "coreyDaleJohnson" - expect(_.camelize("coreyDaleJohnson")).toBe "coreyDaleJohnson" - expect(_.camelize("CoreyDaleJohnson")).toBe "CoreyDaleJohnson" - - describe "_.dasherize(string)", -> - it "converts `string` to use dashes", -> - expect(_.dasherize("corey_dale_johnson")).toBe "corey-dale-johnson" - expect(_.dasherize("coreyDaleJohnson")).toBe "corey-dale-johnson" - expect(_.dasherize("CoreyDaleJohnson")).toBe "corey-dale-johnson" - expect(_.dasherize("corey-dale-johnson")).toBe "corey-dale-johnson" - - describe "_.underscore(string)", -> - it "converts `string` to use underscores", -> - expect(_.underscore("corey-dale-johnson")).toBe "corey_dale_johnson" - expect(_.underscore("coreyDaleJohnson")).toBe "corey_dale_johnson" - expect(_.underscore("CoreyDaleJohnson")).toBe "corey_dale_johnson" - expect(_.underscore("corey_dale_johnson")).toBe "corey_dale_johnson" - - describe "spliceWithArray(originalArray, start, length, insertedArray, chunkSize)", -> - describe "when the inserted array is smaller than the chunk size", -> - it "splices the array in place", -> - array = ['a', 'b', 'c'] - _.spliceWithArray(array, 1, 1, ['v', 'w', 'x', 'y', 'z'], 100) - expect(array).toEqual ['a', 'v', 'w', 'x', 'y', 'z', 'c'] - - describe "when the inserted array is larger than the chunk size", -> - it "splices the array in place one chunk at a time (to avoid stack overflows)", -> - array = ['a', 'b', 'c'] - _.spliceWithArray(array, 1, 1, ['v', 'w', 'x', 'y', 'z'], 2) - expect(array).toEqual ['a', 'v', 'w', 'x', 'y', 'z', 'c'] - - describe "_.humanizeEventName(eventName)", -> - describe "when no namespace exists", -> - it "undasherizes and capitalizes the event name", -> - expect(_.humanizeEventName('nonamespace')).toBe 'Nonamespace' - expect(_.humanizeEventName('no-name-space')).toBe 'No Name Space' - - describe "when a namespaces exists", -> - it "space separates the undasherized/capitalized versions of the namespace and event name", -> - expect(_.humanizeEventName('space:final-frontier')).toBe 'Space: Final Frontier' - expect(_.humanizeEventName('star-trek:the-next-generation')).toBe 'Star Trek: The Next Generation' - - describe "_.deepExtend(objects...)", -> - it "copies all key/values from each object into a new object", -> - first = - things: - string: "oh" - boolean: false - anotherArray: ['a', 'b', 'c'] - object: - first: 1 - second: 2 - - second = - things: - string: "cool" - array: [1,2,3] - anotherArray: ['aa', 'bb', 'cc'] - object: - first: 1 - - result = _.deepExtend(first, second) - - expect(result).toEqual - things: - string: "oh" - boolean: false - array: [1,2,3] - anotherArray: ['a', 'b', 'c'] - object: - first: 1 - second: 2 - - describe "_.isSubset(potentialSubset, potentialSuperset)", -> - it "returns whether the first argument is a subset of the second", -> - expect(_.isSubset([1, 2], [1, 2])).toBeTruthy() - expect(_.isSubset([1, 2], [1, 2, 3])).toBeTruthy() - expect(_.isSubset([], [1])).toBeTruthy() - expect(_.isSubset([], [])).toBeTruthy() - expect(_.isSubset([1, 2], [2, 3])).toBeFalsy() diff --git a/src/atom-package.coffee b/src/atom-package.coffee index cacda0882..4f823c8a2 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -2,7 +2,7 @@ TextMateGrammar = require './text-mate-grammar' Package = require './package' fsUtils = require './fs-utils' path = require 'path' -_ = require './underscore-extensions' +_ = require 'underscore-plus' $ = require './jquery-extensions' CSON = require 'season' {Emitter} = require 'emissary' diff --git a/src/atom.coffee b/src/atom.coffee index d2eb54137..b923ba380 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -6,7 +6,7 @@ Emitter::subscriptionCount = (args...) -> @getSubscriptionCount(args...) fsUtils = require './fs-utils' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' Package = require './package' ipc = require 'ipc' remote = require 'remote' diff --git a/src/binding-set.coffee b/src/binding-set.coffee index 025df700c..a44685039 100644 --- a/src/binding-set.coffee +++ b/src/binding-set.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' Specificity = require '../vendor/specificity' diff --git a/src/buffered-process.coffee b/src/buffered-process.coffee index df647491d..d726d7b29 100644 --- a/src/buffered-process.coffee +++ b/src/buffered-process.coffee @@ -1,6 +1,6 @@ ChildProcess = require 'child_process' path = require 'path' -_ = require './underscore-extensions' +_ = require 'underscore-plus' # Public: A wrapper which provides buffering for ChildProcess. module.exports = diff --git a/src/command-installer.coffee b/src/command-installer.coffee index 0e1433484..d64de8316 100644 --- a/src/command-installer.coffee +++ b/src/command-installer.coffee @@ -1,6 +1,6 @@ path = require 'path' fs = require 'fs' -_ = require './underscore-extensions' +_ = require 'underscore-plus' async = require 'async' mkdirp = require 'mkdirp' fsUtils = require './fs-utils' diff --git a/src/config.coffee b/src/config.coffee index 15a30ce93..1f38c30c8 100644 --- a/src/config.coffee +++ b/src/config.coffee @@ -1,5 +1,5 @@ fsUtils = require './fs-utils' -_ = require './underscore-extensions' +_ = require 'underscore-plus' {Emitter} = require 'emissary' CSON = require 'season' fs = require 'fs' diff --git a/src/context-menu-manager.coffee b/src/context-menu-manager.coffee index 1c9d540d1..a5b702aa9 100644 --- a/src/context-menu-manager.coffee +++ b/src/context-menu-manager.coffee @@ -1,5 +1,5 @@ $ = require 'jquery' -_ = require 'underscore' +_ = require 'underscore-plus' remote = require 'remote' # Public: Provides a registry for commands that you'd like to appear in the diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index 5cef2af46..c564c5cba 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -1,6 +1,6 @@ {View} = require './space-pen-extensions' {Point, Range} = require 'telepath' -_ = require './underscore-extensions' +_ = require 'underscore-plus' ### Internal ### module.exports = diff --git a/src/cursor.coffee b/src/cursor.coffee index 9f2ffc860..128f0bb17 100644 --- a/src/cursor.coffee +++ b/src/cursor.coffee @@ -1,6 +1,6 @@ {Point, Range} = require 'telepath' {Emitter} = require 'emissary' -_ = require './underscore-extensions' +_ = require 'underscore-plus' # Public: The `Cursor` class represents the little blinking line identifying # where text can be inserted. diff --git a/src/display-buffer-marker.coffee b/src/display-buffer-marker.coffee index d4360350a..1420cadbc 100644 --- a/src/display-buffer-marker.coffee +++ b/src/display-buffer-marker.coffee @@ -1,5 +1,5 @@ {Range} = require 'telepath' -_ = require './underscore-extensions' +_ = require 'underscore-plus' {Emitter, Subscriber} = require 'emissary' # Private: diff --git a/src/display-buffer.coffee b/src/display-buffer.coffee index 933c057e6..4969fbfc0 100644 --- a/src/display-buffer.coffee +++ b/src/display-buffer.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' {Emitter, Subscriber} = require 'emissary' guid = require 'guid' telepath = require 'telepath' diff --git a/src/edit-session.coffee b/src/edit-session.coffee index 69b903d11..bbdaa6a39 100644 --- a/src/edit-session.coffee +++ b/src/edit-session.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' path = require 'path' telepath = require 'telepath' diff --git a/src/editor.coffee b/src/editor.coffee index 5102302a3..916b2e828 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -7,7 +7,7 @@ CursorView = require './cursor-view' SelectionView = require './selection-view' fsUtils = require './fs-utils' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' MeasureRange = document.createRange() TextNodeFilter = { acceptNode: -> NodeFilter.FILTER_ACCEPT } @@ -1185,7 +1185,7 @@ class Editor extends View return if @pendingDisplayUpdate return unless @isVisible() @pendingDisplayUpdate = true - _.nextTick => + setImmediate => @updateDisplay() @pendingDisplayUpdate = false diff --git a/src/file.coffee b/src/file.coffee index 492ed5efb..47d80e3b3 100644 --- a/src/file.coffee +++ b/src/file.coffee @@ -3,7 +3,7 @@ Q = require 'q' path = require 'path' fsUtils = require './fs-utils' pathWatcher = require 'pathwatcher' -_ = require './underscore-extensions' +_ = require 'underscore-plus' # Public: Represents an individual file in the editor. # diff --git a/src/fs-utils.coffee b/src/fs-utils.coffee index 489c9af01..94a3b4b5d 100644 --- a/src/fs-utils.coffee +++ b/src/fs-utils.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' fs = require 'fs' mkdirp = require 'mkdirp' Module = require 'module' diff --git a/src/git.coffee b/src/git.coffee index 55519741a..6a75a89e9 100644 --- a/src/git.coffee +++ b/src/git.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' Task = require './task' {Emitter, Subscriber} = require 'emissary' diff --git a/src/gutter.coffee b/src/gutter.coffee index dda4e2dc1..e03a493e7 100644 --- a/src/gutter.coffee +++ b/src/gutter.coffee @@ -1,7 +1,7 @@ {View, $$, $$$} = require './space-pen-extensions' {Range} = require 'telepath' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' # Private: Represents the portion of the {Editor} containing row numbers. # diff --git a/src/jquery-extensions.coffee b/src/jquery-extensions.coffee index 76ee60178..d6ba4fbc3 100644 --- a/src/jquery-extensions.coffee +++ b/src/jquery-extensions.coffee @@ -1,5 +1,5 @@ $ = require '../vendor/jquery' -_ = require './underscore-extensions' +_ = require 'underscore-plus' $.fn.scrollBottom = (newValue) -> if newValue? diff --git a/src/keymap.coffee b/src/keymap.coffee index 46d4a3ae0..9eff8ed8d 100644 --- a/src/keymap.coffee +++ b/src/keymap.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' path = require 'path' CSON = require 'season' diff --git a/src/language-mode.coffee b/src/language-mode.coffee index aa8d4b88d..e0c16a31b 100644 --- a/src/language-mode.coffee +++ b/src/language-mode.coffee @@ -1,5 +1,5 @@ {Range} = require 'telepath' -_ = require './underscore-extensions' +_ = require 'underscore-plus' {OnigRegExp} = require 'oniguruma' {Emitter, Subscriber} = require 'emissary' diff --git a/src/menu-manager.coffee b/src/menu-manager.coffee index c9c7d776f..02b521443 100644 --- a/src/menu-manager.coffee +++ b/src/menu-manager.coffee @@ -1,6 +1,6 @@ path = require 'path' -_ = require 'underscore' +_ = require 'underscore-plus' ipc = require 'ipc' CSON = require 'season' diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 72cc94ea7..66f06d2ef 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -1,6 +1,6 @@ {Emitter} = require 'emissary' fsUtils = require './fs-utils' -_ = require './underscore-extensions' +_ = require 'underscore-plus' Package = require './package' path = require 'path' diff --git a/src/pane-column.coffee b/src/pane-column.coffee index 8cc5b5644..f4818f31a 100644 --- a/src/pane-column.coffee +++ b/src/pane-column.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' PaneAxis = require './pane-axis' # Internal: diff --git a/src/pane-row.coffee b/src/pane-row.coffee index 5d51677d3..ef1cc70fd 100644 --- a/src/pane-row.coffee +++ b/src/pane-row.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' PaneAxis = require './pane-axis' ### Internal ### diff --git a/src/pane.coffee b/src/pane.coffee index df3bcf08d..46bb7f75a 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -1,7 +1,7 @@ {dirname} = require 'path' {View} = require './space-pen-extensions' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' telepath = require 'telepath' PaneRow = require './pane-row' PaneColumn = require './pane-column' diff --git a/src/project.coffee b/src/project.coffee index 869b9c61d..f5c2e44cd 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -3,7 +3,7 @@ path = require 'path' url = require 'url' Q = require 'q' -_ = require './underscore-extensions' +_ = require 'underscore-plus' telepath = require 'telepath' {Range} = telepath TextBuffer = require './text-buffer' diff --git a/src/root-view.coffee b/src/root-view.coffee index 78ab2592c..57e884429 100644 --- a/src/root-view.coffee +++ b/src/root-view.coffee @@ -5,7 +5,7 @@ Q = require 'q' $ = require './jquery-extensions' {$$, View} = require './space-pen-extensions' fsUtils = require './fs-utils' -_ = require './underscore-extensions' +_ = require 'underscore-plus' telepath = require 'telepath' Editor = require './editor' Pane = require './pane' @@ -130,7 +130,7 @@ class RootView extends View @panes.reopenItem() if @state.get('fullScreen') - _.nextTick => atom.setFullScreen(true) + setImmediate => atom.setFullScreen(true) # Private: serialize: -> diff --git a/src/space-pen-extensions.coffee b/src/space-pen-extensions.coffee index ce049a630..497dc2f2e 100644 --- a/src/space-pen-extensions.coffee +++ b/src/space-pen-extensions.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' spacePen = require 'space-pen' jQuery = require './jquery-extensions' ConfigObserver = require './config-observer' diff --git a/src/syntax.coffee b/src/syntax.coffee index 9a5ed8714..484e8c1bf 100644 --- a/src/syntax.coffee +++ b/src/syntax.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' jQuery = require './jquery-extensions' Specificity = require '../vendor/specificity' {$$} = require './space-pen-extensions' diff --git a/src/task.coffee b/src/task.coffee index 766ce9f90..06e77d0d9 100644 --- a/src/task.coffee +++ b/src/task.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' child_process = require 'child_process' {Emitter} = require 'emissary' diff --git a/src/text-buffer.coffee b/src/text-buffer.coffee index 100a2f3c4..656eda5bf 100644 --- a/src/text-buffer.coffee +++ b/src/text-buffer.coffee @@ -4,7 +4,7 @@ Q = require 'q' {P} = require 'scandal' telepath = require 'telepath' -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' File = require './file' diff --git a/src/text-mate-grammar.coffee b/src/text-mate-grammar.coffee index f0d1e00c3..ff4a508ef 100644 --- a/src/text-mate-grammar.coffee +++ b/src/text-mate-grammar.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' fsUtils = require './fs-utils' plist = require 'plist' Token = require './token' diff --git a/src/text-mate-package.coffee b/src/text-mate-package.coffee index 1cfb9d5ba..8e7013d88 100644 --- a/src/text-mate-package.coffee +++ b/src/text-mate-package.coffee @@ -1,7 +1,7 @@ Package = require './package' fsUtils = require './fs-utils' path = require 'path' -_ = require './underscore-extensions' +_ = require 'underscore-plus' TextMateGrammar = require './text-mate-grammar' async = require 'async' diff --git a/src/theme-manager.coffee b/src/theme-manager.coffee index 79d4bf711..4cdddbd5d 100644 --- a/src/theme-manager.coffee +++ b/src/theme-manager.coffee @@ -3,7 +3,7 @@ path = require 'path' Package = require './package' AtomPackage = require './atom-package' -_ = require './underscore-extensions' +_ = require 'underscore-plus' $ = require './jquery-extensions' fsUtils = require './fs-utils' diff --git a/src/token.coffee b/src/token.coffee index 81b5b2556..de57949b0 100644 --- a/src/token.coffee +++ b/src/token.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' textUtils = require './text-utils' WhitespaceRegexesByTabLength = {} diff --git a/src/tokenized-buffer.coffee b/src/tokenized-buffer.coffee index 1a952754b..7c7058b73 100644 --- a/src/tokenized-buffer.coffee +++ b/src/tokenized-buffer.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' TokenizedLine = require './tokenized-line' {Emitter, Subscriber} = require 'emissary' Token = require './token' diff --git a/src/tokenized-line.coffee b/src/tokenized-line.coffee index 763b4a18c..826fdfd5c 100644 --- a/src/tokenized-line.coffee +++ b/src/tokenized-line.coffee @@ -1,4 +1,4 @@ -_ = require './underscore-extensions' +_ = require 'underscore-plus' ### Internal ### diff --git a/src/underscore-extensions.coffee b/src/underscore-extensions.coffee deleted file mode 100644 index fdfc0b845..000000000 --- a/src/underscore-extensions.coffee +++ /dev/null @@ -1,173 +0,0 @@ -_ = require 'underscore' - -_.mixin - remove: (array, element) -> - index = array.indexOf(element) - array.splice(index, 1) if index >= 0 - array - - spliceWithArray: (originalArray, start, length, insertedArray, chunkSize=100000) -> - if insertedArray.length < chunkSize - originalArray.splice(start, length, insertedArray...) - else - originalArray.splice(start, length) - for chunkStart in [0..insertedArray.length] by chunkSize - originalArray.splice(start + chunkStart, 0, insertedArray.slice(chunkStart, chunkStart + chunkSize)...) - - sum: (array) -> - sum = 0 - sum += elt for elt in array - sum - - adviseBefore: (object, methodName, advice) -> - original = object[methodName] - object[methodName] = (args...) -> - unless advice.apply(this, args) == false - original.apply(this, args) - - escapeRegExp: (string) -> - string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') - - escapeAttribute: (string) -> - string.replace(/"/g, '"').replace(/\n/g, '') - - humanizeEventName: (eventName, eventDoc) -> - [namespace, event] = eventName.split(':') - return _.undasherize(namespace) unless event? - - namespaceDoc = _.undasherize(namespace) - eventDoc ?= _.undasherize(event) - - "#{namespaceDoc}: #{eventDoc}" - - capitalize: (word) -> - if word.toLowerCase() is 'github' - 'GitHub' - else - word[0].toUpperCase() + word[1..] - - pluralize: (count=0, singular, plural=singular+'s') -> - if count is 1 - "#{count} #{singular}" - else - "#{count} #{plural}" - - camelize: (string) -> - string.replace /[_-]+(\w)/g, (m) -> m[1].toUpperCase() - - dasherize: (string) -> - string = string[0].toLowerCase() + string[1..] - string.replace /([A-Z])|(_)/g, (m, letter, underscore) -> - if letter - "-" + letter.toLowerCase() - else - "-" - - uncamelcase: (string) -> - result = string.replace /([A-Z])|(_)/g, (m, letter, underscore) -> " " + letter - _.capitalize(result) - - undasherize: (string) -> - string.split('-').map(_.capitalize).join(' ') - - underscore: (string) -> - string = string[0].toLowerCase() + string[1..] - string.replace /([A-Z])|(-)/g, (m, letter, dash) -> - if letter - "_" + letter.toLowerCase() - else - "_" - - losslessInvert: (hash) -> - inverted = {} - for key, value of hash - inverted[value] ?= [] - inverted[value].push(key) - inverted - - multiplyString: (string, n) -> - new Array(1 + n).join(string) - - nextTick: (fn) -> - unless @messageChannel - @pendingNextTickFns = [] - @messageChannel = new MessageChannel - @messageChannel.port1.onmessage = => - fn() while fn = @pendingNextTickFns.shift() - - @pendingNextTickFns.push(fn) - @messageChannel.port2.postMessage(0) - - endsWith: (string, suffix) -> - string.indexOf(suffix, string.length - suffix.length) isnt -1 - - # Transform the given object into another object. - # - # `object` - The object to transform. - # `iterator` - - # A function that takes `(key, value)` arguments and returns a - # `[key, value]` tuple. - # - # Returns a new object based with the key/values returned by the iterator. - mapObject: (object, iterator) -> - newObject = {} - for key, value of object - [key, value] = iterator(key, value) - newObject[key] = value - - newObject - - # Deep clones the given JSON object. - # - # `object` - The JSON object to clone. - # - # Returns a deep clone of the JSON object. - deepClone: (object) -> - if _.isArray(object) - object.map (value) -> _.deepClone(value) - else if _.isObject(object) - @mapObject object, (key, value) => [key, @deepClone(value)] - else - object - - deepExtend: (objects...) -> - result = {} - for object in objects - for key, value of object - if _.isObject(value) and not _.isArray(value) - result[key] = @deepExtend(result[key], value) - else - result[key] ?= value - - result - - valueForKeyPath: (object, keyPath) -> - keys = keyPath.split('.') - for key in keys - object = object[key] - return unless object? - object - - setValueForKeyPath: (object, keyPath, value) -> - keys = keyPath.split('.') - while keys.length > 1 - key = keys.shift() - object[key] ?= {} - object = object[key] - if value? - object[keys.shift()] = value - else - delete object[keys.shift()] - - compactObject: (object) -> - newObject = {} - for key, value of object - newObject[key] = value if value? - newObject - - isSubset: (potentialSubset, potentialSuperset) -> - _.every potentialSubset, (element) -> _.include(potentialSuperset, element) - -_.isEqual = require 'tantamount' - -module.exports = _ diff --git a/src/window-event-handler.coffee b/src/window-event-handler.coffee index 7b6d2655e..f464423e3 100644 --- a/src/window-event-handler.coffee +++ b/src/window-event-handler.coffee @@ -1,5 +1,5 @@ $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' ipc = require 'ipc' shell = require 'shell' {Subscriber} = require 'emissary' diff --git a/src/window.coffee b/src/window.coffee index 7a470d6ff..a7adb6648 100644 --- a/src/window.coffee +++ b/src/window.coffee @@ -1,6 +1,6 @@ path = require 'path' $ = require './jquery-extensions' -_ = require './underscore-extensions' +_ = require 'underscore-plus' ipc = require 'ipc' WindowEventHandler = require './window-event-handler' @@ -13,7 +13,7 @@ windowEventHandler = null # This is done in a next tick to prevent a white flicker from occurring # if called synchronously. displayWindow = -> - _.nextTick -> + setImmediate -> atom.show() atom.focus() diff --git a/tasks/convert-theme.coffee b/tasks/convert-theme.coffee index 98a496cc4..39575ba73 100644 --- a/tasks/convert-theme.coffee +++ b/tasks/convert-theme.coffee @@ -1,6 +1,6 @@ path = require 'path' -_ = require 'underscore' +_ = require 'underscore-plus' plist = require 'plist' {ScopeSelector} = require 'first-mate' diff --git a/tasks/spec-task.coffee b/tasks/spec-task.coffee index ae661a555..f78fa6726 100644 --- a/tasks/spec-task.coffee +++ b/tasks/spec-task.coffee @@ -1,7 +1,7 @@ fs = require 'fs' path = require 'path' -_ = require 'underscore' +_ = require 'underscore-plus' async = require 'async' module.exports = (grunt) ->