[TxMt] Bundle to alphabetize CSS rules
Thomas Aylott - subtleGradient
textmate at subtleGradient.com
Mon Mar 10 12:37:17 UTC 2008
Personally this comment would confuse me for my own CSS. But I can
imagine it being useful for working with other peoples crazy CSS files.
There are already reformatting macros in the CSS bundle that I made to
completely compress or pretty-print all your rules. It might make
sense to merge these commands somehow. Depending on the speed of the
php.
Check out the regex I use in those macros. I tried to make it pretty
flexable and just ignore the contents of of the rules. I haven yet
heard of anyone running into a rule that my redormatter breaks.
Thomas Aylott [SubtleGradient] from iPhone
On Mar 10, 2008, at 2:47 AM, pete otaqui <pete at otaqui.com> wrote:
> Hello 'Mates,
>
> I'm working on a bundle (my first!) to alphabetize css attributes,
> as described by Garrett Dimon here:
>
> http://www.digital-web.com/articles/architecting_css/
>
> I whipped up some 'working' (as in, it works on a 2000+ line CSS
> file I threw it at) code here, which has some obvious problems.
> Here are the key parts, all in PHP:
>
> [code]
>
> function find_rule()
> {
> global $input, $nOffset;
> $nStart = strpos($input,'{',$nOffset);
> if ( $nStart === false ) return false;
> $nEnd = strpos($input,'}',$nStart);
> $nOffset = $nEnd;
> $nLen = $nEnd - $nStart + 1;
> $aReturn[] = $nStart;
> $aReturn[] = $nLen;
> // return an array containing the start index and length of the
> next rule
> return $aReturn;
> }
>
> function alphabetize_rule($sRule)
> {
> preg_match_all('/[^:\s]*:[^;}]*;?/',$sRule,$aProps);
> sort($aProps[0],SORT_STRING);
> $sRule = implode(' ',$aProps[0]);
> $sRule = '{ '.$sRule.' }';
> return $sRule;
> }
> ?>
>
> [/code]
>
> The problems, that I can see anyway, are in the regular expressions,
> since a CSS rule can contain URLs and URLs can legitimately contain
> both un-escaped semi-colons and I think even curly brackets. I can
> spend a bit more time on those to search for '(' and ')' and allow
> those characters between, so that's fine.
>
> My real question is if anyone has any thoughts about managing the
> whitespace that separates the rules. Generally I write CSS all on
> one line, and my code will return attributes separated by spaces.
> Ideally I'd like it to respect how the coder has written their CSS
> already, leaving any newlines and indentation in place.
>
> Does anyone have any thoughts on how best to do this? Do you think
> this bundle would be useful?
>
> Many thanks for any feedback.
>
> Pete
>
>
>
> ______________________________________________________________________
> For new threads USE THIS: textmate at lists.macromates.com
> (threading gets destroyed and the universe will collapse if you don't)
> http://lists.macromates.com/mailman/listinfo/textmate
More information about the textmate
mailing list