function (s, o) {
        var a, i, k;
        JSHINT.errors = [];
        predefined = Object.create(standard);
        if (o) {
            a = o.predef;
            if (a) {
                if (Array.isArray(a)) {
                    for (i = 0; i < a.length; i += 1) {
                        predefined[a[i]] = true;
                    }
                } else if (typeof a === 'object') {
                    k = Object.keys(a);
                    for (i = 0; i < k.length; i += 1) {
                        predefined[k[i]] = !!a[k];
                    }
                }
            }
            if (o.adsafe) {
                o.safe = true;
            }
            if (o.safe) {
                o.browser =
                o.css     =
                o.debug   =
                o.devel   =
                o.evil    =
                o.forin   =
                o.on      =
                o.rhino   =
                o.windows =
                o.sub     =
                o.widget  = false;

                o.eqeqeq  =
                o.nomen   =
                o.safe    =
                o.undef   = true;

                predefined.Date =
                predefined['eval'] =
                predefined.Function =
                predefined.Object = null;

                predefined.ADSAFE =
                predefined.lib = false;
            }
            option = o;
        } else {
            option = {};
        }
        option.indent = option.indent || 4;
        option.maxerr = option.maxerr || 50;
        adsafe_id = '';
        adsafe_may = false;
        adsafe_went = false;
        approved = {};
        if (option.approved) {
            for (i = 0; i < option.approved.length; i += 1) {
                approved[option.approved[i]] = option.approved[i];
            }
        } else {
            approved.test = 'test';
        }
        tab = '';
        for (i = 0; i < option.indent; i += 1) {
            tab += ' ';
        }
        indent = 1;
        global = Object.create(predefined);
        scope = global;
        funct = {
            '(global)': true,
            '(name)': '(global)',
            '(scope)': scope,
            '(breakage)': 0,
            '(loopage)': 0
        };
        functions = [funct];
        ids = {};
        urls = [];
        src = false;
        xmode = false;
        stack = null;
        member = {};
        membersOnly = null;
        implied = {};
        inblock = false;
        lookahead = [];
        jsonmode = false;
        warnings = 0;
        lex.init(s);
        prereg = true;
        strict_mode = false;

        prevtoken = token = nexttoken = syntax['(begin)'];
        assume();

        try {
            advance();
            if (nexttoken.value.charAt(0) === '<') {
                html();
                if (option.adsafe && !adsafe_went) {
                    warning("ADsafe violation: Missing ADSAFE.go.", this);
                }
            } else {
                switch (nexttoken.id) {
                case '{':
                case '[':
                    option.laxbreak = true;
                    jsonmode = true;
                    jsonValue();
                    break;
                case '@':
                case '*':
                case '#':
                case '.':
                case ':':
                    xmode = 'style';
                    advance();
                    if (token.id !== '@' || !nexttoken.identifier ||
                            nexttoken.value !== 'charset' || token.line !== 1 ||
                            token.from !== 1) {
                        error("A css file should begin with @charset 'UTF-8';");
                    }
                    advance();
                    if (nexttoken.type !== '(string)' &&
                            nexttoken.value !== 'UTF-8') {
                        error("A css file should begin with @charset 'UTF-8';");
                    }
                    advance();
                    advance(';');
                    styles();
                    break;

                default:
                    if (option.adsafe && option.fragment) {
                        error("Expected '{a}' and instead saw '{b}'.",
                            nexttoken, '<div>', nexttoken.value);
                    }
                    if (nexttoken.value === 'use strict') {
                        warning("Use the function form of \"use strict\".");
                        use_strict();
                    }
                    statements('lib');
                }
            }
            advance('(end)');
        } catch (e) {
            if (e) {
                JSHINT.errors.push({
                    reason    : e.message,
                    line      : e.line || nexttoken.line,
                    character : e.character || nexttoken.from
                }, null);
            }
        }
        return JSHINT.errors.length === 0;
    }
