summaryrefslogtreecommitdiff
path: root/lib/coderay/encoders/html/css.rb
diff options
context:
space:
mode:
authormurphy <murphy@rubychan.de>2005-11-13 06:24:54 +0000
committermurphy <murphy@rubychan.de>2005-11-13 06:24:54 +0000
commitb60448c9788d37d7c0ab9cd0a3f0337861c64843 (patch)
treeb4046870310445532e0ff9b6aef70bc17086ab62 /lib/coderay/encoders/html/css.rb
parent07da5153646a7ae0a9551533221870c47ec950d2 (diff)
downloadcoderay-b60448c9788d37d7c0ab9cd0a3f0337861c64843.tar.gz
New Style system added - still beta.
Demos adjusted coderay.rb, encoders/html.rb, encoders/div.rb adjusted. encoders/html/* files rebuild.
Diffstat (limited to 'lib/coderay/encoders/html/css.rb')
-rw-r--r--lib/coderay/encoders/html/css.rb133
1 files changed, 22 insertions, 111 deletions
diff --git a/lib/coderay/encoders/html/css.rb b/lib/coderay/encoders/html/css.rb
index 80ccab4..69d002a 100644
--- a/lib/coderay/encoders/html/css.rb
+++ b/lib/coderay/encoders/html/css.rb
@@ -2,19 +2,34 @@ module CodeRay module Encoders
class HTML
class CSS
+
+ DEFAULT_STYLESHEET_ID = :cYcnus
+
+ attr :stylesheet
+
+ def CSS.load_stylesheet style
+ style = DEFAULT_STYLESHEET_ID if style == :default
+ CodeRay::Styles[style]
+ end
- def initialize stylesheet = TOKENS
+ def initialize style = :default
@classes = Hash.new
- parse stylesheet
+ style = CSS.load_stylesheet style
+ @stylesheet = [
+ style::CSS_MAIN_STYLES,
+ style::TOKEN_COLORS.gsub(/^(?!$)/, '.CodeRay ')
+ ].join("\n")
+ parse style::TOKEN_COLORS
end
def [] *styles
cl = @classes[styles.first]
return '' unless cl
- style = false
+ style = ''
1.upto(styles.size) do |offset|
break if style = cl[styles[offset .. -1]]
end
+ raise 'Style not found: %p' % [styles] if $DEBUG and style.empty?
return style
end
@@ -24,9 +39,9 @@ module CodeRay module Encoders
( (?: # $1 = classes
\s* \. [-\w]+
)+ )
- \s* \{
- ( [^\}]* ) # $2 = style
- \} \s*
+ \s* \{ \s*
+ ( [^\}]+ )? # $2 = style
+ \s* \} \s*
|
( . ) # $3 = error
/mx
@@ -36,114 +51,10 @@ module CodeRay module Encoders
styles = classes.scan(/[-\w]+/)
cl = styles.pop
@classes[cl] ||= Hash.new
- @classes[cl][styles] = style.strip
+ @classes[cl][styles] = style.to_s.strip
end
end
- MAIN = <<-'MAIN'
-.CodeRay {
- background-color: #f8f8f8;
- border: 1px solid silver;
- font-family: 'Courier New', 'Terminal', monospace;
- color: black;
-}
-.CodeRay pre { margin: 0px; }
-
-div.CodeRay { }
-
-span.CodeRay { white-space: pre; border: 0px; padding: 2px; }
-
-table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px; }
-table.CodeRay td { padding: 2px 4px; vertical-align: top; }
-
-.CodeRay .line_numbers, .CodeRay .no {
- background-color: #def;
- color: gray;
- text-align: right;
-}
-.CodeRay .line_numbers tt { font-weight: bold; }
-.CodeRay .no { padding: 0px 4px; }
-.CodeRay .code { width: 100%; }
-
-ol.CodeRay { font-size: 10pt; }
-ol.CodeRay li { white-space: pre; }
-
-.CodeRay .code pre { overflow: auto; }
- MAIN
-
- TOKENS = <<-'TOKENS'
-.af { color:#00C; }
-.an { color:#007; }
-.av { color:#700; }
-.aw { color:#C00; }
-.bi { color:#509; font-weight:bold; }
-.c { color:#888; }
-
-.ch { color:#04D; }
-.ch .k { color:#04D; }
-.ch .dl { color:#039; }
-
-.cl { color:#B06; font-weight:bold; }
-.co { color:#036; font-weight:bold; }
-.cr { color:#0A0; }
-.cv { color:#369; }
-.df { color:#099; font-weight:bold; }
-.di { color:#088; font-weight:bold; }
-.dl { color:black; }
-.do { color:#970; }
-.ds { color:#D42; font-weight:bold; }
-.e { color:#666; font-weight:bold; }
-.er { color:#F00; background-color:#FAA; }
-.ex { color:#F00; font-weight:bold; }
-.fl { color:#60E; font-weight:bold; }
-.fu { color:#06B; font-weight:bold; }
-.gv { color:#d70; font-weight:bold; }
-.hx { color:#058; font-weight:bold; }
-.i { color:#00D; font-weight:bold; }
-.ic { color:#B44; font-weight:bold; }
-.il { }
-.in { color:#B2B; font-weight:bold; }
-.iv { color:#33B; }
-.la { color:#970; font-weight:bold; }
-.lv { color:#963; }
-.oc { color:#40E; font-weight:bold; }
-.on { color:#000; font-weight:bold; }
-.pc { color:#038; font-weight:bold; }
-.pd { color:#369; font-weight:bold; }
-.pp { color:#579; }
-.pt { color:#339; font-weight:bold; }
-.r { color:#080; font-weight:bold; }
-
-.rx { background-color:#fff0ff; }
-.rx .k { color:#808; }
-.rx .dl { color:#404; }
-.rx .mod { color:#C2C; }
-.rx .fu { color:#404; font-weight: bold; }
-
-.s { background-color:#fff0f0; }
-.s .s { background-color:#ffe0e0; }
-.s .s .s { background-color:#ffd0d0; }
-.s .k { color:#D20; }
-.s .dl { color:#710; }
-
-.sh { background-color:#f0fff0; }
-.sh .k { color:#2B2; }
-.sh .dl { color:#161; }
-
-.sy { color:#A60; }
-.sy .k { color:#A60; }
-.sy .dl { color:#630; }
-
-.ta { color:#070; }
-.tf { color:#070; font-weight:bold; }
-.ts { color:#D70; font-weight:bold; }
-.ty { color:#339; font-weight:bold; }
-.v { color:#036; }
-.xt { color:#444; }
- TOKENS
-
- DEFAULT_STYLESHEET = MAIN + TOKENS.gsub(/^(?!$)/, '.CodeRay ')
-
end
end