Changeset 18575 in project


Ignore:
Timestamp:
06/20/10 14:08:46 (11 years ago)
Author:
Moritz Heidkamp
Message:

scss: fix mangling of simple multi-selectors in scss-plus

Location:
release/4/scss/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • release/4/scss/trunk/scss-plus.scm

    r18392 r18575  
    11(module scss-plus (scss-plus->css)
    22     
    3 (import chicken scheme)
     3(import chicken scheme extras)
    44(use srfi-1 data-structures scss)
    55
     
    77  (if (symbol? s) (list s) s))
    88
     9(define (combinator? c)
     10  (member c '(// > + &)))
     11
    912(define (normalize-selector selector)
    10   (if (and (pair? selector) (pair? (car selector)))
     13  (if (and (pair? selector)
     14           (or (pair? (car selector))
     15               (not (combinator? (car selector)))))
    1116      selector
    1217      (list selector)))
     
    1621          (let* ((prefixes (maybe-symbol->list prefixes))
    1722                 (selector (normalize-selector (car rule)))
    18                  (selector  (if (null? prefixes)
    19                                 selector
    20                                 (append-map (lambda (p)
    21                                               (let ((p (normalize-selector p)))
    22                                                 (map (lambda (s)
    23                                                        (if (eq? '& (car s))
    24                                                            (string->symbol (conc (car p) (last s)))
    25                                                            (append (butlast p)
    26                                                                    (cons (car s)
    27                                                                          (cons (last p)
    28                                                                                (cdr s))))))
    29                                                      selector)))
    30                                             prefixes)))
     23                 (selector (if (null? prefixes)
     24                               selector
     25                               (append-map (lambda (p)
     26                                             (let ((p (normalize-selector p)))
     27                                               (map (lambda (s)
     28                                                      (if (eq? '& (car s))
     29                                                          (string->symbol (conc (car p) (last s)))
     30                                                          (append (butlast p)
     31                                                                  (cons (car s)
     32                                                                        (cons (last p)
     33                                                                              (cdr s))))))
     34                                                    selector)))
     35                                           prefixes)))
    3136                 (declarations (cdr rule)))
    3237
  • release/4/scss/trunk/tests/run-scss-plus.scm

    r18392 r18575  
    66
    77(test "foo bar { baz: qux }" (scss-plus->css '(css+ (foo ((// bar) (baz "qux"))))))
     8(test "foo, bar, baz { qux: quux }" (scss-plus->css '(css+ ((foo bar baz) (qux "quux")))))
    89
    910(test "foo { bar: baz; qux: quux } bar { baz: qux }"
  • release/4/scss/trunk/tests/run.scm

    r16569 r18575  
    3030(test-selector '(+ foo bar) "foo+bar")
    3131(test-selector '(> foo (+ bar (// baz qux))) "foo > bar + baz qux")
    32 (test-selector '( foo bar baz) "foo, bar, baz")
     32(test-selector '(foo bar baz) "foo, bar, baz")
    3333(test-selector '((// foo .bar) |#baz|) "foo .bar, #baz")
    3434(test-selector '((> x (// y z.bla)) baz.qux) "x>y
Note: See TracChangeset for help on using the changeset viewer.