Файл: modules/syntaxhighlighter/src/shLegacy.js
Строк: 151
<?php
/**
 * SyntaxHighlighter
 * http://alexgorbatchev.com/SyntaxHighlighter
 *
 * SyntaxHighlighter is donationware. If you are using it, please donate.
 * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
 *
 * @version
 * 3.0.83 (July 02 2010)
 * 
 * @copyright
 * Copyright (C) 2004-2010 Alex Gorbatchev.
 *
 * @license
 * Dual licensed under the MIT and GPL licenses.
 */
var dp = {
    SyntaxHighlighter : {}
};
dp.SyntaxHighlighter = {
    parseParams: function(
                        input,
                        showGutter, 
                        showControls, 
                        collapseAll, 
                        firstLine, 
                        showColumns
                        )
    {
        function getValue(list, name)
        {
            var regex = new XRegExp('^' + name + '\[(?<value>\w+)\]$', 'gi'),
                match = null
                ;
            
            for (var i = 0; i < list.length; i++) 
                if ((match = regex.exec(list[i])) != null)
                    return match.value;
            
            return null;
        };
        
        function defaultValue(value, def)
        {
            return value != null ? value : def;
        };
        
        function asString(value)
        {
            return value != null ? value.toString() : null;
        };
        var parts = input.split(':'),
            brushName = parts[0],
            options = {},
            straight = { 'true' : true }
            reverse = { 'true' : false },
            result = null,
            defaults = SyntaxHighlighter.defaults
            ;
        
        for (var i in parts)
            options[parts[i]] = 'true';
        showGutter = asString(defaultValue(showGutter, defaults.gutter));
        showControls = asString(defaultValue(showControls, defaults.toolbar));
        collapseAll = asString(defaultValue(collapseAll, defaults.collapse)); 
        showColumns = asString(defaultValue(showColumns, defaults.ruler));
        firstLine = asString(defaultValue(firstLine, defaults['first-line'])); 
        return {
            brush            : brushName,
            gutter            : defaultValue(reverse[options.nogutter], showGutter),
            toolbar            : defaultValue(reverse[options.nocontrols], showControls),
            collapse        : defaultValue(straight[options.collapse], collapseAll),
            // ruler            : defaultValue(straight[options.showcolumns], showColumns),
            'first-line'    : defaultValue(getValue(parts, 'firstline'), firstLine)
        };
    },
    
    HighlightAll: function(
                        name, 
                        showGutter /* optional */, 
                        showControls /* optional */, 
                        collapseAll /* optional */, 
                        firstLine /* optional */, 
                        showColumns /* optional */
                        )
    {
        function findValue()
        {
            var a = arguments;
            
            for (var i = 0; i < a.length; i++) 
            {
                if (a[i] === null) 
                    continue;
                
                if (typeof(a[i]) == 'string' && a[i] != '') 
                    return a[i] + '';
                
                if (typeof(a[i]) == 'object' && a[i].value != '') 
                    return a[i].value + '';
            }
            
            return null;
        };
        function findTagsByName(list, name, tagName)
        {
            var tags = document.getElementsByTagName(tagName);
            
            for (var i = 0; i < tags.length; i++) 
                if (tags[i].getAttribute('name') == name) 
                    list.push(tags[i]);
        }
        
        var elements = [],
            highlighter = null,
            registered = {},
            propertyName = 'innerHTML'
            ;
        
        // for some reason IE doesn't find <pre/> by name, however it does see them just fine by tag name... 
        findTagsByName(elements, name, 'pre');
        findTagsByName(elements, name, 'textarea');
        if (elements.length === 0)
            return;
        
        for (var i = 0; i < elements.length; i++)
        {
            var element = elements[i],
                params = findValue(
                    element.attributes['class'], element.className, 
                    element.attributes['language'], element.language
                    ),
                language = ''
                ;
            
            if (params === null) 
                continue;
            params = dp.SyntaxHighlighter.parseParams(
                params,
                showGutter, 
                showControls, 
                collapseAll, 
                firstLine, 
                showColumns
                );
            SyntaxHighlighter.highlight(params, element);
        }
    }
};
?>