diff --git a/src/ajax/periodical_updater.js b/src/ajax/periodical_updater.js
index 03fa516..51ddfe7 100644
--- a/src/ajax/periodical_updater.js
+++ b/src/ajax/periodical_updater.js
@@ -34,7 +34,7 @@
* is the same; when the result is different once again, `frequency` will
* revert to its original value.
*
- *
Disabling and re-enabling a `PeriodicalUpdater`
+ * Disabling and re-enabling a PeriodicalUpdater
*
* You can hit the brakes on a running `PeriodicalUpdater` by calling
* [[Ajax.PeriodicalUpdater#stop]]. If you wish to re-enable it later, call
@@ -71,11 +71,24 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
this.start();
},
+ /**
+ * Ajax.PeriodicalUpdater#start() -> undefined
+ *
+ * Starts the periodical updater (if it had previously been stopped with
+ * [[Ajax.PeriodicalUpdater#stop]]).
+ **/
start: function() {
this.options.onComplete = this.updateComplete.bind(this);
this.onTimerEvent();
},
+ /**
+ * Ajax.PeriodicalUpdater#stop() -> undefined
+ *
+ * Stops the periodical updater.
+ *
+ * Also calls the `onComplete` callback, if one has been defined.
+ **/
stop: function() {
this.updater.options.onComplete = undefined;
clearTimeout(this.timer);
diff --git a/src/ajax/request.js b/src/ajax/request.js
index d09d53d..b19d5f4 100644
--- a/src/ajax/request.js
+++ b/src/ajax/request.js
@@ -12,7 +12,7 @@
* property will automatically be passed to `eval`.
*
* In other words: you don't even need to provide a callback to leverage
- * pure-JavaScript AJAX responses. This is the convention that drives Rails's
+ * pure-JavaScript Ajax responses. This is the convention that drives Rails's
* RJS.
*
* The list of JavaScript-related MIME-types handled by Prototype is:
@@ -182,7 +182,7 @@ Ajax.Request = Class.create(Ajax.Base, {
},
/**
- * Ajax.Request.success() -> Boolean
+ * Ajax.Request#success() -> Boolean
*
* Tests whether the request was successful.
**/
@@ -240,7 +240,7 @@ Ajax.Request = Class.create(Ajax.Base, {
},
/**
- * Ajax.Request.getHeader(name) -> String | null
+ * Ajax.Request#getHeader(name) -> String | null
* - name (String): The name of an HTTP header that may have been part of
* the response.
*
diff --git a/src/ajax/updater.js b/src/ajax/updater.js
index 036dbe8..c923d55 100644
--- a/src/ajax/updater.js
+++ b/src/ajax/updater.js
@@ -9,9 +9,9 @@
*
* Example
*
- * new Ajax.Updater('items', '/items', {
- * parameters: { text: $F('text') }
- * });
+ * new Ajax.Updater('items', '/items', {
+ * parameters: { text: $F('text') }
+ * });
*
* This example will make a request to the URL `/items` (with the given
* parameters); it will then replace the contents of the element with the ID
diff --git a/src/dom/dom.js b/src/dom/dom.js
index 1d58343..b293299 100644
--- a/src/dom/dom.js
+++ b/src/dom/dom.js
@@ -1863,5 +1863,28 @@ Element.addMethods({
}
return value;
+ },
+
+ /**
+ * Element#clone(@element, deep) -> Element
+ * - deep (Boolean): Whether to clone `element`'s descendants as well.
+ *
+ * Returns a duplicate of `element`.
+ *
+ * A wrapper around DOM Level 2 `Node#cloneNode`, `Element#clone` cleans up
+ * any expando properties defined by Prototype.
+ **/
+ clone: function(element, deep) {
+ if (!(element = $(element))) return;
+ var clone = element.cloneNode(deep);
+ clone._prototypeUID = void 0;
+ if (deep) {
+ var descendants = Element.select(clone, '*'),
+ i = descendants.length;
+ while (i--) {
+ descendants[i]._prototypeUID = void 0;
+ }
+ }
+ return Element.extend(clone);
}
});
diff --git a/src/dom/event.js b/src/dom/event.js
index 941d941..5e56184 100644
--- a/src/dom/event.js
+++ b/src/dom/event.js
@@ -2,6 +2,34 @@
/** section: DOM
* Event
+ *
+ * The namespace for Prototype's event system.
+ *
+ * Events: a fine mess
+ *
+ * Event management is one of the really sore spots of cross-browser
+ * scripting.
+ *
+ * True, the prevalent issue is: everybody does it the W3C way, and MSIE
+ * does it another way altogether. But there are quite a few subtler,
+ * sneakier issues here and there waiting to bite your ankle — such as the
+ * `keypress`/`keydown` issue with KHTML-based browsers (Konqueror and
+ * Safari). Also, MSIE has a tendency to leak memory when it comes to
+ * discarding event handlers.
+ *
+ * Prototype to the rescue
+ *
+ * Of course, Prototype smooths it over so well you’ll forget these
+ * troubles even exist. Enter the `Event` namespace. It is replete with
+ * methods that help to normalize the information reported by events across
+ * browsers.
+ *
+ * `Event` also provides a standardized list of key codes you can use with
+ * keyboard-related events.
+ *
+ * The functions you’re most likely to use a lot are [[Event.observe]],
+ * [[Event#element]] and [[Event#stop]]. If your web app uses custom events,
+ * you'll also get a lot of mileage out of [[Event.fire]].
**/
var Event = {
KEY_BACKSPACE: 8,
@@ -510,18 +538,21 @@
});
Element.addMethods({
- /** alias of: Event.fire
+ /**
* Element#fire(@element, eventName[, memo[, bubble = true]]) -> Event
+ * See [[Event.fire]].
**/
fire: fire,
- /** alias of: Event.observe
+ /**
* Element#observe(@element, eventName, handler) -> Element
+ * See [[Event.observe]].
**/
observe: observe,
- /** alias of: Event.observe
+ /**
* Element#stopObserving(element[, eventName[, handler]]) -> Element
+ * See [[Event.stopObserving]].
**/
stopObserving: stopObserving
});
@@ -535,16 +566,19 @@
Object.extend(document, {
/**
* document.fire(eventName[, memo[, bubble = true]]) -> Event
+ * See [[Event.fire]].
**/
fire: fire.methodize(),
/**
* document.observe(eventName, handler) -> Element
+ * See [[Event.observe]].
**/
observe: observe.methodize(),
/**
* document.stopObserving([eventName[, handler]]) -> Element
+ * See [[Event.stopObserving]].
**/
stopObserving: stopObserving.methodize(),
diff --git a/src/dom/form.js b/src/dom/form.js
index ed03704..e398374 100644
--- a/src/dom/form.js
+++ b/src/dom/form.js
@@ -1,5 +1,14 @@
/** section: DOM
* Form
+ *
+ * Utilities for dealing with forms in the DOM.
+ *
+ * `Form` is a namespace for all things form-related, packed with form
+ * manipulation and serialization goodness. While it holds methods dealing
+ * with forms as a whole, its submodule [[Form.Element]] deals with specific
+ * form controls.
+ *
+ * Many of these methods are also available directly on `form` elements.
**/
var Form = {
@@ -197,6 +206,22 @@ Form.Methods = {
/** section: DOM
* Form.Element
+ *
+ * Utilities for dealing with form controls in the DOM.
+ *
+ * This is a collection of methods that assist in dealing with form controls.
+ * They provide ways to focus, serialize, disable/enable or extract current
+ * value from a specific control.
+ *
+ * Note that nearly all these methods are available directly on `input`,
+ * `select`, and `textarea` elements. Therefore, these are equivalent:
+ *
+ * Form.Element.activate('myfield');
+ * $('myfield').activate();
+ *
+ * Naturally, you should always prefer the shortest form suitable in a
+ * situation. Most of these methods also return the element itself (as
+ * indicated by the return type) for chainability.
**/
Form.Element = {
diff --git a/src/lang/array.js b/src/lang/array.js
index 62f5f4d..9fc4e05 100644
--- a/src/lang/array.js
+++ b/src/lang/array.js
@@ -1,4 +1,4 @@
-/** section: Language, alias of: Array.from, related to: Array
+/** section: Language, related to: Array
* $A(iterable) -> Array
*
* Accepts an array-like collection (anything with numeric indices) and returns
@@ -168,7 +168,7 @@ Array.from = $A;
* Array#flatten() -> Array
* Returns a “flat” (one-dimensional) version of the array.
*
- * Nested arrays are recursively injected “inline”. This can prove very
+ * Nested arrays are recursively injected "inline." This can prove very
* useful when handling the results of a recursive collection algorithm,
* for instance.
**/
@@ -243,8 +243,12 @@ Array.from = $A;
return array.detect(function(value) { return item === value });
});
}
+
+ /** alias of: Array#clone
+ * Array#toArray() -> Array
+ **/
- /** alias of: Array#toArray
+ /**
* Array#clone() -> Array
*
* Returns a duplicate of the array, leaving the original array intact.
diff --git a/src/lang/class.js b/src/lang/class.js
index 2c6f7be..c399fdc 100644
--- a/src/lang/class.js
+++ b/src/lang/class.js
@@ -2,6 +2,11 @@
/** section: Language
* Class
+ *
+ * Manages Prototype's class-based OOP system.
+ *
+ * Refer to Prototype's web site for a [tutorial on classes and
+ * inheritance](http://prototypejs.org/learn/class-inheritance).
**/
var Class = (function() {
/**
diff --git a/src/lang/enumerable.js b/src/lang/enumerable.js
index 53d25fc..3ba4241 100644
--- a/src/lang/enumerable.js
+++ b/src/lang/enumerable.js
@@ -10,7 +10,7 @@
*
* Prototype mixes `Enumerable` into several classes. The most visible cases
* are [[Array]] and [[Hash]], but you’ll find it in less obvious spots as
- * well, such as in [[ObjectRange]] and various DOM- or AJAX-related objects.
+ * well, such as in [[ObjectRange]] and various DOM- or Ajax-related objects.
*
* The context
parameter
*
diff --git a/src/lang/function.js b/src/lang/function.js
index 66a8289..e6f3873 100644
--- a/src/lang/function.js
+++ b/src/lang/function.js
@@ -1,5 +1,7 @@
/** section: Language
* class Function
+ *
+ * Extensions to the built-in `Function` object.
**/
Object.extend(Function.prototype, (function() {
var slice = Array.prototype.slice;
diff --git a/src/lang/range.js b/src/lang/range.js
index 8affa84..70ab2dc 100644
--- a/src/lang/range.js
+++ b/src/lang/range.js
@@ -1,9 +1,10 @@
/** section: Language
* class ObjectRange
*
- * Ranges represent an interval of values. The value type just needs to be
- * "compatible" — that is, to implement a `succ` method letting us step from
- * one value to the next (its successor).
+ * A succession of values.
+ *
+ * An `ObjectRange` can model a range of any value that implements a `succ`
+ * method (which links that value to its "successor").
*
* Prototype provides such a method for [[Number]] and [[String]], but you
* are (of course) welcome to implement useful semantics in your own objects,