Upgrade from 1.2 to 1.3 or 1.4

arian edited this page Jun 13, 2012 · 1 revision

This is a list of the API changes made from 1.2 to 1.3. It allows you to drop the compatibility layer mostly by doing search and replace. If you just want to update to MooTools Core 1.3 with your existing code, see Update from 1.2 to 1.3.

Core

  • $chk(value) => (value != null)
  • $A(item) => Array.from(item) // Note: Array.from does not always return a new array but just ensures that the return value is an array.
  • $splat => Array.from
  • $clear => use the native clearTimeout when using fn.delay, use clearInterval when using fn.periodical.
  • $defined => (value != null)
  • $each => use Array.each for arrays, Object.each for objects
  • $empty => No replacement, use function(){}
  • $extend(source, extended) => Object.append(source, extended)
  • $merge(a, b) => Object.merge({}, a, b)
  • $mixin(a, b) => Object.merge(a, b)
  • $lambda => Function.from
  • $random => Number.random
  • $time => Date.now
  • $type => typeOf // Note: returns a string 'null' on empty objects as opposed to "false" in 1.2
  • $unlink => Array.clone or Object.clone
  • $arguments => No replacement
  • Native => Type (see Core.js)
  • Array.type / String.type / Number.type / … => Type.isArray / Type.isString / Type.isNumber / …
  • Hash and $H were deprecated and moved from Core to More. Use plain objects instead of Hash. You can find methods to manipulate objects on Object. You can find all 1.2 functionality of Hash in MooTools More 1.3.

Browser

Engine detection was changed in favor of user-agent detection. Browser.Engine was deprecated and according properties on the Browser object were added:

  • Browser.Engine.trident => Browser.ie
  • Browser.Engine.gecko => Browser.firefox
  • Browser.Engine.webkit => Browser.safari or Browser.chrome
  • Browser.Engine.presto => Browser.opera
  • Browser.Platform.ipod => Browser.Platform.ios
  • $exec => Browser.exec

Array

  • $pick => Array.pick or [a, b, c].pick()
  • Array.extend => Array.append

Function

  • $try => Function.attempt
  • myFn.run(args, bind) => myFn.apply(bind, Array.from(args));
  • myFn.create => Use the according functions like .pass, .bind, .delay, .periodical
  • myFn.bindWithEvent => deprecated
  • myFn.bind(this, [arg1, arg2, arg3]) => myFn.bind(this, arg1, arg2, arg3) OR myFn.pass([arg1, arg2, arg3], this)

Element

  • element.injectInside, .injectBefore, .injectAfter, .injectBottom, .injectTop => element.inject(context, where); // where = inside, bottom, …
  • element.grabTop, … => element.grab(context, where) // see above
  • element.hasChild(item) => item !== element && element.contains(item)
  • $$ now only accepts a single selector, an array or arguments of elements
  • Selectors.Pseudo => Slick.definePseudo(name, fn)

Changes for 1.4

Event

  • Event => DOMEvent
  • Event.Keys.foo = 49 => DOMEvent.defineKeys(49, 'foo');