webby 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/History.txt +13 -1
  2. data/Manifest.txt +36 -27
  3. data/README.txt +21 -1
  4. data/Rakefile +12 -8
  5. data/bin/webby +2 -10
  6. data/data/Rakefile +1 -0
  7. data/data/tasks/create.rake +1 -0
  8. data/data/tasks/deploy.rake +1 -0
  9. data/data/tasks/growl.rake +13 -12
  10. data/data/tasks/heel.rake +29 -32
  11. data/data/tasks/setup.rb +4 -9
  12. data/{website → examples/webby}/Rakefile +0 -0
  13. data/{website → examples/webby}/content/css/blueprint/lib/buttons.css +0 -0
  14. data/{website → examples/webby}/content/css/blueprint/lib/compressed.css +0 -0
  15. data/{website → examples/webby}/content/css/blueprint/lib/grid.css +0 -0
  16. data/{website → examples/webby}/content/css/blueprint/lib/img/grid.png +0 -0
  17. data/{website → examples/webby}/content/css/blueprint/lib/img/icons/cross.png +0 -0
  18. data/{website → examples/webby}/content/css/blueprint/lib/img/icons/textfield_key.png +0 -0
  19. data/{website → examples/webby}/content/css/blueprint/lib/img/icons/tick.png +0 -0
  20. data/{website → examples/webby}/content/css/blueprint/lib/reset.css +0 -0
  21. data/{website → examples/webby}/content/css/blueprint/lib/typography.css +0 -0
  22. data/{website → examples/webby}/content/css/blueprint/print.css +0 -0
  23. data/{website → examples/webby}/content/css/blueprint/screen.css +0 -0
  24. data/{website → examples/webby}/content/css/coderay.css +0 -0
  25. data/{website → examples/webby}/content/css/site.css +0 -0
  26. data/{website → examples/webby}/content/download.txt +0 -0
  27. data/{website → examples/webby}/content/index.txt +0 -0
  28. data/examples/webby/content/manual.txt +24 -0
  29. data/{website → examples/webby}/content/robots.txt +0 -0
  30. data/{website → examples/webby}/content/tips_and_tricks.txt +0 -0
  31. data/{website → examples/webby}/content/tutorial.txt +6 -6
  32. data/{website → examples/webby}/layouts/default.rhtml +0 -0
  33. data/{website → examples/webby}/tasks/create.rake +0 -0
  34. data/{website → examples/webby}/tasks/deploy.rake +0 -0
  35. data/{website → examples/webby}/tasks/growl.rake +12 -12
  36. data/{website → examples/webby}/tasks/heel.rake +28 -32
  37. data/{website → examples/webby}/tasks/setup.rb +3 -9
  38. data/{website → examples/webby}/templates/page.erb +0 -0
  39. data/lib/webby/file.rb +33 -1
  40. data/lib/webby/filters/coderay.rb +8 -2
  41. data/lib/webby/filters/erb.rb +11 -0
  42. data/lib/webby/filters/graphviz.rb +22 -8
  43. data/lib/webby/filters/haml.rb +16 -0
  44. data/lib/webby/filters/markdown.rb +10 -0
  45. data/lib/webby/filters/sass.rb +11 -0
  46. data/lib/webby/filters/textile.rb +10 -0
  47. data/lib/webby/filters/tidy.rb +8 -1
  48. data/lib/webby/filters.rb +90 -0
  49. data/lib/webby/helpers/tag_helper.rb +61 -0
  50. data/lib/webby/helpers/url_helper.rb +162 -0
  51. data/lib/webby/pages_db.rb +8 -9
  52. data/lib/webby/renderer.rb +20 -113
  53. data/lib/webby/resource.rb +13 -6
  54. data/lib/webby/utils.rb +13 -1
  55. data/lib/webby/webby_task.rb +7 -1
  56. data/lib/webby.rb +21 -17
  57. data/spec/spec_helper.rb +3 -9
  58. data/tasks/annotations.rake +30 -0
  59. data/tasks/doc.rake +7 -1
  60. data/tasks/gem.rake +6 -2
  61. data/tasks/manifest.rake +6 -4
  62. data/tasks/rubyforge.rake +1 -1
  63. data/tasks/setup.rb +29 -7
  64. data/tasks/spec.rake +8 -5
  65. data/tasks/website.rake +2 -2
  66. metadata +123 -116
  67. data/website/content/manual.txt +0 -60
