(input, start, end)
| 337 | * @returns {number} content mode state, or STATE_DATA |
| 338 | */ |
| 339 | const getContentModeForRange = (input, start, end) => { |
| 340 | switch (end - start) { |
| 341 | case 3: |
| 342 | if (rangeEqualsLower(input, start, end, "xmp")) return STATE_RAWTEXT; |
| 343 | return STATE_DATA; |
| 344 | case 5: |
| 345 | if (rangeEqualsLower(input, start, end, "title")) return STATE_RCDATA; |
| 346 | if (rangeEqualsLower(input, start, end, "style")) return STATE_RAWTEXT; |
| 347 | return STATE_DATA; |
| 348 | case 6: |
| 349 | if (rangeEqualsLower(input, start, end, "script")) { |
| 350 | return STATE_SCRIPT_DATA; |
| 351 | } |
| 352 | if (rangeEqualsLower(input, start, end, "iframe")) return STATE_RAWTEXT; |
| 353 | return STATE_DATA; |
| 354 | case 7: |
| 355 | if (rangeEqualsLower(input, start, end, "noembed")) return STATE_RAWTEXT; |
| 356 | return STATE_DATA; |
| 357 | case 8: |
| 358 | if (rangeEqualsLower(input, start, end, "textarea")) return STATE_RCDATA; |
| 359 | if (rangeEqualsLower(input, start, end, "noframes")) return STATE_RAWTEXT; |
| 360 | return STATE_DATA; |
| 361 | case 9: |
| 362 | if (rangeEqualsLower(input, start, end, "plaintext")) { |
| 363 | return STATE_PLAINTEXT; |
| 364 | } |
| 365 | return STATE_DATA; |
| 366 | default: |
| 367 | return STATE_DATA; |
| 368 | } |
| 369 | }; |
| 370 | |
| 371 | /** |
| 372 | * @param {string} input input string |
no test coverage detected