Page Menu
Home
In-Portal Phabricator
Search
Configure Global Search
Log In
Files
F1081213
htmlmixed.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sun, Aug 3, 4:07 PM
Size
2 KB
Mime Type
text/plain
Expires
Tue, Aug 5, 4:07 PM (15 h, 51 m)
Engine
blob
Format
Raw Data
Handle
701782
Attached To
rINP In-Portal
htmlmixed.js
View Options
CodeMirror
.
defineMode
(
"htmlmixed"
,
function
(
config
,
parserConfig
)
{
var
htmlMode
=
CodeMirror
.
getMode
(
config
,
{
name
:
"xml"
,
htmlMode
:
true
});
var
jsMode
=
CodeMirror
.
getMode
(
config
,
"javascript"
);
var
cssMode
=
CodeMirror
.
getMode
(
config
,
"css"
);
function
html
(
stream
,
state
)
{
var
style
=
htmlMode
.
token
(
stream
,
state
.
htmlState
);
if
(
style
==
"tag"
&&
stream
.
current
()
==
">"
&&
state
.
htmlState
.
context
)
{
if
(
/^script$/i
.
test
(
state
.
htmlState
.
context
.
tagName
))
{
state
.
token
=
javascript
;
state
.
localState
=
jsMode
.
startState
(
htmlMode
.
indent
(
state
.
htmlState
,
""
));
state
.
mode
=
"javascript"
;
}
else
if
(
/^style$/i
.
test
(
state
.
htmlState
.
context
.
tagName
))
{
state
.
token
=
css
;
state
.
localState
=
cssMode
.
startState
(
htmlMode
.
indent
(
state
.
htmlState
,
""
));
state
.
mode
=
"css"
;
}
}
return
style
;
}
function
maybeBackup
(
stream
,
pat
,
style
)
{
var
cur
=
stream
.
current
();
var
close
=
cur
.
search
(
pat
);
if
(
close
>
-
1
)
stream
.
backUp
(
cur
.
length
-
close
);
return
style
;
}
function
javascript
(
stream
,
state
)
{
if
(
stream
.
match
(
/^<\/\s*script\s*>/i
,
false
))
{
state
.
token
=
html
;
state
.
localState
=
null
;
state
.
mode
=
"html"
;
return
html
(
stream
,
state
);
}
return
maybeBackup
(
stream
,
/<\/\s*script\s*>/
,
jsMode
.
token
(
stream
,
state
.
localState
));
}
function
css
(
stream
,
state
)
{
if
(
stream
.
match
(
/^<\/\s*style\s*>/i
,
false
))
{
state
.
token
=
html
;
state
.
localState
=
null
;
state
.
mode
=
"html"
;
return
html
(
stream
,
state
);
}
return
maybeBackup
(
stream
,
/<\/\s*style\s*>/
,
cssMode
.
token
(
stream
,
state
.
localState
));
}
return
{
startState
:
function
()
{
var
state
=
htmlMode
.
startState
();
return
{
token
:
html
,
localState
:
null
,
mode
:
"html"
,
htmlState
:
state
};
},
copyState
:
function
(
state
)
{
if
(
state
.
localState
)
var
local
=
CodeMirror
.
copyState
(
state
.
token
==
css
?
cssMode
:
jsMode
,
state
.
localState
);
return
{
token
:
state
.
token
,
localState
:
local
,
mode
:
state
.
mode
,
htmlState
:
CodeMirror
.
copyState
(
htmlMode
,
state
.
htmlState
)};
},
token
:
function
(
stream
,
state
)
{
return
state
.
token
(
stream
,
state
);
},
indent
:
function
(
state
,
textAfter
)
{
if
(
state
.
token
==
html
||
/^\s*<\//
.
test
(
textAfter
))
return
htmlMode
.
indent
(
state
.
htmlState
,
textAfter
);
else
if
(
state
.
token
==
javascript
)
return
jsMode
.
indent
(
state
.
localState
,
textAfter
);
else
return
cssMode
.
indent
(
state
.
localState
,
textAfter
);
},
compareStates
:
function
(
a
,
b
)
{
if
(
a
.
mode
!=
b
.
mode
)
return
false
;
if
(
a
.
localState
)
return
CodeMirror
.
Pass
;
return
htmlMode
.
compareStates
(
a
.
htmlState
,
b
.
htmlState
);
},
electricChars
:
"/{}:"
}
},
"xml"
,
"javascript"
,
"css"
);
CodeMirror
.
defineMIME
(
"text/html"
,
"htmlmixed"
);
Event Timeline
Log In to Comment