@@ -1,4 +1,4 @@
1
- # $Id: graphviz.rb 61 2007-12-04 05:48:23Z tim_pease $
1
+ # $Id: graphviz.rb 71 2007-12-13 05:45:53Z tim_pease $
2
2
 
3
3
  require 'hpricot'
4
4
  require 'fileutils'
@@ -25,9 +25,9 @@ module Filters
25
25
  # }
26
26
  # </graphviz>
27
27
  #
28
- # If the DOT script contains *URL* or *href* statements on any of the nodes
28
+ # If the DOT script contains *URL* or *href* cursorments on any of the nodes
29
29
  # or edges, then an image map will be generated and the image will be
30
- # "clikcable" in the webpage. If *URL* or *href* statements do not appear in
30
+ # "clikcable" in the webpage. If *URL* or *href* cursorments do not appear in
31
31
  # the DOT script, then a regular image will be inserted into the webpage.
32
32
  #
33
33
  # The image is inserted into the page using an HTML <img /> tag. A
@@ -60,7 +60,6 @@ class Graphviz
60
60
  # output string returned by the Graphviz filter.
61
61
  #
62
62
  def initialize( str, filters = nil )
63
- @log = ::Logging::Logger[self]
64
63
  @str = str
65
64
  @filters = filters
66
65
 
@@ -82,11 +81,19 @@ class Graphviz
82
81
  doc = Hpricot(@str)
83
82
  doc.search('//graphviz') do |gviz|
84
83
 
85
- text = gviz.inner_html.strip # the DOT script to process
86
84
  path = gviz['path']
87
85
  cmd = gviz['cmd'] || 'dot'
88
86
  type = gviz['type'] || 'png'
87
+ text = gviz.inner_html.strip # the DOT script to process
88
+
89
+ # if we don't have a DOT script, then replace it with
90
+ # the empty text and move on to the next graphviz tags
91
+ if text.empty?
92
+ gviz.swap text
93
+ next
94
+ end
89
95
 
