##// END OF EJS Templates
start docummenting kernel
Matthias BUSSONNIER -
Show More
@@ -8,6 +8,12 b''
8 //============================================================================
8 //============================================================================
9 // CodeCell
9 // CodeCell
10 //============================================================================
10 //============================================================================
11 /**
12 * An extendable module that provide base functionnality to create cell for notebook.
13 * @module IPython
14 * @namespace IPython
15 * @submodule CodeCell
16 */
11
17
12 var IPython = (function (IPython) {
18 var IPython = (function (IPython) {
13 "use strict";
19 "use strict";
@@ -16,9 +22,18 b' var IPython = (function (IPython) {'
16 var key = IPython.utils.keycodes;
22 var key = IPython.utils.keycodes;
17 CodeMirror.modeURL = "/static/codemirror/mode/%N/%N.js";
23 CodeMirror.modeURL = "/static/codemirror/mode/%N/%N.js";
18
24
25 /**
26 * A Cell conceived to write code.
27 *
28 * The kernel doesn't have to be set at creation time, in that case
29 * it will be null and set_kernel has to be called later.
30 * @class CodeCell
31 * @extends IPython.Cell
32 *
33 * @constructor
34 * @param {Object|null} kernel
35 */
19 var CodeCell = function (kernel) {
36 var CodeCell = function (kernel) {
20 // The kernel doesn't have to be set at creation time, in that case
21 // it will be null and set_kernel has to be called later.
22 this.kernel = kernel || null;
37 this.kernel = kernel || null;
23 this.code_mirror = null;
38 this.code_mirror = null;
24 this.input_prompt_number = null;
39 this.input_prompt_number = null;
@@ -36,11 +51,14 b' var IPython = (function (IPython) {'
36
51
37 CodeCell.prototype = new IPython.Cell();
52 CodeCell.prototype = new IPython.Cell();
38
53
39
54 /**
55 * @method auto_highlight
56 */
40 CodeCell.prototype.auto_highlight = function () {
57 CodeCell.prototype.auto_highlight = function () {
41 this._auto_highlight(IPython.config.cell_magic_highlight)
58 this._auto_highlight(IPython.config.cell_magic_highlight)
42 };
59 };
43
60
61 /** @method create_element */
44 CodeCell.prototype.create_element = function () {
62 CodeCell.prototype.create_element = function () {
45 var cell = $('<div></div>').addClass('cell border-box-sizing code_cell vbox');
63 var cell = $('<div></div>').addClass('cell border-box-sizing code_cell vbox');
46 cell.attr('tabindex','2');
64 cell.attr('tabindex','2');
@@ -69,11 +87,14 b' var IPython = (function (IPython) {'
69 }
87 }
70 };
88 };
71
89
90 /**
91 * This method gets called in CodeMirror's onKeyDown/onKeyPress
92 * handlers and is used to provide custom key handling. Its return
93 * value is used to determine if CodeMirror should ignore the event:
94 * true = ignore, false = don't ignore.
95 * @method handle_codemirror_keyevent
96 */
72 CodeCell.prototype.handle_codemirror_keyevent = function (editor, event) {
97 CodeCell.prototype.handle_codemirror_keyevent = function (editor, event) {
73 // This method gets called in CodeMirror's onKeyDown/onKeyPress
74 // handlers and is used to provide custom key handling. Its return
75 // value is used to determine if CodeMirror should ignore the event:
76 // true = ignore, false = don't ignore.
77
98
78 if (this.read_only){
99 if (this.read_only){
79 return false;
100 return false;
@@ -155,7 +176,10 b' var IPython = (function (IPython) {'
155 this.kernel = kernel;
176 this.kernel = kernel;
156 }
177 }
157
178
158
179 /**
180 * Execute current code cell to the kernel
181 * @method execute
182 */
159 CodeCell.prototype.execute = function () {
183 CodeCell.prototype.execute = function () {
160 this.output_area.clear_output(true, true, true);
184 this.output_area.clear_output(true, true, true);
161 this.set_input_prompt('*');
185 this.set_input_prompt('*');
@@ -169,7 +193,10 b' var IPython = (function (IPython) {'
169 var msg_id = this.kernel.execute(this.get_text(), callbacks, {silent: false});
193 var msg_id = this.kernel.execute(this.get_text(), callbacks, {silent: false});
170 };
194 };
171
195
172
196 /**
197 * @method _handle_execute_reply
198 * @private
199 */
173 CodeCell.prototype._handle_execute_reply = function (content) {
200 CodeCell.prototype._handle_execute_reply = function (content) {
174 this.set_input_prompt(content.execution_count);
201 this.set_input_prompt(content.execution_count);
175 this.element.removeClass("running");
202 this.element.removeClass("running");
@@ -226,20 +253,17 b' var IPython = (function (IPython) {'
226 };
253 };
227
254
228
255
229
230
231
232 CodeCell.input_prompt_classical = function (prompt_value, lines_number) {
256 CodeCell.input_prompt_classical = function (prompt_value, lines_number) {
233 var ns = prompt_value || "&nbsp;";
257 var ns = prompt_value || "&nbsp;";
234 return 'In&nbsp;[' + ns + ']:'
258 return 'In&nbsp;[' + ns + ']:'
235 };
259 };
236
260
237 CodeCell.input_prompt_continuation = function (prompt_value, lines_number) {
261 CodeCell.input_prompt_continuation = function (prompt_value, lines_number) {
238 var html = [CodeCell.input_prompt_classical(prompt_value, lines_number)];
262 var html = [CodeCell.input_prompt_classical(prompt_value, lines_number)];
239 for(var i=1; i < lines_number; i++){html.push(['...:'])};
263 for(var i=1; i < lines_number; i++){html.push(['...:'])};
240 return html.join('</br>')
264 return html.join('</br>')
241 };
265 };
242
266
243 CodeCell.input_prompt_function = CodeCell.input_prompt_classical;
267 CodeCell.input_prompt_function = CodeCell.input_prompt_classical;
244
268
245
269
@@ -9,12 +9,22 b''
9 // Kernel
9 // Kernel
10 //============================================================================
10 //============================================================================
11
11
12 /**
13 * An extendable module that provide base functionnality to create cell for notebook.
14 * @module IPython
15 * @namespace IPython
16 * @submodule Kernel
17 */
18
12 var IPython = (function (IPython) {
19 var IPython = (function (IPython) {
13
20
14 var utils = IPython.utils;
21 var utils = IPython.utils;
15
22
16 // Initialization and connection.
23 // Initialization and connection.
17
24 /**
25 * A Kernel Class to communicate with the Python kernel
26 * @Class Kernel
27 */
18 var Kernel = function (base_url) {
28 var Kernel = function (base_url) {
19 this.kernel_id = null;
29 this.kernel_id = null;
20 this.shell_channel = null;
30 this.shell_channel = null;
@@ -50,6 +60,10 b' var IPython = (function (IPython) {'
50 return msg;
60 return msg;
51 };
61 };
52
62
63 /**
64 * Start the Python kernel
65 * @method start
66 */
53 Kernel.prototype.start = function (notebook_id) {
67 Kernel.prototype.start = function (notebook_id) {
54 var that = this;
68 var that = this;
55 if (!this.running) {
69 if (!this.running) {
@@ -62,7 +76,14 b' var IPython = (function (IPython) {'
62 };
76 };
63 };
77 };
64
78
65
79 /**
80 * Restart the python kernel.
81 *
82 * Emit a 'status_restarting.Kernel' event with
83 * the current object as parameter
84 *
85 * @method restart
86 */
66 Kernel.prototype.restart = function () {
87 Kernel.prototype.restart = function () {
67 $([IPython.events]).trigger('status_restarting.Kernel', {kernel: this});
88 $([IPython.events]).trigger('status_restarting.Kernel', {kernel: this});
68 var that = this;
89 var that = this;
@@ -122,6 +143,12 b' var IPython = (function (IPython) {'
122
143
123 };
144 };
124
145
146 /**
147 * Start the `shell`and `iopub` channels.
148 * Will stop and restart them if they already exist.
149 *
150 * @method start_channels
151 */
125 Kernel.prototype.start_channels = function () {
152 Kernel.prototype.start_channels = function () {
126 var that = this;
153 var that = this;
127 this.stop_channels();
154 this.stop_channels();
@@ -162,7 +189,10 b' var IPython = (function (IPython) {'
162 }, 1000);
189 }, 1000);
163 };
190 };
164
191
165
192 /**
193 * Start the `shell`and `iopub` channels.
194 * @method stop_channels
195 */
166 Kernel.prototype.stop_channels = function () {
196 Kernel.prototype.stop_channels = function () {
167 if (this.shell_channel !== null) {
197 if (this.shell_channel !== null) {
168 this.shell_channel.onclose = function (evt) {};
198 this.shell_channel.onclose = function (evt) {};
@@ -178,17 +208,28 b' var IPython = (function (IPython) {'
178
208
179 // Main public methods.
209 // Main public methods.
180
210
211 /**
212 * Get info on object asynchronoulsy
213 *
214 * @async
215 * @param objname {string}
216 * @param callback {dict}
217 * @method object_info_request
218 *
219 * @example
220 *
221 * When calling this method pass a callbacks structure of the form:
222 *
223 * callbacks = {
224 * 'object_info_reply': object_info_reply_callback
225 * }
226 *
227 * The `object_info_reply_callback` will be passed the content object of the
228 *
229 * `object_into_reply` message documented in
230 * [IPython dev documentation](http://ipython.org/ipython-doc/dev/development/messaging.html#object-information)
231 */
181 Kernel.prototype.object_info_request = function (objname, callbacks) {
232 Kernel.prototype.object_info_request = function (objname, callbacks) {
182 // When calling this method pass a callbacks structure of the form:
183 //
184 // callbacks = {
185 // 'object_info_reply': object_into_reply_callback
186 // }
187 //
188 // The object_info_reply_callback will be passed the content object of the
189 // object_into_reply message documented here:
190 //
191 // http://ipython.org/ipython-doc/dev/development/messaging.html#object-information
192 if(typeof(objname)!=null && objname!=null)
233 if(typeof(objname)!=null && objname!=null)
193 {
234 {
194 var content = {
235 var content = {
@@ -202,42 +243,61 b' var IPython = (function (IPython) {'
202 return;
243 return;
203 }
244 }
204
245
246 /**
247 * Execute given code into kernel, and pass result to callback.
248 *
249 * @async
250 * @method execute
251 * @param {string} code
252 * @param callback {Object} With the following keys
253 * @param callback.'execute_reply' {function}
254 * @param callback.'output' {function}
255 * @param callback.'clear_output' {function}
256 * @param callback.'set_next_input' {function}
257 * @param {object} [options]
258 * @param [options.silent=false] {Boolean}
259 * @param [options.user_expressions=empty_dict] {Dict}
260 * @param [options.user_variables=empty_list] {List od Strings}
261 * @param [options.allow_stdin=false] {Boolean} true|false
262 *
263 * @example
264 *
265 * The options object should contain the options for the execute call. Its default
266 * values are:
267 *
268 * options = {
269 * silent : true,
270 * user_variables : [],
271 * user_expressions : {},
272 * allow_stdin : false
273 * }
274 *
275 * When calling this method pass a callbacks structure of the form:
276 *
277 * callbacks = {
278 * 'execute_reply': execute_reply_callback,
279 * 'output': output_callback,
280 * 'clear_output': clear_output_callback,
281 * 'set_next_input': set_next_input_callback
282 * }
283 *
284 * The `execute_reply_callback` will be passed the content and metadata
285 * objects of the `execute_reply` message documented
286 * [here](http://ipython.org/ipython-doc/dev/development/messaging.html#execute)
287 *
288 * The `output_callback` will be passed `msg_type` ('stream','display_data','pyout','pyerr')
289 * of the output and the content and metadata objects of the PUB/SUB channel that contains the
290 * output:
291 *
292 * http://ipython.org/ipython-doc/dev/development/messaging.html#messages-on-the-pub-sub-socket
293 *
294 * The `clear_output_callback` will be passed a content object that contains
295 * stdout, stderr and other fields that are booleans, as well as the metadata object.
296 *
297 * The `set_next_input_callback` will be passed the text that should become the next
298 * input cell.
299 */
205 Kernel.prototype.execute = function (code, callbacks, options) {
300 Kernel.prototype.execute = function (code, callbacks, options) {
206 // The options object should contain the options for the execute call. Its default
207 // values are:
208 //
209 // options = {
210 // silent : true,
211 // user_variables : [],
212 // user_expressions : {},
213 // allow_stdin : false
214 // }
215 //
216 // When calling this method pass a callbacks structure of the form:
217 //
218 // callbacks = {
219 // 'execute_reply': execute_reply_callback,
220 // 'output': output_callback,
221 // 'clear_output': clear_output_callback,
222 // 'set_next_input': set_next_input_callback
223 // }
224 //
225 // The execute_reply_callback will be passed the content and metadata objects of the execute_reply
226 // message documented here:
227 //
228 // http://ipython.org/ipython-doc/dev/development/messaging.html#execute
229 //
230 // The output_callback will be passed msg_type ('stream','display_data','pyout','pyerr')
231 // of the output and the content and metadata objects of the PUB/SUB channel that contains the
232 // output:
233 //
234 // http://ipython.org/ipython-doc/dev/development/messaging.html#messages-on-the-pub-sub-socket
235 //
236 // The clear_output_callback will be passed a content object that contains
237 // stdout, stderr and other fields that are booleans, as well as the metadata object.
238 //
239 // The set_next_input_callback will be passed the text that should become the next
240 // input cell.
241
301
242 var content = {
302 var content = {
243 code : code,
303 code : code,
@@ -254,18 +314,25 b' var IPython = (function (IPython) {'
254 return msg.header.msg_id;
314 return msg.header.msg_id;
255 };
315 };
256
316
257
317 /**
318 * When calling this method pass a callbacks structure of the form:
319 *
320 * callbacks = {
321 * 'complete_reply': complete_reply_callback
322 * }
323 *
324 * The `complete_reply_callback` will be passed the content object of the
325 * `complete_reply` message documented
326 * [here](http://ipython.org/ipython-doc/dev/development/messaging.html#complete)
327 *
328 * @method complete
329 * @param line {integer}
330 * @param cursor_pos {integer}
331 * @param {dict} callbacks
332 * @param callbacks.complete_reply {function} `complete_reply_callback`
333 *
334 */
258 Kernel.prototype.complete = function (line, cursor_pos, callbacks) {
335 Kernel.prototype.complete = function (line, cursor_pos, callbacks) {
259 // When calling this method pass a callbacks structure of the form:
260 //
261 // callbacks = {
262 // 'complete_reply': complete_reply_callback
263 // }
264 //
265 // The complete_reply_callback will be passed the content object of the
266 // complete_reply message documented here:
267 //
268 // http://ipython.org/ipython-doc/dev/development/messaging.html#complete
269 callbacks = callbacks || {};
336 callbacks = callbacks || {};
270 var content = {
337 var content = {
271 text : '',
338 text : '',
@@ -25,7 +25,7 b' var IPython = (function (IPython) {'
25 *
25 *
26 * @class TextCell
26 * @class TextCell
27 * @constructor TextCell
27 * @constructor TextCell
28 * @extend Cell
28 * @extend Ipython.Cell
29 */
29 */
30 var TextCell = function () {
30 var TextCell = function () {
31 this.code_mirror_mode = this.code_mirror_mode || 'htmlmixed';
31 this.code_mirror_mode = this.code_mirror_mode || 'htmlmixed';
@@ -260,7 +260,7 b' var IPython = (function (IPython) {'
260 /**
260 /**
261 * @constructor HtmlCell
261 * @constructor HtmlCell
262 * @class HtmlCell
262 * @class HtmlCell
263 * @extends TextCell
263 * @extends Ipython.TextCell
264 */
264 */
265 var HTMLCell = function () {
265 var HTMLCell = function () {
266 this.placeholder = "Type <strong>HTML</strong> and LaTeX: $\\alpha^2$";
266 this.placeholder = "Type <strong>HTML</strong> and LaTeX: $\\alpha^2$";
@@ -290,7 +290,7 b' var IPython = (function (IPython) {'
290 /**
290 /**
291 * @class MarkdownCell
291 * @class MarkdownCell
292 * @constructor MarkdownCell
292 * @constructor MarkdownCell
293 * @extends HtmlCell
293 * @extends Ipython.HtmlCell
294 */
294 */
295 var MarkdownCell = function () {
295 var MarkdownCell = function () {
296 this.placeholder = "Type *Markdown* and LaTeX: $\\alpha^2$";
296 this.placeholder = "Type *Markdown* and LaTeX: $\\alpha^2$";
@@ -345,7 +345,7 b' var IPython = (function (IPython) {'
345 /**
345 /**
346 * @class RawCell
346 * @class RawCell
347 * @constructor RawCell
347 * @constructor RawCell
348 * @extends TextCell
348 * @extends Ipython.TextCell
349 */
349 */
350 var RawCell = function () {
350 var RawCell = function () {
351 this.placeholder = "Type plain text and LaTeX: $\\alpha^2$";
351 this.placeholder = "Type plain text and LaTeX: $\\alpha^2$";
@@ -434,12 +434,12 b' var IPython = (function (IPython) {'
434
434
435 /**
435 /**
436 * @class HeadingCell
436 * @class HeadingCell
437 * @extends TextCell
437 * @extends Ipython.TextCell
438 */
438 */
439
439
440 /**
440 /**
441 * @constructor HeadingCell
441 * @constructor HeadingCell
442 * @extends TextCell
442 * @extends Ipython.TextCell
443 */
443 */
444 var HeadingCell = function () {
444 var HeadingCell = function () {
445 this.placeholder = "Type Heading Here";
445 this.placeholder = "Type Heading Here";
General Comments 0
You need to be logged in to leave comments. Login now