summaryrefslogtreecommitdiff
path: root/lib/coderay/encoders/html
diff options
context:
space:
mode:
authormurphy <murphy@rubychan.de>2008-09-16 22:07:44 +0000
committermurphy <murphy@rubychan.de>2008-09-16 22:07:44 +0000
commite46b6cbe74db250d743e7f194bfc7514529a82cc (patch)
tree851e2669d010cddffcad61189055282360cab2fc /lib/coderay/encoders/html
parente7b3056418e54db4361b053a7af030d83e15acf8 (diff)
downloadcoderay-e46b6cbe74db250d743e7f194bfc7514529a82cc.tar.gz
New: *JavaScript Scanner* (closes #23).
* It's quite good and fast, but still a beta. * I included Prototype and script.aculo.us as example code for testing. More changes: * Added two new token classes, :keyword and :key, along with CSS styles. ** Actually, we should use :keyword for most scanners that now use :reserved. * HTML Encoder: The CSS parser understands multiple selectors separated by commas.
Diffstat (limited to 'lib/coderay/encoders/html')
-rw-r--r--lib/coderay/encoders/html/css.rb21
1 files changed, 13 insertions, 8 deletions
diff --git a/lib/coderay/encoders/html/css.rb b/lib/coderay/encoders/html/css.rb
index d577602..90d8cb1 100644
--- a/lib/coderay/encoders/html/css.rb
+++ b/lib/coderay/encoders/html/css.rb
@@ -34,9 +34,12 @@ module Encoders
private
CSS_CLASS_PATTERN = /
- ( (?: # $1 = classes
- \s* \. [-\w]+
- )+ )
+ ( # $1 = selectors
+ (?:
+ (?: \s* \. [-\w]+ )+
+ \s* ,?
+ )+
+ )
\s* \{ \s*
( [^\}]+ )? # $2 = style
\s* \} \s*
@@ -44,12 +47,14 @@ module Encoders
( . ) # $3 = error
/mx
def parse stylesheet
- stylesheet.scan CSS_CLASS_PATTERN do |classes, style, error|
+ stylesheet.scan CSS_CLASS_PATTERN do |selectors, style, error|
raise "CSS parse error: '#{error.inspect}' not recognized" if error
- styles = classes.scan(/[-\w]+/)
- cl = styles.pop
- @classes[cl] ||= Hash.new
- @classes[cl][styles] = style.to_s.strip
+ for selector in selectors.split(',')
+ classes = selector.scan(/[-\w]+/)
+ cl = classes.pop
+ @classes[cl] ||= Hash.new
+ @classes[cl][classes] = style.to_s.strip
+ end
end
end