Annotation of loncom/html/adm/jsMath/extensions/mathchoice.js, revision 1.2

1.1       albertel    1: /*
                      2:  *  extensions/mathchoice.js
                      3:  *  
                      4:  *  Part of the jsMath package for mathematics on the web.
                      5:  *
                      6:  *  This file implements the 4-way math choice.  It will be loaded
                      7:  *  automatically when needed, or can be loaded by
                      8:  *  
                      9:  *    jsMath.Extension.Require('mathchoice');
                     10:  *
                     11:  *  ---------------------------------------------------------------------
                     12:  *
                     13:  *  Copyright 2005-2006 by Davide P. Cervone
                     14:  * 
                     15:  *  Licensed under the Apache License, Version 2.0 (the "License");
                     16:  *  you may not use this file except in compliance with the License.
                     17:  *  You may obtain a copy of the License at
                     18:  * 
                     19:  *      http://www.apache.org/licenses/LICENSE-2.0
                     20:  * 
                     21:  *  Unless required by applicable law or agreed to in writing, software
                     22:  *  distributed under the License is distributed on an "AS IS" BASIS,
                     23:  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
                     24:  *  See the License for the specific language governing permissions and
                     25:  *  limitations under the License.
                     26:  */
                     27: 
                     28: /********************************************************************/
                     29: 
                     30: jsMath.Add(jsMath.mList.prototype.Atomize,{
                     31: 
                     32:   /*
                     33:    *  Handle a 4-way choice atom.  (Rule 4)
                     34:    */
                     35:   choice: function (style,mitem,i,mlist) {
                     36:     if (style.charAt(style.length-1) == "'") {style = style.slice(0,style.length-1)}
1.2     ! albertel   37:     var nlist = []; var M = mitem[style];
        !            38:     if (!M) {M = {type: 'mlist', mlist: {mlist: []}}}
1.1       albertel   39:     if (M.type == 'mlist') {
                     40:       M = M.mlist.mlist;
                     41:       for (var k = 0; k < i; k++) {nlist[k] = mlist[k]}
                     42:       for (k = 0; k < M.length; k++) {nlist[i+k] = M[k]}
                     43:       for (k = i+1; k < mlist.length; k++) {nlist[nlist.length] = mlist[k]}
                     44:       return nlist;
                     45:     } else {
                     46:       mlist[i] = jsMath.mItem.Atom('ord',M);
                     47:       return mlist;
                     48:     }
                     49:   }
                     50: 
                     51: });
                     52: 
                     53: jsMath.Package(jsMath.Parser,{
                     54: 
                     55:   macros: {mathchoice: 'MathChoice'},
                     56:   
                     57:   /*
                     58:    *  Implements \mathchoice{}{}{}{}
                     59:    */
                     60:   MathChoice: function (name) {
                     61:     var D  = this.ProcessArg(this.cmd+name); if (this.error) return;
                     62:     var T  = this.ProcessArg(this.cmd+name); if (this.error) return;
                     63:     var S  = this.ProcessArg(this.cmd+name); if (this.error) return;
                     64:     var SS = this.ProcessArg(this.cmd+name); if (this.error) return;
                     65:     var box = new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS});
                     66:     this.mlist.Add(new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS}));
                     67:   }
                     68: 
                     69: });
                     70: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>