summaryrefslogtreecommitdiff
path: root/lib/coderay/encoders/html/css.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/coderay/encoders/html/css.rb')
-rw-r--r--lib/coderay/encoders/html/css.rb38
1 files changed, 19 insertions, 19 deletions
diff --git a/lib/coderay/encoders/html/css.rb b/lib/coderay/encoders/html/css.rb
index 164d7f8..e06c486 100644
--- a/lib/coderay/encoders/html/css.rb
+++ b/lib/coderay/encoders/html/css.rb
@@ -3,25 +3,23 @@ module Encoders
class HTML
class CSS # :nodoc:
+ def initialize style_name = :default
+ @style_name = style_name
+ end
- attr :stylesheet
-
- def CSS.load_stylesheet style = nil
- CodeRay::Styles[style]
+ def style
+ @style ||= CodeRay::Styles[@style_name]
end
- def initialize style = :default
- @styles = Hash.new
- style = CSS.load_stylesheet style
- @stylesheet = [
+ def stylesheet
+ @css ||= [
style::CSS_MAIN_STYLES,
style::TOKEN_COLORS.gsub(/^(?!$)/, '.CodeRay ')
].join("\n")
- parse style::TOKEN_COLORS
end
def get_style_for_css_classes css_classes
- cl = @styles[css_classes.first]
+ cl = styles[css_classes.first]
return '' unless cl
style = ''
1.upto css_classes.size do |offset|
@@ -31,7 +29,7 @@ module Encoders
return style
end
- private
+ private
CSS_CLASS_PATTERN = /
( # $1 = selectors
@@ -46,14 +44,16 @@ module Encoders
|
( [^\n]+ ) # $3 = error
/mx
- def parse stylesheet
- stylesheet.scan CSS_CLASS_PATTERN do |selectors, style, error|
- raise "CSS parse error: '#{error.inspect}' not recognized" if error
- for selector in selectors.split(',')
- classes = selector.scan(/[-\w]+/)
- cl = classes.pop
- @styles[cl] ||= Hash.new
- @styles[cl][classes] = style.to_s.strip.delete(' ').chomp(';')
+ def styles
+ @styles ||= Hash.new.tap do |styles|
+ style::TOKEN_COLORS.scan CSS_CLASS_PATTERN do |selectors, style, error|
+ raise "CSS parse error: '#{error.inspect}' not recognized" if error
+ for selector in selectors.split(',')
+ classes = selector.scan(/[-\w]+/)
+ cl = classes.pop
+ styles[cl] ||= Hash.new
+ styles[cl][classes] = style.to_s.strip.delete(' ').chomp(';')
+ end
end
end
end