@@ -20,44 +20,18 @@ if (!String.prototype.repeat) {
20
20
} ;
21
21
}
22
22
23
- // The jQuery version of container.text() is broken on IE6.
24
- // This version fixes it... for pre elements only. Other elements
25
- // in IE will have the whitespace manipulated.
26
- Syntax . innerText = function ( elems ) {
27
- var cdata = '' , elem ;
23
+ Syntax . innerText = function ( element ) {
24
+ var text ;
28
25
29
- ( function ( elems ) {
30
- for ( var i = 0 ; elems [ i ] ; i ++ ) {
31
- elem = elems [ i ] ;
32
-
33
- // Get the text from text nodes and CDATA nodes
34
- if ( elem . nodeType === 3 || elem . nodeType === 4 ) {
35
- cdata += elem . nodeValue ;
36
-
37
- // Use textContent || innerText for elements
38
- } else if ( elem . nodeType === 1 ) {
39
- if ( elem . nodeName . toUpperCase ( ) == 'BR' )
40
- cdata += "\n" ;
41
- else if ( typeof ( elem . innerText ) === 'string' )
42
- cdata += elem . innerText ;
43
- //else if (typeof(elem.textContent) === 'string')
44
- // cdata += elem.textContent;
45
- else
46
- arguments . callee ( elem . childNodes ) ;
47
-
48
- // If we encounter a <div>, this must be a complete line.
49
- // So we normalise this back to whitespace:
50
- if ( elem . nodeName . toUpperCase ( ) == 'DIV' && cdata [ cdata . length - 1 ] != '\n' )
51
- cdata += '\n' ;
52
-
53
- // Traverse everything else, except comment nodes
54
- } else if ( elem . nodeType !== 8 ) {
55
- arguments . callee ( elem . childNodes ) ;
56
- }
57
- }
58
- } ) ( elems ) ;
26
+ if ( element . nodeName == 'BR' ) {
27
+ return '\n' ;
28
+ } else if ( document . body . innerText ) {
29
+ text = element . innerText ;
30
+ } else {
31
+ text = element . innerHTML . replace ( / < b r \/ ? > / gi, '\n' ) . replace ( / < [ ^ > ] + > / gi, "" ) ;
32
+ }
59
33
60
- return cdata . replace ( / \r \n ? / g, '\n' ) ;
34
+ return text . replace ( / \r \n ? / g, '\n' ) ;
61
35
}
62
36
63
37
// Convert to stack based implementation
@@ -74,7 +48,7 @@ Syntax.extractElementMatches = function (elems, offset, tabWidth) {
74
48
offset += elem . nodeValue . length ;
75
49
76
50
} else if ( elem . nodeType === 1 ) {
77
- var text = Syntax . innerText ( elem . childNodes ) ;
51
+ var text = Syntax . innerText ( elem ) ;
78
52
var expr = { klass : elem . className , force : true , element : elem } ;
79
53
80
54
matches . push ( new Syntax . Match ( offset , text . length , expr , text ) ) ;
@@ -975,7 +949,7 @@ Syntax.highlight = function (elements, options, callback) {
975
949
// We can augment the plain text to extract existing annotations (e.g. <span class="foo">...</span>).
976
950
options . matches = options . matches . concat ( Syntax . extractElementMatches ( container ) ) ;
977
951
978
- var text = Syntax . innerText ( container ) ;
952
+ var text = Syntax . innerText ( this ) ;
979
953
980
954
var match = text . match ( / - \* - m o d e : ( .+ ?) ; ( .* ?) - \* - / i) ;
981
955
var endOfSecondLine = text . indexOf ( "\n" , text . indexOf ( "\n" ) + 1 ) ;
0 commit comments