function (s, o) {
        var a, i, k;
        JSHINT.errors = [];
        predefined = Object.create(standard);
        if (o) {
            a = o.predef;
            if (a) {
                if (Array.isArray(a)) {
                    for (i = 0; i < a.length; i += 1) {
                        predefined[a[i]] = true;
                    }
                } else if (typeof a === 'object') {
                    k = Object.keys(a);
                    for (i = 0; i < k.length; i += 1) {
                        predefined[k[i]] = !!a[k];
                    }
                }
            }
            if (o.adsafe) {
                o.safe = true;
            }
            if (o.safe) {
                o.browser =
                o.css     =
                o.debug   =
                o.devel   =
                o.evil    =
                o.forin   =
                o.on      =
                o.rhino   =
                o.windows =
                o.sub     =
                o.widget  = false;

                o.eqeqeq  =
                o.nomen   =
                o.safe    =
                o.undef   = true;

                predefined.Date =
                predefined['eval'] =
                predefined.Function =
                predefined.Object = null;

                predefined.ADSAFE =
                predefined.lib = false;
            }
            option = o;
        } else {
            option = {};
        }
        option.indent = option.indent || 4;
        option.maxerr = option.maxerr || 50;
        adsafe_id = '';
        adsafe_may = false;
        adsafe_went = false;
        approved = {};
        if (option.approved) {
            for (i = 0; i < option.approved.length; i += 1) {
                approved[option.approved[i]] = option.approved[i];
            }
        } else {
            approved.test = 'test';
        }
        tab = '';
        for (i = 0; i < option.indent; i += 1) {
            tab += ' ';
        }
        indent = 1;
        global = Object.create(predefined);
        scope = global;
        funct = {
            '(global)': true,
            '(name)': '(global)',
            '(scope)': scope,
            '(breakage)': 0,
            '(loopage)': 0
        };
        functions = [funct];
        ids = {};
        urls = [];
        src = false;
        xmode = false;
        stack = null;
        member = {};
        membersOnly = null;
        implied = {};
        inblock = false;
        lookahead = [];
        jsonmode = false;
        warnings = 0;
        lex.init(s);
        prereg = true;
        strict_mode = false;

        prevtoken = token = nexttoken = syntax['(begin)'];
        assume();

        try {
            advance();
            if (nexttoken.value.charAt(0) === '<') {
                html();
                if (option.adsafe && !adsafe_went) {
                    warning("ADsafe violation: Missing ADSAFE.go.", this);
                }
            } else {
                switch (nexttoken.id) {
                case '{':
                case '[':
                    option.laxbreak = true;
                    jsonmode = true;
                    jsonValue();
                    break;
                case '@':
                case '*':
                case '#':
                case '.':
                case ':':
                    xmode = 'style';
                    advance();
                    if (token.id !== '@' || !nexttoken.identifier ||
                            nexttoken.value !== 'charset' || token.line !== 1 ||
                            token.from !== 1) {
                        error("A css file should begin with @charset 'UTF-8';");
                    }
                    advance();
                    if (nexttoken.type !== '(string)' &&
                            nexttoken.value !== 'UTF-8') {
                        error("A css file should begin with @charset 'UTF-8';");
                    }
                    advance();
                    advance(';');
                    styles();
                    break;

                default:
                    if (option.adsafe && option.fragment) {
                        error("Expected '{a}' and instead saw '{b}'.",
                            nexttoken, '<div>', nexttoken.value);
                    }
                    if (nexttoken.value === 'use strict') {
                        warning("Use the function form of \"use strict\".");
                        use_strict();
                    }
                    statements('lib');
                }
            }
            advance('(end)');
        } catch (e) {
            if (e) {
                JSHINT.errors.push({
                    reason    : e.message,
                    line      : e.line || nexttoken.line,
                    character : e.character || nexttoken.from
                }, null);
            }
        }
        return JSHINT.errors.length === 0;
    }
