tdreyno-staticmatic 2.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/LICENSE +21 -0
  2. data/Rakefile +12 -0
  3. data/bin/staticmatic +12 -0
  4. data/lib/staticmatic/actionpack_support/mime.rb +5 -0
  5. data/lib/staticmatic/actionpack_support/remove_partial_benchmark.rb +6 -0
  6. data/lib/staticmatic/autoload.rb +18 -0
  7. data/lib/staticmatic/base.rb +171 -0
  8. data/lib/staticmatic/builder.rb +102 -0
  9. data/lib/staticmatic/config.rb +47 -0
  10. data/lib/staticmatic/creator.rb +18 -0
  11. data/lib/staticmatic/deprecation.rb +26 -0
  12. data/lib/staticmatic/helpers/asset_tag_helper.rb +37 -0
  13. data/lib/staticmatic/helpers/deprecated_helpers.rb +48 -0
  14. data/lib/staticmatic/helpers/page_helper.rb +9 -0
  15. data/lib/staticmatic/helpers/url_helper.rb +19 -0
  16. data/lib/staticmatic/previewer.rb +65 -0
  17. data/lib/staticmatic/rescue.rb +14 -0
  18. data/lib/staticmatic/template_handlers/haml.rb +19 -0
  19. data/lib/staticmatic/template_handlers/liquid.rb +13 -0
  20. data/lib/staticmatic/template_handlers/markdown.rb +13 -0
  21. data/lib/staticmatic/template_handlers/sass.rb +13 -0
  22. data/lib/staticmatic/template_handlers/textile.rb +13 -0
  23. data/lib/staticmatic/templates/default/Rakefile +3 -0
  24. data/lib/staticmatic/templates/default/config.rb +3 -0
  25. data/lib/staticmatic/templates/default/src/helpers/site_helper.rb +5 -0
  26. data/lib/staticmatic/templates/default/src/layouts/site.html.haml +6 -0
  27. data/lib/staticmatic/templates/default/src/pages/index.html.haml +1 -0
  28. data/lib/staticmatic/templates/default/src/stylesheets/site.css.sass +3 -0
  29. data/lib/staticmatic/templates/rescues/default_error.html.erb +2 -0
  30. data/lib/staticmatic/templates/rescues/template_error.html.erb +19 -0
  31. data/lib/staticmatic.rb +28 -0
  32. data/lib/tasks/staticmatic.rb +9 -0
  33. data/staticmatic.gemspec +53 -0
  34. data/vendor/html-scanner/html/document.rb +68 -0
  35. data/vendor/html-scanner/html/node.rb +530 -0
  36. data/vendor/html-scanner/html/sanitizer.rb +173 -0
  37. data/vendor/html-scanner/html/selector.rb +828 -0
  38. data/vendor/html-scanner/html/tokenizer.rb +105 -0
  39. data/vendor/html-scanner/html/version.rb +11 -0
  40. metadata +127 -0
