Module: CodeRay::Encoders::HTML::Output
- Extends:
- Output::Template::Simple
- Defined in:
- vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb,
vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb
Overview
This module is included in the output String from thew HTML Encoder.
It provides methods like wrap, div, page etc.
Remember to use #clone instead of #dup to keep the modules the object was extended with.
TODO: more doc.
Defined Under Namespace
Classes: Template
Constant Summary
- SPAN =
— don’t include the templates in docu
`<span class="CodeRay"><%CONTENT%></span>`
- DIV =
"<div class=\"CodeRay\">\n<div class=\"code\"><pre><%CONTENT%></pre></div>\n</div>\n"
- TABLE =
"<table class=\"CodeRay\"><tr>\n<td class=\"line_numbers\" title=\"click to toggle\" onclick=\"with (this.firstChild.style) { display = (display == '') ? 'none' : '' }\"><pre><%LINE_NUMBERS%></pre></td>\n<td class=\"code\"><pre ondblclick=\"with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }\"><%CONTENT%></pre></td>\n</tr></table>\n"
- LIST =
title="double click to expand"
"<ol class=\"CodeRay\">\n<%CONTENT%>\n</ol>\n"
- PAGE =
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"de\">\n<head>\n<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\n<title></title>\n<style type=\"text/css\">\n<%CSS%>\n</style>\n</head>\n<body style=\"background-color: white;\">\n\n<%CONTENT%>\n</body>\n</html>\n"
Instance Attribute Summary
-
- (Object) css
Returns the value of attribute css.
- - (Object) wrapped_in
Class Method Summary
-
+ (Object) extended(o)
Raises an exception if an object that doesn’t respond to to_str is extended by Output, to prevent users from misuse.
- + (Object) make_stylesheet(css, in_tag = false)
-
+ (Object) new(string, css = CSS.new, element = nil)
This makes Output look like a class.
- + (Object) page_template_for_css(css)
-
+ (Object) wrapper(*wrappers)
Define a new wrapper.
Instance Method Summary
- - (Object) apply_title!(title)
- - (Object) line_count
- - (Object) numerize(*args)
-
- (Object) numerize!(mode = :table, options = {})
:table => [:div, :page, nil],.
- - (Object) stylesheet(in_tag = false)
- - (Object) wrap(*args)
- - (Object) wrap!(element, *args)
- - (Object) wrap_in(template)
- - (Object) wrap_in!(template)
- - (Boolean) wrapped_in?(element)
Methods included from Output::Template::Simple
Instance Attribute Details
- (Object) css
Returns the value of attribute css
18 19 20 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 18 def css @css end |
- (Object) wrapped_in
77 78 79 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 77 def wrapped_in @wrapped_in ||= nil end |
Class Method Details
+ (Object) extended(o)
Raises an exception if an object that doesn’t respond to to_str is extended by Output, to prevent users from misuse. Use Module#remove_method to disable.
37 38 39 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 37 def extended o warn "The Output module is intended to extend instances of String, not #{o.class}." unless o.respond_to? :to_str end |
+ (Object) make_stylesheet(css, in_tag = false)
41 42 43 44 45 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 41 def make_stylesheet css, in_tag = false sheet = css.stylesheet sheet = "<style type=\"text/css\">\n\#{sheet}\n</style>\n" if in_tag sheet end |
+ (Object) new(string, css = CSS.new, element = nil)
This makes Output look like a class.
Example:
a = Output.new '<span class="co">Code</span>' a.wrap! :page
28 29 30 31 32 33 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 28 def new string, css = CSS.new, element = nil output = string.clone.extend self output.wrapped_in = element output.css = css output end |
+ (Object) page_template_for_css(css)
52 53 54 55 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 52 def page_template_for_css css sheet = make_stylesheet css PAGE.apply 'CSS', sheet end |
+ (Object) wrapper(*wrappers)
Define a new wrapper. This is meta programming.
58 59 60 61 62 63 64 65 66 67 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 58 def wrapper *wrappers wrappers.each do |wrapper| define_method wrapper do |*args| wrap wrapper, *args end define_method "#{wrapper}!".to_sym do |*args| wrap! wrapper, *args end end end |
Instance Method Details
- (Object) apply_title!(title)
91 92 93 94 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 91 def apply_title! title self.sub!(/(<title>)(<\/title>)/) { $1 + title + $2 } self end |
- (Object) line_count
117 118 119 120 121 122 123 124 125 126 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb', line 117 def line_count line_count = count("\n") position_of_last_newline = rindex(?\n) if position_of_last_newline after_last_newline = self[position_of_last_newline + 1 .. -1] ends_with_newline = after_last_newline[/\A(?:<\/span>)*\z/] line_count += 1 if not ends_with_newline end line_count end |
- (Object) numerize(*args)
8 9 10 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb', line 8 def numerize *args clone.numerize!(*args) end |
- (Object) numerize!(mode = :table, options = {})
:table => [:div, :page, nil],
:inline => :all, :list => [:div, :page, nil] } NUMERIZABLE_WRAPPINGS.default = :all
19 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb', line 19 def numerize! mode = :table, = {} |
- (Object) stylesheet(in_tag = false)
126 127 128 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 126 def stylesheet in_tag = false Output.make_stylesheet @css, in_tag end |
- (Object) wrap(*args)
122 123 124 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 122 def wrap *args clone.wrap!(*args) end |
- (Object) wrap!(element, *args)
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 96 def wrap! element, *args return self if not element or element == wrapped_in case element when :div raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil wrap_in! DIV when :span raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil wrap_in! SPAN when :page wrap! :div if wrapped_in? nil raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? :div wrap_in! Output.page_template_for_css(@css) if args.first.is_a?(Hash) && title = args.first[:title] apply_title! title end self when nil return self else raise "Unknown value %p for :wrap" % element end @wrapped_in = element self end |
- (Object) wrap_in(template)
82 83 84 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 82 def wrap_in template clone.wrap_in! template end |
- (Object) wrap_in!(template)
86 87 88 89 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 86 def wrap_in! template Template.wrap! self, template, 'CONTENT' self end |
- (Boolean) wrapped_in?(element)
73 74 75 |
# File 'vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb', line 73 def wrapped_in? element wrapped_in == element end |