function ( s , o ) { var a , i , k ; JSHINT . errors = [ ] ; predefined = Object . create ( standard ) ; if ( o ) { a = o . predef ; if ( a ) { if ( Array . isArray ( a ) ) { for ( i = 0 ; i < a . length ; i += 1 ) { predefined [ a [ i ] ] = true ; } } else if ( typeof a === 'object' ) { k = Object . keys ( a ) ; for ( i = 0 ; i < k . length ; i += 1 ) { predefined [ k [ i ] ] = ! ! a [ k ] ; } } } if ( o . adsafe ) { o . safe = true ; } if ( o . safe ) { o . browser = o . css = o . debug = o . devel = o . evil = o . forin = o . on = o . rhino = o . windows = o . sub = o . widget = false ; o . eqeqeq = o . nomen = o . safe = o . undef = true ; predefined . Date = predefined [ 'eval' ] = predefined . Function = predefined . Object = null ; predefined . ADSAFE = predefined . lib = false ; } option = o ; } else { option = { } ; } option . indent = option . indent || 4 ; option . maxerr = option . maxerr || 50 ; adsafe_id = '' ; adsafe_may = false ; adsafe_went = false ; approved = { } ; if ( option . approved ) { for ( i = 0 ; i < option . approved . length ; i += 1 ) { approved [ option . approved [ i ] ] = option . approved [ i ] ; } } else { approved . test = 'test' ; } tab = '' ; for ( i = 0 ; i < option . indent ; i += 1 ) { tab += ' ' ; } indent = 1 ; global = Object . create ( predefined ) ; scope = global ; funct = { '(global)' : true , '(name)' : '(global)' , '(scope)' : scope , '(breakage)' : 0 , '(loopage)' : 0 } ; functions = [ funct ] ; ids = { } ; urls = [ ] ; src = false ; xmode = false ; stack = null ; member = { } ; membersOnly = null ; implied = { } ; inblock = false ; lookahead = [ ] ; jsonmode = false ; warnings = 0 ; lex . init ( s ) ; prereg = true ; strict_mode = false ; prevtoken = token = nexttoken = syntax [ '(begin)' ] ; assume ( ) ; try { advance ( ) ; if ( nexttoken . value . charAt ( 0 ) === '<' ) { html ( ) ; if ( option . adsafe && ! adsafe_went ) { warning ( "ADsafe violation: Missing ADSAFE.go." , this ) ; } } else { switch ( nexttoken . id ) { case '{' : case '[' : option . laxbreak = true ; jsonmode = true ; jsonValue ( ) ; break ; case '@' : case '*' : case '#' : case '.' : case ':' : xmode = 'style' ; advance ( ) ; if ( token . id !== '@' || ! nexttoken . identifier || nexttoken . value !== 'charset' || token . line !== 1 || token . from !== 1 ) { error ( "A css file should begin with @charset 'UTF-8';" ) ; } advance ( ) ; if ( nexttoken . type !== '(string)' && nexttoken . value !== 'UTF-8' ) { error ( "A css file should begin with @charset 'UTF-8';" ) ; } advance ( ) ; advance ( ';' ) ; styles ( ) ; break ; default : if ( option . adsafe && option . fragment ) { error ( "Expected '{a}' and instead saw '{b}'." , nexttoken , '<div>' , nexttoken . value ) ; } if ( nexttoken . value === 'use strict' ) { warning ( "Use the function form of \"use strict\"." ) ; use_strict ( ) ; } statements ( 'lib' ) ; } } advance ( '(end)' ) ; } catch ( e ) { if ( e ) { JSHINT . errors . push ( { reason : e . message , line : e . line || nexttoken . line , character : e . character || nexttoken . from } , null ) ; } } return JSHINT . errors . length === 0 ; }
The actual JSHINT function itself.
The actual JSHINT function itself .