96
+ # ensure the requested graphviz command actually exists
90
97
  %x[#{cmd} -V 2>&1]
91
98
  unless 0 == $?.exitstatus
92
99
  raise NameError, "'#{cmd}' not found on the path"
@@ -102,7 +109,7 @@ class Graphviz
102
109
  # generate the image filename based on the path, graph name, and type
103
110
  # of image to generate
104
111
  image_fn = path.nil? ? name.dup : File.join(path, name)
105
- image_fn << '.' << type
112
+ image_fn = File.join('', image_fn) << '.' << type
106
113
 
107
114
  # create the HTML img tag
108
115
  out = "<img src=\"#{image_fn}\""
@@ -163,12 +170,19 @@ class Graphviz
163
170
  #
164
171
  def error_check
165
172
  if File.size(@err.path) != 0
166
- @log.error File.read(@err.path).strip
167
- raise Error
173
+ msg = "\n" << File.read(@err.path).strip
174
+ raise Error, msg
168
175
  end
169
176
  end
170
177
 
171
178
  end # class Graphviz
179
+
180
+ # Render text into iamges via the Graphviz programs.
181
+ #
182
+ register :graphviz do |input, cursor|
183
+ Filters::Graphviz.new(input, cursor.remaining_filters).to_html
184
+ end
185
+
172
186
  end # module Filters
173
187
  end # module Webby
174
188
 
@@ -0,0 +1,16 @@
1
+ # $Id: haml.rb 68 2007-12-09 07:45:37Z tim_pease $
2
+
3
+ try_require 'haml'
4
+
5
+ # Render text via the Haml library
6
+ Webby::Filters.register :haml do |input, cursor|
7
+ opts = cursor.page.haml_options || {}
8
+ opts[:locals] ||= {}
9
+ opts[:locals].merge!(
10
+ :page => cursor.renderer.page,
11
+ :pages => cursor.renderer.pages
12
+ )
13
+ Haml::Engine.new(input, opts).to_html
14
+ end
15
+
16
+ # EOF
@@ -0,0 +1,10 @@
1
+ # $Id: markdown.rb 68 2007-12-09 07:45:37Z tim_pease $
2
+
3
+ try_require 'bluecloth'
4
+
5
+ # Render text via markdown using the BlueCloth library.
6
+ Webby::Filters.register :markdown do |input|
7
+ BlueCloth.new(input).to_html
8
+ end
9
+
10
+ # EOF
@@ -0,0 +1,11 @@
1
+ # $Id: sass.rb 68 2007-12-09 07:45:37Z tim_pease $
2
+
3
+ try_require 'sass'
4
+
5
+ # Render text via the Sass library (part of Haml)
6
+ Webby::Filters.register :sass do |input, cursor|
7
+ opts = cursor.page.sass_options || {}
8
+ Sass::Engine.new(input, opts).render
9
+ end
10
+
11
+ # EOF
@@ -0,0 +1,10 @@
1
+ # $Id: textile.rb 71 2007-12-13 05:45:53Z tim_pease $
2
+
3
+ try_require 'redcloth'
4
+
5
+ # Render text via textile using the RedCloth library.
6
+ Webby::Filters.register :textile do |input|
7
+ RedCloth.new(input, %w(no_span_caps)).to_html
8
+ end
9
+
10
+ # EOF
@@ -1,4 +1,4 @@
1
- # $Id: tidy.rb 61 2007-12-04 05:48:23Z tim_pease $
1
+ # $Id: tidy.rb 68 2007-12-09 07:45:37Z tim_pease $
2
2
 
3
3
  require 'fileutils'
4
4
  require 'tempfile'
@@ -65,6 +65,13 @@ class Tidy
65
65
  end
66
66
 
67
67
  end # class Tidy
68
+
69
+ # Render html into html/xhtml via the Tidy program
70
+ #
71
+ register :tidy do |input|
72
+ Filters::Tidy.new(input).process
73
+ end
74
+
68
75
  end # module Filters
69
76
  end # module Webby
70
77
 
@@ -0,0 +1,90 @@
1
+ # $Id: filters.rb 68 2007-12-09 07:45:37Z tim_pease $
2
+
3
+ module Webby
4
+ module Filters
5
+
6
+ class << self
7
+
8
+ # Register a handler for a filter
9
+ def register( filter, &block )
10
+ handlers[filter.to_s] = block
11
+ end
12
+
13
+ # Process input through filters
14
+ def process( renderer, page, input )
15
+ # Start a new cursor for this page
16
+ Cursor.new(renderer, page).start_for(input)
17
+ end
18
+
19
+ # Access a filter handler
20
+ def []( name )
21
+ handlers[name]
22
+ end
23
+
24
+ #######
25
+ private
26
+ #######
27
+
28
+ # The registered filter handlers
29
+ def handlers
30
+ @handlers ||= {}
31
+ end
32
+
33
+ # Instances of this class handle processing a set of filters
34
+ # for a given renderer and page.
35
+ # Note: The instance is passed as the second argument to filters
36
+ # that require two parameters and can be used to access
37
+ # information on the renderer, page, or filters being
38
+ # processed.
39
+ class Cursor
40
+
41
+ attr_reader :renderer, :page, :filters
42
+ def initialize(renderer, page)
43
+ @renderer, @page = renderer, page
44
+ @filters = Array(page.filter)
45
+ @log = Logging::Logger[Webby::Renderer]
46
+ @processed = 0
47
+ end
48
+
49
+ def start_for(input)
50
+ filters.inject(input) do |result, filter|
51
+ handler = Filters[filter]
52
+ args = [result, self][0, handler.arity]
53
+ handle(filter, handler, *args)
54
+ end
55
+ end
56
+
57
+ # The list of filters yet to be processed
58
+ def remaining_filters
59
+ filters[@processed..-1]
60
+ end
61
+
62
+ # The name of the current filter
63
+ def current_filter
64
+ filters[@processed]
65
+ end
66
+
67
+ #######
68
+ private
69
+ #######
70
+
71
+ # Process arguments through a single filter
72
+ def handle(filter, handler, *args)
73
+ result = handler.call(*args)
74
+ @processed += 1
75
+ result
76
+ rescue NameError => e
77
+ @log.fatal "Name error in filter `#{filter}' (missing dependency?): #{e.message}"
78
+ exit 1
79
+ rescue => e
80
+ @log.fatal "Error in filter `#{filter}': #{e.message}"
81
+ exit 1
82
+ end
83
+
84
+ end # class Cursor
85
+ end # class << self
86
+
87
+ end # module Filters
88
+ end # module Webby
89
+
90
+ # EOF
@@ -0,0 +1,61 @@
1
+ require 'erb'
2
+ require 'set'
3
+
4
+ class ERB
5
+ module Util
6
+ HTML_ESCAPE = { '&' => '&amp;', '"' => '&quot;', '>' => '&gt;', '<' => '&lt;' }
7
+
8
+ def html_escape(s)
9
+ s.to_s.gsub(/[&\"><]/) { |special| HTML_ESCAPE[special] }
10
+ end
11
+ end
12
+ end
13
+
14
+ module Webby
15
+ module Helpers #:nodoc:
16
+
17
+ # Provides methods to generate HTML tags programmatically.
18
+ # By default, they output XHTML compliant tags.
19
+ #
20
+ module TagHelper
21
+ include ERB::Util
22
+
23
+ BOOLEAN_ATTRIBUTES = Set.new(%w(disabled readonly multiple))
24
+
25
+ # Returns an escaped version of +html+ without affecting existing escaped
26
+ # entities.
27
+ #
28
+ # ==== Examples
29
+ # escape_once("1 > 2 &amp; 3")
30
+ # # => "1 &lt; 2 &amp; 3"
31
+ #
32
+ # escape_once("&lt;&lt; Accept & Checkout")
33
+ # # => "&lt;&lt; Accept &amp; Checkout"
34
+ #
35
+ def escape_once( html )
36
+ html.to_s.gsub(/[\"><]|&(?!([a-zA-Z]+|(#\d+));)/) { |special| ERB::Util::HTML_ESCAPE[special] }
37
+ end
38
+
39
+ private
40
+ def tag_options( options, escape = true )
41
+ unless options.empty?
42
+ attrs = []
43
+ if escape
44
+ options.each do |key, value|
45
+ next if value.nil?
46
+ key = key.to_s
47
+ value = BOOLEAN_ATTRIBUTES.include?(key) ? key : escape_once(value)
48
+ attrs << %Q(#{key}="#{value}")
49
+ end
50
+ else
51
+ attrs = options.map {|key, value| %Q(#{key}="#{value}")}
52
+ end
53
+ %Q( #{attrs.sort * ' '}) unless attrs.empty?
54
+ end
55
+ end
56
+
57
+ end # module TagHelper
58
+ end # module Helpers
59
+ end # module Webby
60
+
61
+ # EOF
@@ -0,0 +1,162 @@
1
+ # $Id: url_helper.rb 75 2007-12-20 23:10:19Z tim_pease $
2
+
3
+ module Webby
4
+ module Helpers #:nodoc:
5
+
6
+ #
7
+ #
8
+ module UrlHelper
9
+
10
+ # call-seq:
11
+ # url_for( string, opts = {} )
12
+ # url_for( page, opts ={} )
13
+ #
14
+ # Options
15
+ #
16
+ # :escape => determins whether the returned URL will be HTML escaped
17
+ # or not (+true+ by default)
18
+ # :anchor => specifies the anchor name to be appended to the path
19
+ #
20
+ def url_for( *args )
21
+ opts = Hash === args.last ? args.pop : {}
22
+ obj = args.first
23
+
24
+ anchor = opts.delete(:anchor)
25
+ escape = opts.has_key?(:escape) ? opts.delte(:escape) : true
26
+
27
+ url = Webby::Resource === obj ? obj.url : obj.to_s
28
+ url = escape_once(url) if escape
29
+ url << "#" << anchor if anchor
30
+
31
+ return url
32
+ end
33
+
34
+ def url_for_page( opts = {} )
35
+ opts = opts.symbolize_keys
36
+ url_opts = opts.delete(:url)
37
+
38
+ p = @pages.find(opts)
39
+ raise Webby::Renderer::Error,
40
+ "could not find requested page: #{opts.inspect}" if p.nil?
41
+
42
+ self.url_for(p, url_opts)
43
+ end
44
+
45
+ #
46
+ #
47
+ def link_to( name, *args )
48
+ opts = Hash === args.last ? args.pop : {}
49
+ url = args.first
50
+ attrs = opts.delete(:attrs)
51
+
52
+ url = case url
53
+ when String
54
+ url
55
+ when Webby::Resource
56
+ self.url_for(url, opts)
57
+ when :back
58
+ 'javascript:history.back()'
59
+ else
60
+ self.url_for(name, opts)
61
+ end
62
+
63
+ if attrs
64
+ html_opts = attrs.stringify_keys
65
+ href = html_opts.has_key? 'href'
66
+ attrs = tag_options(html_opts)
67
+ else
68
+ href = false
69
+ attrs = nil
70
+ end
71
+
72
+ href_attr = href ? nil : %Q(href="#{url}")
73
+ "<a #{href_attr}#{attrs}>#{name || url}</a>"
74
+ end
75
+
76
+ # call-seq:
77
+ # link_to_page( name )
78
+ # link_to_page( :key => value )
79
+ # link_to_page( name, :key => value )
80
+ # link_to_page( page )
81
+ #
82
+ # Creates a link tag of the given _name_ using a URL created by finding
83
+ # the associated page from the key/value pairs. If the key/value pairs are
84
+ # omitted, the _name_ is used in conjunction with the default site +find_by+
85
+ # attribute. If the _name_ is omitted, then either the page +title+
86
+ # attribute or the page +filename+ attribute is used as the name (in that
87
+ # order of preference).
88
+ #
89
+ # Pages are found using key/value pairs. The key is any of the page
90
+ # attributes, and the value is what that attribute should be. Any number
91
+ # of key/value pairs can be included, but all values must equal the
92
+ # corresponding page attributes for a match to be found -- i.e. the
93
+ # comparisons are joined by AND operations to determine a match.
94
+ #
95
+ # In the absence of any key/value pairs -- just a name was given -- then
96
+ # the default site +find_by+ attribute is used, and the name is compared
97
+ # against this attribute from the page. The default +find_by+ attribue is
98
+ # set in the Rakefile or in the <tt>Webby.site.find_by</tt> parameter.
99
+ #
100
+ # Several options can be passed to the method to determin how URLs are
101
+ # created and to specify any HTML attributes on the returned link tag. The
102
+ # URL options are given as a hash to the <tt>:url</tt> key. The HTML
103
+ # attributes are given as a hash to the <tt>:attrs</tt> key.
104
+ #
105
+ # See the +url_for+ method for a desciption of the <tt>:url</tt> options.
106
+ # See the +link_to+ method for a description of the <tt>:attrs</tt>
107
+ # options.
108
+ #
109
+ # ==== Examples
110
+ #
111
+ def link_to_page( *args )
112
+ self.link_to(*_find_page(args))
113
+ end
114
+
115
+ #
116
+ #
117
+ def link_to_page_unless_current( *args )
118
+ name, page, link_opts = _find_page(args)
119
+ return name if @page == page
120
+
121
+ self.link_to(name, page, link_opts)
122
+ end
123
+
124
+
125
+ private
126
+
127
+ # call-seq:
128
+ # _find_page( name, opts = {} )
129
+ # _find_page( :key => value, [:key => value, ...], opts = {} )
130
+ # _find_page( name, :key => value, [:key => value, ...], opts = {} )
131
+ # _find_page( page, opts = {} )
132
+ #
133
+ # Returns an array of the [name, page, options].
134
+ #
135
+ def _find_page( args )
136
+ raise ArgumentError, 'wrong number of arguments (0 for 1)' if args.empty?
137
+
138
+ opts = Hash === args.last ? args.pop : {}
139
+ name = args.first
140
+ link_opts = opts.delete(:url) || {}
141
+ link_opts[:attrs] = opts.delete(:attrs)
142
+
143
+ if Webby::Resource === name
144
+ p, name = name, nil
145
+ elsif opts.empty? && name
146
+ p = @pages.find(Webby.site.find_by.to_sym => name)
147
+ else
148
+ p = @pages.find(opts)
149
+ end
150
+
151
+ raise Webby::Renderer::Error,
152
+ "could not find requested page: #{opts.inspect}" if p.nil?
153
+
154
+ name = h(p.title || p.filename) if name.nil?
155
+ return [name, p, link_opts]
156
+ end
157
+
158
+ end # module UrlHelper
159
+ end # module Helpers
160
+ end # module Webby
161
+
162
+ # EOF
@@ -1,4 +1,4 @@
1
- # $Id: pages_db.rb 46 2007-11-27 03:31:29Z tim_pease $
1
+ # $Id: pages_db.rb 67 2007-12-09 00:49:26Z tim_pease $
2
2
 
3
3
  module Webby
4
4
 
@@ -78,7 +78,7 @@ class PagesDB
78
78
  #
79
79
  # Options include:
80
80
  #
81
- # :all => true
81
+ # :all
82
82
  # :in_directory => 'directory'
83
83
  #
84
84
  # Examples:
@@ -87,19 +87,18 @@ class PagesDB
87
87
  # pages_db.find( :filename => 'index', :in_directory => 'foo/bar' )
88
88
  #
89
89
  # # find all resources named "widgets" whose color is "blue"
90
- # pages_db.find( :name => 'widgets', :color => 'blue', :all => true )
90
+ # pages_db.find( :all, :name => 'widgets', :color => 'blue' )
91
91
  #
92
92
  # # find all resources created in the past week
93
- # pages_db.find( :all => true ) do |resource|
93
+ # pages_db.find( :all ) do |resource|
94
94
  # resource.created_at > Time.now - (7 * 24 * 3600)
95
95
  # end
96
96
  #
97
- def find( opts = {}, &block )
98
- find_all = if opts.has_key?(:all) then opts.delete(:all)
99
- else false end
97
+ def find( *args, &block )
98
+ opts = Hash === args.last ? args.pop : {}
99
+ find_all = args.include? :all
100
100
 
101
- dir = if opts.has_key?(:in_directory) then opts.delete(:in_directory)
102
- else nil end
101
+ dir = opts.has_key?(:in_directory) ? opts.delete(:in_directory) : nil
103
102
  if dir && !@db.has_key?(dir)
104
103
  raise RuntimeError, "unknown directory '#{dir}'"
105
104
  end
@@ -1,4 +1,4 @@
1
- # $Id: renderer.rb 61 2007-12-04 05:48:23Z tim_pease $
1
+ # $Id: renderer.rb 68 2007-12-09 07:45:37Z tim_pease $
2
2
 
3
3
  require 'erb'
4
4
  try_require 'bluecloth'
@@ -22,6 +22,10 @@ module Webby
22
22
  #
23
23
  class Renderer
24
24
  include ERB::Util
25
+ include Webby::Helpers::TagHelper
26
+ include Webby::Helpers::UrlHelper
27
+
28
+ class Error < StandardError; end # :nodoc:
25
29
 
26
30
  # call-seq:
27
31
  # Renderer.write( page )
@@ -37,7 +41,7 @@ class Renderer
37
41
  ::File.open(page.destination, 'w') do |fd|
38
42
  fd.write renderer.layout_page
39
43
  end
40
- break unless renderer.next_page
44
+ break unless renderer.__send__(:next_page)
41
45
  }
42
46
  end
43
47
 
@@ -79,11 +83,7 @@ class Renderer
79
83
  break if lyt.nil?
80
84
 
81
85
  @content, str = str, ::Webby::File.read(lyt.path)
82
-
83
- Array(lyt.filter).each do |filter|
84
- str = self.send(filter + '_filter', str)
85
- end
86
-
86
+ str = Filters.process(self, lyt, str)
87
87
  @content, obj = nil, lyt
88
88
  end
89
89
 
@@ -97,13 +97,7 @@ class Renderer
97
97
  # determined from the page's meta-data.
98
98
  #
99
99
  def render_page
100
- str = ::Webby::File.read(@page.path)
101
-
102
- Array(@page.filter).each do |filter|
103
- str = self.send(filter + '_filter', str)
104
- end
105
-
106
- str
100
+ Filters.process(self, @page, ::Webby::File.read(@page.path))
107
101
  end
108
102
 
109
103
  # call-seq:
@@ -128,6 +122,18 @@ class Renderer
128
122
  @pager.each &block
129
123
  end
130
124
 
125
+ # call-seq:
126
+ # get_binding => binding
127
+ #
128
+ # Returns the current binding for the renderer.
129
+ #
130
+ def get_binding
131
+ binding
132
+ end
133
+
134
+
135
+ private
136
+
131
137
  # call-seq:
132
138
  # next_page => true or false
133
139
  #
@@ -149,105 +155,6 @@ class Renderer
149
155
  true
150
156
  end
151
157
 
152
- # Render text via ERB using the built in ERB library.
153
- #
154
- def erb_filter( str )
155
- b = binding
156
- ERB.new(str, nil, '-').result(b)
157
- end
158
-
159
- # Render text via markdown using the BlueCloth library.
160
- #
161
- def markdown_filter( str )
162
- BlueCloth.new(str).to_html
163
- rescue NameError => err
164
- @log.error 'markdown filter failed (BlueCloth not installed?)'
165
- @log.debug err
166
- exit
167
- end
168
-
169
- # Render text via textile using the RedCloth library.
170
- #
171
- def textile_filter( str )
172
- RedCloth.new(str).to_html
173
- rescue NameError => err
174
- @log.error 'textile filter failed (RedCloth not installed?)'
175
- @log.debug err
176
- exit
177
- end
178
-
179
- # Render text via the CodeRay syntax highlighter library.
180
- #
181
- def coderay_filter( str )
182
- filters = nil
183
-
184
- if Array === @page.filter
185
- idx = @page.filter.index('coderay') + 1
186
- filters = @page.filter.slice(idx..-1)
187
- end
188
-
189
- Filters::CodeRay.new(str, filters).to_html
190
- rescue NameError => err
191
- @log.error 'coderay filter failed (CodeRay not installed?)'
192
- @log.debug err
193
- exit
194
- end
195
-
196
- # Render text into iamges via the Graphviz programs.
197
- #
198
- def graphviz_filter( str )
199
- filters = nil
200
-
201
- if Array === @page.filter
202
- idx = @page.filter.index('graphviz') + 1
203
- filters = @page.filter.slice(idx..-1)
204
- end
205
-
206
- Filters::Graphviz.new(str, filters).to_html
207
- rescue NameError => err
208
- @log.error 'graphviz filter failed (Graphviz not installed?)'
209
- @log.debug err
210
- exit
211
- rescue Filters::Graphviz::Error
212
- exit
213
- end
214
-
215
- # Render html into html/xhtml via the Tidy program
216
- #
217
- def tidy_filter( str )
218
- Filters::Tidy.new(str).process
219
- rescue NameError => err
220
- @log.error 'tidy filter failed (Tidy not installed?)'
221
- @log.debug err
222
- exit
223
- rescue Filters::Tidy::Error
224
- exit
225
- end
226
-
227
- # Render text via the Haml library
228
- #
229
- def haml_filter( str )
230
- opts = @page.haml_options || {}
231
- opts[:locals] ||= {}
232
- opts[:locals].merge!({:page => @page, :pages => @pages})
233
- Haml::Engine.new(str, opts).to_html
234
- rescue NameError => err
235
- @log.error 'haml filter failed (Haml not installed?)'
236
- @log.debug err
237
- exit
238
- end
239
-
240
- # Render text via the Sass library (part of Haml)
241
- #
242
- def sass_filter( str )
243
- opts = @page.sass_options || {}
244
- Sass::Engine.new(str, opts).render
245
- rescue NameError => err
246
- @log.error 'sass filter failed (Haml not installed?)'
247
- @log.debug err
248
- exit
249
- end
250
-
251
158
  end # class Renderer
252
159
  end # module Webby
253
160