(stream, state)
| 29 | mode: CodeMirror.getMode(config, "text/plain")}); |
| 30 | |
| 31 | function html(stream, state) { |
| 32 | var tagName = state.htmlState.tagName; |
| 33 | if (tagName) tagName = tagName.toLowerCase(); |
| 34 | var style = htmlMode.token(stream, state.htmlState); |
| 35 | if (tagName == "script" && /\btag\b/.test(style) && stream.current() == ">") { |
| 36 | // Script block: mode to change to depends on type attribute |
| 37 | var scriptType = stream.string.slice(Math.max(0, stream.pos - 100), stream.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i); |
| 38 | scriptType = scriptType ? scriptType[1] : ""; |
| 39 | if (scriptType && /[\"\']/.test(scriptType.charAt(0))) scriptType = scriptType.slice(1, scriptType.length - 1); |
| 40 | for (var i = 0; i < scriptTypes.length; ++i) { |
| 41 | var tp = scriptTypes[i]; |
| 42 | if (typeof tp.matches == "string" ? scriptType == tp.matches : tp.matches.test(scriptType)) { |
| 43 | if (tp.mode) { |
| 44 | state.token = script; |
| 45 | state.localMode = tp.mode; |
| 46 | state.localState = tp.mode.startState && tp.mode.startState(htmlMode.indent(state.htmlState, "")); |
| 47 | } |
| 48 | break; |
| 49 | } |
| 50 | } |
| 51 | } else if (tagName == "style" && /\btag\b/.test(style) && stream.current() == ">") { |
| 52 | state.token = css; |
| 53 | state.localMode = cssMode; |
| 54 | state.localState = cssMode.startState(htmlMode.indent(state.htmlState, "")); |
| 55 | } |
| 56 | return style; |
| 57 | } |
| 58 | function maybeBackup(stream, pat, style) { |
| 59 | var cur = stream.current(); |
| 60 | var close = cur.search(pat), m; |
nothing calls this directly
no outgoing calls
no test coverage detected