Annotation of loncom/html/adm/jsMath/extensions/HTML.js, revision 1.1

1.1     ! albertel    1: /*
        !             2:  *  extensions/HTML.js
        !             3:  *  
        !             4:  *  Part of the jsMath package for mathematics on the web.
        !             5:  *
        !             6:  *  This file implements a number of HTML-specific extensions to TeX,
        !             7:  *  including \color, \style, \class, \unicode, etc.  It will be loaded
        !             8:  *  automatically when needed, or can be loaded by
        !             9:  *  
        !            10:  *    jsMath.Extension.Require('HTML');
        !            11:  *
        !            12:  *  ---------------------------------------------------------------------
        !            13:  *
        !            14:  *  Copyright 2005-2006 by Davide P. Cervone
        !            15:  * 
        !            16:  *  Licensed under the Apache License, Version 2.0 (the "License");
        !            17:  *  you may not use this file except in compliance with the License.
        !            18:  *  You may obtain a copy of the License at
        !            19:  * 
        !            20:  *      http://www.apache.org/licenses/LICENSE-2.0
        !            21:  * 
        !            22:  *  Unless required by applicable law or agreed to in writing, software
        !            23:  *  distributed under the License is distributed on an "AS IS" BASIS,
        !            24:  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
        !            25:  *  See the License for the specific language governing permissions and
        !            26:  *  limitations under the License.
        !            27:  */
        !            28: 
        !            29: /********************************************************************/
        !            30: 
        !            31: jsMath.Package(jsMath.Parser,{
        !            32: 
        !            33:   macros: {
        !            34:     color:      'Color',
        !            35:     href:       'Href',
        !            36:     'class':    'Class',
        !            37:     style:      'Style',
        !            38:     cssId:      'CSSId',
        !            39:     unicode:    'Unicode'
        !            40:   },
        !            41:   
        !            42:   /*
        !            43:    *  Show the argument in a particular color
        !            44:    */
        !            45:   Color: function (name) {
        !            46:     var color = this.GetArgument(this.cmd+name); if (this.error) return;
        !            47:     // check that it looks like a color?
        !            48:     this.AddHTML(name,['<span style="color: '+color+'">','</span>']);
        !            49:   },
        !            50:   
        !            51:   /*
        !            52:    *  Make the argument be a link
        !            53:    */
        !            54:   Href: function (name) {
        !            55:     var href = this.GetArgument(this.cmd+name); if (this.error) return;
        !            56:     this.AddHTML(name,['<a class="link" href="'+href+'">','</a>']);
        !            57:   },
        !            58:   
        !            59:   /*
        !            60:    *  Apply a CSS class to the argument
        !            61:    */
        !            62:   Class: function (name) {
        !            63:     var clss = this.GetArgument(this.cmd+name); if (this.error) return;
        !            64:     this.AddHTML(name,['<span class="'+clss+'">','</span>']);
        !            65:   },
        !            66:   
        !            67:   /*
        !            68:    *  Apply a CSS style to the argument
        !            69:    */
        !            70:   Style: function (name) {
        !            71:     var style = this.GetArgument(this.cmd+name); if (this.error) return;
        !            72:     this.AddHTML(name,['<span style="'+style+'">','</span>']);
        !            73:   },
        !            74:   
        !            75:   /*
        !            76:    *  Add a CSS element ID to the argument
        !            77:    */
        !            78:   CSSId: function (name) {
        !            79:     var id = this.GetArgument(this.cmd+name); if (this.error) return;
        !            80:     this.AddHTML(name,['<span id="'+id+'">','</span>']);
        !            81:   },
        !            82:   
        !            83:   /*
        !            84:    *  Insert some raw HTML around the argument (this will not affect
        !            85:    *  the spacing or other TeX features)
        !            86:    */
        !            87:   AddHTML: function (name,params) {
        !            88:     var data = this.mlist.data;
        !            89:     var arg = this.GetArgument(this.cmd+name); if (this.error) return;
        !            90:     arg = jsMath.Parse(arg,data.font,data.size,data.style);
        !            91:       if (arg.error) {this.Error(arg); return}
        !            92:     this.mlist.Add(jsMath.mItem.HTML(params[0]));
        !            93:     for (var i = 0; i < arg.mlist.Length(); i++) {this.mlist.Add(arg.mlist.Get(i))}
        !            94:     this.mlist.Add(jsMath.mItem.HTML(params[1]));
        !            95:   },
        !            96:   
        !            97:   /*
        !            98:    *  Insert a unicode reference as an Ord atom.  Its argument should
        !            99:    *  be the unicode code point, e.g. \unicode{8211}, or \unicode{x203F}.
        !           100:    *  You can also specify the height and depth in ems, e.g.,
        !           101:    *  \unicode{8211,.6,-.3}
        !           102:    */
        !           103:   Unicode: function (name) {
        !           104:     var arg = this.GetArgument(this.cmd+name); if (this.error) return;
        !           105:     arg = arg.split(','); arg[0] = '&#'+arg[0]+';';
        !           106:     if (!arg[1]) {arg[1] = 'normal'}
        !           107:     this.mlist.Add(jsMath.mItem.TextAtom('ord',arg[0],arg[1],arg[2],arg[3]));
        !           108:   }
        !           109: 
        !           110: });

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