Portál AbcLinuxu, 1. května 2025 05:51

CSS split

13.3.2007 10:38 | Přečteno: 1362×

Jednoduchý (perl) skriptík na rozdelenie existujúceho css, resp vytiahnutie niektorých properties.

use strict;
use warnings;

######################################################################
######################################################################

use CSS::Tiny;

my $without = CSS::Tiny->read ('styles.css');
my $with = CSS::Tiny->new;

my @move = qw( color background-color background border-color );
my @copy  = qw( );

while (my ($selector, $def) = each %$without) {
    for my $property (@move) {
        $with->{$selector}{$property} = delete $def->{$property}
          if exists $def->{$property};
    }

    for my $property (@copy) {
        $with->{$selector}{$property} = $def->{$property}
          if exists $def->{$property};
    }
}

$without->write ('styles-without.css');
$with->write ('styles-with.css');


       

Hodnocení: 67 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

13.3.2007 11:19 repli
Rozbalit Rozbalit vše Re: CSS split
Odpovědět | Sbalit | Link | Blokovat | Admin
Mě by se spíš hodil script, který by prošel všechny soubory, včetně PHP (takže by musel počítat s přebytečnými \) a vyhodit z css všechno co se nepoužívá. Možná se do toho někdy pustím, ale zatím neumím tolik abych to udělal :(
13.3.2007 12:24 Tomáš | skóre: 31 | blog: Tomik
Rozbalit Rozbalit vše Re: CSS split
V tom pripade si dej pozor na situaci, kdy tridu pro css plnis z promenne, napr "cssClass='div_' + $value", nebo jak se to v tom PHP pise.
13.3.2007 13:55 repli
Rozbalit Rozbalit vše Re: CSS split
hmm tak tohle na locale pujde hodne spatne. (i kdyz já zatím neplním třídy proměnnýma)
13.3.2007 11:23 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: CSS split
Odpovědět | Sbalit | Link | Blokovat | Admin
Má to něco společného s oddělením definice rozložení prvků a definice barev ve stylech Abíčka? ;-)
13.3.2007 12:32 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: CSS split
;-) 5 minutový skriptík na takú vážnu vec? jo, bola to motivácia :-)
13.3.2007 13:19 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: CSS split
Nedávno jsem zkoumal jeden CSS parser, který převede CSS na XML, chtěl jsem ty dva stávající soubory přes XPath setřídit a porovnat – ale říkal jsem si, že to nakonec bude rychlejší udělat ručně. Stejně bude nutné ty soubory ručně projít, protože světlá a tmavá verze se neliší jen nastavenými barvami, ale i pořadím zápisů a tím, co kdo kam zapomněl dopsat. Alespoň to tak před nějakou dobou vypadalo.

A kdy tedy budou oddělené stylové soubory k dispozici? :-)
13.3.2007 13:34 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: CSS split
v okamihu, keď niekto spustí tento skript v rovnakom adresári, kde je styles.css. :-) (resp, ako pridám k blogu .css attachment?

porovnanie tmavej a svetlej verzie? pomocou tejto knižnice žiaden problém, len zadefinovať, čo v prípade konfliktov.

bugy však má ... zahadzuje komentáre a rozdeľuje spojené definície.

13.3.2007 16:02 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: CSS split
A kdy tedy budou oddělené stylové soubory k dispozici? :-)
No jo, trvá mi to. Sliboval jsem do konce roku 2006 a pořád nic...
13.3.2007 17:05 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: CSS split
upravil som skriptík aby tú prácu urobil :-) prihodil som nastavovanie detekciu border-color (a zmenu na transparent v hlavnom css). Výsledok:
diff new-styles-light.css new-styles-dark.css 1021,1034d1020
< .SuggestFramework_Normal {
<       padding: 0px 1px 0px 1px;
< }
< .SuggestFramework_List {
<       border: 1px solid transparent;
<       border-top: 0px;
< }
< .SuggestFramework_Highlighted {
<       padding: 0px 1px 0px 1px;
< }
< .SuggestFramework_Heading {
<       font-weight: bold;
<       padding: 0px 1px 0px 1px;
< }
(css-ka môžem poslať mailom, ak bude záujem)

skúsim ešte popracovať na znovuspájaní selektorov do skupín

14.3.2007 19:46 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: CSS split
Děkuji za vyzkoušení toho, že tudy cesta nevede :-) Taky jsem si původně myslel, že skripty oddělím nějakým skriptem, ale když jsem viděl výstup toho vašeho došlo mi, že zachovat pořadí předpisů a komentáře a pár dalších drobností bude náročnější naprogramovat, než to oddělení udělat ručně. Takže tímto děkuji, že jste mi ušetřil čas, který bych psaním takového skriptu strávil sám, než bych zjistil, že tudy cesta nevede. Cimrman byl taky průkopník slepých uliček :-)

Doufám, že jsem vám nesebral elán, a i když je tenhle příspěvek plný smajlíků, to že mi existence tohohle skriptu ušetřila práci myslím naprosto vážně.

Pokud ten skript někdy ještě upravíte, aby zachoval i to, co jsem si navymýšlel, dodatečně si vynadám, že jsem se zbytečně hrnul do něčeho, co mohl udělat po správném naprogramování stroj :-)
15.3.2007 09:17 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: CSS split
hmm, ktoré sú tie drobnosti? Zachovanie poradia a komentárov totiž nie je až taký problém :-)

Elán? to nie, len prihodil zopár myšlienok, ktoré budú čakať na dokončenie :-) Teraz som použil knižnicu (druhú, čo som našiel), ktorá dokázala to, čo dokázala, pôvodne som zamýšĺal napísať vlastný parser.

Btw, slepá ulička za cca hodinku rozptyľovacej práce? :-)

15.3.2007 09:59 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: CSS split
hmm, ktoré sú tie drobnosti? Zachovanie poradia a komentárov totiž nie je až taký problém :-)
To rád slyším, že to není problém :-) Drobnosti jsou zachování hacků, v aktuálním stylu Abíčka jsou jen podtržítkové hacky, s tím by si parser ještě mohl poradit – ale co by dělal s některými drsnějšími variantami? Vizte Pixylophone: Explorerové síto:
#prvek {
  color: black;        /* styl pro všechny prohlížeče */
  _color: red;         /* styl jen pro IE/Win, všechny verze */
  _color/**/: orange;  /* styl jen pro IE/Win, jen 5.5 a vyšší */
  _co\lor: yellow;     /* styl jen pro IE/Win, jen 6.0 a vyšší */
}
Ale skript, který zachová všechny "neduhy" nějakého stylového souboru, ale vytáhne z něj třeba všechny barvy, změní všechny výskyty barvy v border za nějakou jinou barvu, vytáhne všechny definice rozměrů – podle konfigurace skriptu nebo nějaké drobné úpravy jeho kódu –¨by rozhdoně byl užitečný :-)

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.