* Isolate * * @param {Array } current
(current)
| 23399 | * @param {Array<string>} current |
| 23400 | */ |
| 23401 | function isolate (current) { |
| 23402 | for (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) { |
| 23403 | // split individual elements in a selector i.e h1 h2 === [h1, h2] |
| 23404 | var elements = current[i].split(elementptn) |
| 23405 | var out = '' |
| 23406 | |
| 23407 | for (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) { |
| 23408 | // empty element |
| 23409 | if ((size = (element = elements[j]).length) === 0 && l > 1) { |
| 23410 | continue |
| 23411 | } |
| 23412 | |
| 23413 | tail = out.charCodeAt(out.length-1) |
| 23414 | code = element.charCodeAt(0) |
| 23415 | padding = '' |
| 23416 | |
| 23417 | if (j !== 0) { |
| 23418 | // determine if we need padding |
| 23419 | switch (tail) { |
| 23420 | case STAR: |
| 23421 | case TILDE: |
| 23422 | case GREATERTHAN: |
| 23423 | case PLUS: |
| 23424 | case SPACE: |
| 23425 | case OPENPARENTHESES: { |
| 23426 | break |
| 23427 | } |
| 23428 | default: { |
| 23429 | padding = ' ' |
| 23430 | } |
| 23431 | } |
| 23432 | } |
| 23433 | |
| 23434 | switch (code) { |
| 23435 | case AND: { |
| 23436 | element = padding + nscopealt |
| 23437 | } |
| 23438 | case TILDE: |
| 23439 | case GREATERTHAN: |
| 23440 | case PLUS: |
| 23441 | case SPACE: |
| 23442 | case CLOSEPARENTHESES: |
| 23443 | case OPENPARENTHESES: { |
| 23444 | break |
| 23445 | } |
| 23446 | case OPENBRACKET: { |
| 23447 | element = padding + element + nscopealt |
| 23448 | break |
| 23449 | } |
| 23450 | case COLON: { |
| 23451 | switch (element.charCodeAt(1)*2 + element.charCodeAt(2)*3) { |
| 23452 | // :global |
| 23453 | case 530: { |
| 23454 | if (escape > 0) { |
| 23455 | element = padding + element.substring(8, size - 1) |
| 23456 | break |
| 23457 | } |
| 23458 | } |