1. JavaScript / Говнокод #2428

    +166.1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    var val = value.match(/^(-?\d*)n((\+|\-)(\d+))?$/);
    var v1 = (val[1] == "-") ? -1 : parseInt(val[1]);	// A/-
    var v3 = val[3];			// +/-
    var v4 = parseInt(val[4]);	// B
    var k = 0;
    for (var k = 0; k < children2.length; k++) {
    	if (!val[1] && !val[3] && !val[4] && (children2[k] == elements[j])) { // n
    		buf.push(children2[k]);
    	} else if (!!val[1] && !val[3] && !val[4] && (children2[v1 * k + v1 - 1] == elements[j])) { // An
    		if (v1 >= 0 && v1 * k + v1 - 1 < children2.length) buf.push(children2[v1 * k + v1 - 1]);
    	} else if (!val[1] && !!val[3] && !!val[4] && (children2[v3 == "+" ? (k + v4 - (v4 == 0 ? 0 : 1)) : (v3 == "-" ? k : "")] == elements[j])) { // n+B
    		if (v3 == "+" && (k + v4 - (v4 == 0 ? 0 : 1)) < children2.length) {
    			buf.push(children2[k + v4 - (v4 == 0 ? 0 : 1)]);
    		} else if (v3 == "-") {
    			buf.push(children2[k]);
    		}
    	} else if (!!val[1] && !!val[3] && !!val[4] && (children2[v3 == "+" ? (v1 * k + (v4 == 0 ? (v1 - 1) : 0) + v4 - (v4 == 0 ? 0 : 1)) : (v3 == "-" ? (v1 * k + (v4 == 0 ? (v1 - 1) : 0) - v4 - (v4 == 0 ? 0 : 1)) : "")] == elements[j])) { // An+B
    		if (v3 == "+" && (v1 * k + (v4 == 0 ? (v1 - 1) : 0) + v4 - (v4 == 0 ? 0 : 1)) >= 0 && (v1 * k + (v4 == 0 ? (v1 - 1) : 0) + v4 - (v4 == 0 ? 0 : 1)) < children2.length) {
    			buf.push(children2[v1 * k + (v4 == 0 ? (v1 - 1) : 0) + v4 - (v4 == 0 ? 0 : 1)]);
    		} else if (v3 == "-" && (v1 * k + (v4 == 0 ? (v1 - 1) : 0) - v4 - (v4 == 0 ? 0 : 1)) >= 0 && (v1 * k + (v4 == 0 ? (v1 - 1) : 0) - v4 - (v4 == 0 ? 0 : 1)) < children2.length) {
    			buf.push(children2[v1 * k + (v4 == 0 ? (v1 - 1) : 0) - v4 - (v4 == 0 ? 0 : 1)]);
    		}
    	}
    }

    ГК собственного сочинения. Пытался самостоятельно реализовать обработку псевдоселектора :nth-child(An+B) на JavaScript...

    Запостил: Cr@ZyBoY, 17 Января 2010

    Комментарии (8) RSS

    Добавить комментарий