src/core/parseHTML.js

Maintainability

58.22

Lines of code

65

Created with Raphaël 2.1.002550751002016-7-102016-6-102016-5-112016-4-112016-3-122016-2-112016-1-12

2016-8-9
Maintainability: 58.22

Created with Raphaël 2.1.0017.53552.5702016-7-102016-6-102016-5-112016-4-112016-3-122016-2-112016-1-12

2016-8-9
Lines of Code: 65

Difficulty

14.92

Estimated Errors

0.28

Function weight

By Complexity

Created with Raphaël 2.1.0<anonymous>9

By SLOC

Created with Raphaël 2.1.0<anonymous>57
1
define( [
2
    "../core",
3
    "../var/document",
4
    "./var/rsingleTag",
5
    "../manipulation/buildFragment",
6
 
7
    // This is the only module that needs core/support
8
    "./support"
9
], function( jQuery, document, rsingleTag, buildFragment, support ) {
10
 
11
"use strict";
12
 
13
// Argument "data" should be string of html
14
// context (optional): If specified, the fragment will be created in this context,
15
// defaults to document
16
// keepScripts (optional): If true, will include scripts passed in the html string
17
jQuery.parseHTML = function( data, context, keepScripts ) {
18
    if ( typeof data !== "string" ) {
19
        return [];
20
    }
21
    if ( typeof context === "boolean" ) {
22
        keepScripts = context;
23
        context = false;
24
    }
25
 
26
    var base, parsed, scripts;
27
 
28
    if ( !context ) {
29
 
30
        // Stop scripts or inline event handlers from being executed immediately
31
        // by using document.implementation
32
        if ( support.createHTMLDocument ) {
33
            context = document.implementation.createHTMLDocument( "" );
34
 
35
            // Set the base href for the created document
36
            // so any parsed elements with URLs
37
            // are based on the document's URL (gh-2965)
38
            base = context.createElement( "base" );
39
            base.href = document.location.href;
40
            context.head.appendChild( base );
41
        } else {
42
            context = document;
43
        }
44
    }
45
 
46
    parsed = rsingleTag.exec( data );
47
    scripts = !keepScripts && [];
48
 
49
    // Single tag
50
    if ( parsed ) {
51
        return [ context.createElement( parsed[ 1 ] ) ];
52
    }
53
 
54
    parsed = buildFragment( [ data ], context, scripts );
55
 
56
    if ( scripts && scripts.length ) {
57
        jQuery( scripts ).remove();
58
    }
59
 
60
    return jQuery.merge( [], parsed.childNodes );
61
};
62
 
63
return jQuery.parseHTML;
64
 
65
} );