@@ -0,0 +1,13 @@
1
+ require 'bluecloth'
2
+
3
+ module StaticMatic
4
+ module TemplateHandlers
5
+ class Markdown < ActionView::TemplateHandler
6
+ def render(template, local_assigns = {})
7
+ ::BlueCloth::new(template.source).to_html
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ ActionView::Template.register_template_handler(:markdown, StaticMatic::TemplateHandlers::Markdown)
@@ -0,0 +1,13 @@
1
+ require 'sass'
2
+
3
+ module StaticMatic
4
+ module TemplateHandlers
5
+ class Sass < ActionView::TemplateHandler
6
+ def render(template)
7
+ ::Sass::Engine.new(template.source, StaticMatic::Config[:sass_options]).render
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ ActionView::Template.register_template_handler(:sass, StaticMatic::TemplateHandlers::Sass)
@@ -0,0 +1,13 @@
1
+ require 'redcloth'
2
+
3
+ module StaticMatic
4
+ module TemplateHandlers
5
+ class Textile < ActionView::TemplateHandler
6
+ def render(template, local_assigns = {})
7
+ ::RedCloth::new(template.source).to_html
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ ActionView::Template.register_template_handler(:textile, StaticMatic::TemplateHandlers::Textile)
@@ -0,0 +1,3 @@
1
+ require 'rake'
2
+ require 'rubygems'
3
+ require 'tasks/staticmatic'
@@ -0,0 +1,3 @@
1
+ StaticMatic::Config.setup(
2
+ :use_build_tracking => true
3
+ )
@@ -0,0 +1,5 @@
1
+ # Add helpers to use in your templates here
2
+ #
3
+ # For best results, create seperate helpers for different reponsibilities
4
+ module SiteHelper
5
+ end
@@ -0,0 +1,6 @@
1
+ %html
2
+ %head
3
+ %title StaticMatic!
4
+
5
+ %body
6
+ = yield
@@ -0,0 +1 @@
1
+ %h1 StaticMatic!
@@ -0,0 +1,3 @@
1
+ body
2
+ :font-family Verdana
3
+ :font-size 10pt
@@ -0,0 +1,2 @@
1
+ <%= @exception.message %>
2
+ <%= debug(@exception.backtrace)%>
@@ -0,0 +1,19 @@
1
+ <h1>
2
+ <%=h @exception.class.to_s %> in
3
+ <% #= #h request.parameters["controller"].capitalize if request.parameters["controller"]%>#<%=h request.parameters["action"] %>
4
+ </h1>
5
+
6
+ <p>
7
+ Showing <i><%=h @exception.file_name %></i> where line <b>#<%=h @exception.line_number %></b> raised:
8
+ <pre><code><%=h @exception.message %></code></pre>
9
+ </p>
10
+
11
+ <p>Extracted source (around line <b>#<%=h @exception.line_number %></b>):
12
+ <pre><code><%=h @exception.source_extract %></code></pre></p>
13
+
14
+ <p><%=h @exception.sub_template_message %></p>
15
+
16
+ <% @real_exception = @exception
17
+ @exception = @exception.original_exception || @exception %>
18
+
19
+ <% @exception = @real_exception %>
@@ -0,0 +1,28 @@
1
+ $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../vendor/html-scanner"
2
+ $LOAD_PATH.unshift File.dirname(__FILE__) unless
3
+ $LOAD_PATH.include?(File.dirname(__FILE__)) ||
4
+ $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
5
+
6
+ require 'rubygems'
7
+ require 'active_support'
8
+ require 'action_view'
9
+ require 'staticmatic/autoload'
10
+ require 'staticmatic/base'
11
+
12
+ # Load template handlers
13
+ Dir['lib/staticmatic/template_handlers/*.rb'].each do |handler|
14
+ begin
15
+ require "staticmatic/template_handlers/#{File.basename(handler)}"
16
+ rescue
17
+ # Could not load gem or handler
18
+ end
19
+ end
20
+
21
+ ActionView::Base.class_eval do
22
+ include StaticMatic::Helpers::AssetTagHelper
23
+ include StaticMatic::Helpers::DeprecatedHelpers
24
+ include StaticMatic::Helpers::PageHelper
25
+ include StaticMatic::Helpers::UrlHelper
26
+ include Mime
27
+ include StaticMatic::Deprecation
28
+ end
@@ -0,0 +1,9 @@
1
+ require File.join(File.dirname(__FILE__), "..", "staticmatic")
2
+
3
+ task :build do
4
+ StaticMatic::Builder.build(".")
5
+ end
6
+
7
+ task :preview do
8
+ StaticMatic::Previewer.start(".")
9
+ end
@@ -0,0 +1,53 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "staticmatic"
3
+ s.version = "2.0.3"
4
+ s.date = "2008-07-31"
5
+ s.authors = ["Stephen Bartholomew", "Thomas Reynolds"]
6
+ s.email = "steve@curve21.com"
7
+ s.homepage = "http://github.com/tdreyno/staticmatic"
8
+ s.summary = "Static sites, the Rails Way"
9
+ s.files = ["LICENSE",
10
+ "Rakefile",
11
+ "staticmatic.gemspec",
12
+ "bin/staticmatic",
13
+ "lib/staticmatic.rb",
14
+ "lib/staticmatic/autoload.rb",
15
+ "lib/staticmatic/base.rb",
16
+ "lib/staticmatic/builder.rb",
17
+ "lib/staticmatic/config.rb",
18
+ "lib/staticmatic/creator.rb",
19
+ "lib/staticmatic/deprecation.rb",
20
+ "lib/staticmatic/previewer.rb",
21
+ "lib/staticmatic/rescue.rb",
22
+ "lib/staticmatic/actionpack_support/mime.rb",
23
+ "lib/staticmatic/actionpack_support/remove_partial_benchmark.rb",
24
+ "lib/staticmatic/helpers/asset_tag_helper.rb",
25
+ "lib/staticmatic/helpers/deprecated_helpers.rb",
26
+ "lib/staticmatic/helpers/page_helper.rb",
27
+ "lib/staticmatic/helpers/url_helper.rb",
28
+ "lib/staticmatic/template_handlers/haml.rb",
29
+ "lib/staticmatic/template_handlers/liquid.rb",
30
+ "lib/staticmatic/template_handlers/markdown.rb",
31
+ "lib/staticmatic/template_handlers/sass.rb",
32
+ "lib/staticmatic/template_handlers/textile.rb",
33
+ "lib/staticmatic/templates/default/Rakefile",
34
+ "lib/staticmatic/templates/default/config.rb",
35
+ "lib/staticmatic/templates/default/src/helpers/site_helper.rb",
36
+ "lib/staticmatic/templates/default/src/layouts/site.html.haml",
37
+ "lib/staticmatic/templates/default/src/pages/index.html.haml",
38
+ "lib/staticmatic/templates/default/src/stylesheets/site.css.sass",
39
+ "lib/staticmatic/templates/rescues/default_error.html.erb",
40
+ "lib/staticmatic/templates/rescues/template_error.html.erb",
41
+ "lib/tasks/staticmatic.rb",
42
+ "vendor/html-scanner/html/document.rb",
43
+ "vendor/html-scanner/html/node.rb",
44
+ "vendor/html-scanner/html/sanitizer.rb",
45
+ "vendor/html-scanner/html/selector.rb",
46
+ "vendor/html-scanner/html/tokenizer.rb",
47
+ "vendor/html-scanner/html/version.rb"]
48
+ s.executables = %w(staticmatic)
49
+ s.add_dependency("haml", ">=2.0.1")
50
+ s.add_dependency("mongrel")
51
+ s.add_dependency("actionpack", ">=2.1.0")
52
+ s.add_dependency("activesupport", ">=2.1.0")
53
+ end
@@ -0,0 +1,68 @@
1
+ require 'html/tokenizer'
2
+ require 'html/node'
3
+ require 'html/selector'
4
+ require 'html/sanitizer'
5
+
6
+ module HTML #:nodoc:
7
+ # A top-level HTMl document. You give it a body of text, and it will parse that
8
+ # text into a tree of nodes.
9
+ class Document #:nodoc:
10
+
11
+ # The root of the parsed document.
12
+ attr_reader :root
13
+
14
+ # Create a new Document from the given text.
15
+ def initialize(text, strict=false, xml=false)
16
+ tokenizer = Tokenizer.new(text)
17
+ @root = Node.new(nil)
18
+ node_stack = [ @root ]
19
+ while token = tokenizer.next
20
+ node = Node.parse(node_stack.last, tokenizer.line, tokenizer.position, token)
21
+
22
+ node_stack.last.children << node unless node.tag? && node.closing == :close
23
+ if node.tag?
24
+ if node_stack.length > 1 && node.closing == :close
25
+ if node_stack.last.name == node.name
26
+ if node_stack.last.children.empty?
27
+ node_stack.last.children << Text.new(node_stack.last, node.line, node.position, "")
28
+ end
29
+ node_stack.pop
30
+ else
31
+ open_start = node_stack.last.position - 20
32
+ open_start = 0 if open_start < 0
33
+ close_start = node.position - 20
34
+ close_start = 0 if close_start < 0
35
+ msg = <<EOF.strip
36
+ ignoring attempt to close #{node_stack.last.name} with #{node.name}
37
+ opened at byte #{node_stack.last.position}, line #{node_stack.last.line}
38
+ closed at byte #{node.position}, line #{node.line}
39
+ attributes at open: #{node_stack.last.attributes.inspect}
40
+ text around open: #{text[open_start,40].inspect}
41
+ text around close: #{text[close_start,40].inspect}
42
+ EOF
43
+ strict ? raise(msg) : warn(msg)
44
+ end
45
+ elsif !node.childless?(xml) && node.closing != :close
46
+ node_stack.push node
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ # Search the tree for (and return) the first node that matches the given
53
+ # conditions. The conditions are interpreted differently for different node
54
+ # types, see HTML::Text#find and HTML::Tag#find.
55
+ def find(conditions)
56
+ @root.find(conditions)
57
+ end
58
+
59
+ # Search the tree for (and return) all nodes that match the given
60
+ # conditions. The conditions are interpreted differently for different node
61
+ # types, see HTML::Text#find and HTML::Tag#find.
62
+ def find_all(conditions)
63
+ @root.find_all(conditions)
64
+ end
65
+
66
+ end
67
+
68
+ end