merbiful-release 0.2.4 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'pathname'
5
5
 
6
6
  PLUGIN = "merbiful-release"
7
7
  NAME = "merbiful-release"
8
- GEM_VERSION = "0.2.4"
8
+ GEM_VERSION = "0.2.8"
9
9
  AUTHOR = "Martin Kihlgren"
10
10
  EMAIL = "martin@wemind.se"
11
11
  HOMEPAGE = ""
@@ -21,9 +21,6 @@ spec = Gem::Specification.new do |s|
21
21
  s.author = AUTHOR
22
22
  s.email = EMAIL
23
23
  s.homepage = HOMEPAGE
24
- %w(merb-core merb_helpers merb_datamapper merb-action-args merb-assets merb-haml dm-core dm-aggregates dm-migrations dm-timestamps dm-validations).each do |dep|
25
- s.add_dependency(dep)
26
- end
27
24
  s.require_path = 'lib'
28
25
  s.autorequire = PLUGIN
29
26
  s.files = %w(Rakefile LICENSE) + Dir.glob("{lib,specs,templates}/**/*")
@@ -1,7 +1,11 @@
1
1
 
2
2
  require 'merb-core'
3
3
  require 'merb-action-args'
4
- require 'merb_helpers'
4
+ begin
5
+ require 'merb-helpers'
6
+ rescue LoadError => e
7
+ require 'merb_helpers'
8
+ end
5
9
  require 'merb-assets'
6
10
  require 'dm-core'
7
11
  require 'dm-validations'
@@ -7,14 +7,13 @@ require 'dm-core'
7
7
  require 'dm-validations'
8
8
  require 'dm-timestamps'
9
9
  require 'dm-aggregates'
10
- require 'haml'
11
10
  require 'forwardable'
12
11
  require 'pathname'
13
- require 'erubis'
14
12
  require 'pp'
15
13
  require 'digest/sha1'
16
14
 
17
15
  require File.join(File.dirname(__FILE__), 'merbiful-release', 'filters.rb')
16
+ require File.join(File.dirname(__FILE__), 'merbiful-release', 'string.rb')
18
17
  require File.join(File.dirname(__FILE__), 'merbiful-release', 'relative_time.rb')
19
18
  require File.join(File.dirname(__FILE__), 'merbiful-release', 'images.rb')
20
19
  require File.join(File.dirname(__FILE__), 'merbiful-release', 'controller.rb')
@@ -25,5 +24,3 @@ require File.join(File.dirname(__FILE__), 'merbiful-release', 'css.rb')
25
24
  require File.join(File.dirname(__FILE__), 'merbiful-release', 'js.rb')
26
25
  require File.join(File.dirname(__FILE__), 'merbiful-release', 'page.rb')
27
26
  require File.join(File.dirname(__FILE__), 'merbiful-release', 'layout.rb')
28
- require File.join(File.dirname(__FILE__), 'merbiful-release', 'haml.rb')
29
- require File.join(File.dirname(__FILE__), 'merbiful-release', 'erubis.rb')
@@ -17,14 +17,14 @@ module Merbiful
17
17
  begin
18
18
  filter = Merb::Template::EXTENSIONS[self.filter]
19
19
  if filter.method(:compile_template).arity == 3
20
- Merb::Template::EXTENSIONS[self.filter].compile_template(FAKE_IO_CLASS.new(self.body, render_id),
21
- render_id,
22
- Merb::InlineTemplates)
20
+ filter.compile_template(FAKE_IO_CLASS.new(self.body, render_id),
21
+ render_id,
22
+ Merb::InlineTemplates)
23
23
  elsif filter.method(:compile_template).arity == 4
24
- Merb::Template::EXTENSIONS[self.filter].compile_template(FAKE_IO_CLASS.new(self.body, render_id),
25
- render_id,
26
- [],
27
- Merb::InlineTemplates)
24
+ filter.compile_template(FAKE_IO_CLASS.new(self.body, render_id),
25
+ render_id,
26
+ [],
27
+ Merb::InlineTemplates)
28
28
  end
29
29
  end)
30
30
  end
@@ -14,10 +14,19 @@ module Merbiful
14
14
  self.body
15
15
  else
16
16
  controller.send(Merb::Template::METHOD_LIST[render_id] ||=
17
- Merb::Template::EXTENSIONS[self.filter].compile_template(FAKE_IO_CLASS.new(self.body, render_id),
18
- render_id,
19
- [],
20
- Merb::InlineTemplates))
17
+ begin
18
+ filter = Merb::Template::EXTENSIONS[self.filter]
19
+ if filter.method(:compile_template).arity == 3
20
+ Merb::Template::EXTENSIONS[self.filter].compile_template(FAKE_IO_CLASS.new(self.body, render_id),
21
+ render_id,
22
+ Merb::InlineTemplates)
23
+ elsif filter.method(:compile_template).arity == 4
24
+ Merb::Template::EXTENSIONS[self.filter].compile_template(FAKE_IO_CLASS.new(self.body, render_id),
25
+ render_id,
26
+ [],
27
+ Merb::InlineTemplates)
28
+ end
29
+ end)
21
30
  end
22
31
  unless Merb.environment == "development"
23
32
  caches.each do |destination, to_cache|
@@ -14,20 +14,26 @@ module Merbiful
14
14
 
15
15
  class MissingJsError < RuntimeError
16
16
  end
17
+
18
+ def root
19
+ Page.root
20
+ end
17
21
 
18
22
  def css(id)
19
23
  css_version = Css::Version.get(id)
20
24
  raise MissingCssError.new(id) unless css_version
25
+ headers["Content-Type"] = "text/css"
21
26
  css_version.render(self, css_version.css.path => css_version.css.cached)
22
27
  end
23
28
 
24
29
  def js(id)
25
30
  js_version = Js::Version.get(id)
26
31
  raise MissingJsError.new(id) unless js_version
32
+ headers["Content-Type"] = "text/javascript"
27
33
  js_version.render(self, js_version.js.path => js_version.js.cached)
28
34
  end
29
35
 
30
- def display(what)
36
+ def page(what)
31
37
  @page = Page.first(:path => what)
32
38
  raise NotFound.new(what.inspect) unless @page
33
39
  unless @page.jses.empty?
@@ -0,0 +1,61 @@
1
+
2
+ module Merbiful
3
+
4
+ class Controller < Merb::Controller
5
+
6
+ class MissingPageError < RuntimeError
7
+ end
8
+
9
+ class MissingLayoutError < RuntimeError
10
+ end
11
+
12
+ class MissingCssError < RuntimeError
13
+ end
14
+
15
+ class MissingJsError < RuntimeError
16
+ end
17
+
18
+ def root
19
+ Page.root
20
+ end
21
+
22
+ def css(id)
23
+ css_version = Css::Version.get(id)
24
+ raise MissingCssError.new(id) unless css_version
25
+ headers["Content-Type"] = "text/css"
26
+ css_version.render(self, css_version.css.path => css_version.css.cached)
27
+ end
28
+
29
+ def js(id)
30
+ js_version = Js::Version.get(id)
31
+ raise MissingJsError.new(id) unless js_version
32
+ headers["Content-Type"] = "text/javascript"
33
+ js_version.render(self, js_version.js.path => js_version.js.cached)
34
+ end
35
+
36
+ def plur(what)
37
+ @page = Page.first(:path => what)
38
+ raise NotFound.new(what.inspect) unless @page
39
+ unless @page.jses.empty?
40
+ throw_content(:for_js, @page.jses.inject([]) do |sum, frozen_js|
41
+ js = Js.get(frozen_js.id)
42
+ sum << "<script src='#{js.path}' type='text/javascript'></script>"
43
+ end.join("\n"))
44
+ end
45
+ unless @page.csses.empty?
46
+ throw_content(:for_css, @page.csses.inject([]) do |sum, frozen_css|
47
+ css = Css.get(frozen_css.id)
48
+ sum << "<link href='#{css.path}' #{css.media.blank? ? "" : "media='#{css.media}' "}rel='Stylesheet' type='text/css' />"
49
+ end.join("\n"))
50
+ end
51
+ if @page.layout
52
+ throw_content :for_layout, @page.render(self)
53
+ @page.layout.render(self, @page.path => @page.cached)
54
+ else
55
+ @page.render(self, @page.path => @page.cached)
56
+ end
57
+ end
58
+
59
+ end
60
+
61
+ end
@@ -32,7 +32,7 @@ module Merbiful
32
32
  def_delegators :latest, :render, :body, :filter
33
33
 
34
34
  def path
35
- "/stylesheets/#{latest.id}"
35
+ "/stylesheets/#{latest.id}.css"
36
36
  end
37
37
 
38
38
  class Ness
@@ -66,7 +66,7 @@ module Merbiful
66
66
  belongs_to :css, :class_name => "Merbiful::Css"
67
67
 
68
68
  before :save do
69
- clear_cache(css.path) if css.latest
69
+ css.path.clear_cache! if css.latest
70
70
  end
71
71
 
72
72
  end
@@ -31,7 +31,7 @@ module Merbiful
31
31
  def_delegators :latest, :render, :body, :filter
32
32
 
33
33
  def path
34
- "/javascripts/#{latest.id}"
34
+ "/javascripts/#{latest.id}.js"
35
35
  end
36
36
 
37
37
  class Ness
@@ -65,7 +65,7 @@ module Merbiful
65
65
  belongs_to :js, :class_name => "Merbiful::Js"
66
66
 
67
67
  before :save do
68
- clear_cache(js.path) if js.latest
68
+ js.path.clear_cache! if js.latest
69
69
  end
70
70
 
71
71
  end
@@ -43,6 +43,26 @@ module Merbiful
43
43
  end
44
44
  end
45
45
 
46
+ def self.root
47
+ first(:path => "/")
48
+ end
49
+
50
+ def ancestors
51
+ if self.parent.nil?
52
+ return []
53
+ else
54
+ return [parent] + parent.ancestors
55
+ end
56
+ end
57
+
58
+ def descendants
59
+ if self.children.empty?
60
+ return []
61
+ else
62
+ return self.children + self.children.inject([]) do |sum, child| sum + child.descendants end
63
+ end
64
+ end
65
+
46
66
  def latest
47
67
  versions.first(:page_id => self.id, :order => [:id.desc])
48
68
  end
@@ -4,9 +4,9 @@ Merb::Router.append do |r|
4
4
  r.match("/merbiful_admin").to(:controller => "admin", :namespace => "merbiful", :action => "index").name(:merbiful_admin_index)
5
5
  r.match("/merbiful_admin/:action").to(:controller => "admin", :namespace => "merbiful").name(:merbiful_admin)
6
6
  r.match("/stylesheets/admin").to(:controller => "admin", :namespace => "merbiful", :action => "render_css").name(:merbiful_admin_css)
7
- r.match("/stylesheets/:id").to(:controller => "controller", :namespace => "merbiful", :action => "css")
8
- r.match("/javascripts/:id").to(:controller => "controller", :namespace => "merbiful", :action => "js")
9
- r.match(/(.*)/).to(:controller => "controller", :namespace => "merbiful", :action => "display", :what => "[1]")
7
+ r.match("/stylesheets/:id.css").to(:controller => "controller", :namespace => "merbiful", :action => "css")
8
+ r.match("/javascripts/:id.js").to(:controller => "controller", :namespace => "merbiful", :action => "js")
9
+ r.match(/(.*)/).to(:controller => "controller", :namespace => "merbiful", :action => "page", :what => "[1]")
10
10
  end
11
11
 
12
12
  module Merbiful
@@ -0,0 +1,42 @@
1
+
2
+ Merb.logger.info("Compiling merbiful routes...")
3
+ Merb::Router.append do |r|
4
+ r.match("/merbiful_admin").to(:controller => "admin", :namespace => "merbiful", :action => "index").name(:merbiful_admin_index)
5
+ r.match("/merbiful_admin/:action").to(:controller => "admin", :namespace => "merbiful").name(:merbiful_admin)
6
+ r.match("/stylesheets/admin").to(:controller => "admin", :namespace => "merbiful", :action => "render_css").name(:merbiful_admin_css)
7
+ r.match("/stylesheets/:id.css").to(:controller => "controller", :namespace => "merbiful", :action => "css")
8
+ r.match("/javascripts/:id.js").to(:controller => "controller", :namespace => "merbiful", :action => "js")
9
+ r.match(/(.*)/).to(:controller => "controller", :namespace => "merbiful", :action => "plur", :what => "[1]")
10
+ end
11
+
12
+ module Merbiful
13
+
14
+ PREPEND_ROUTES = Merb::Router.routes[0..4]
15
+ APPEND_ROUTES = Merb::Router.routes[5..-1]
16
+
17
+ end
18
+
19
+ module Merb
20
+
21
+ class Router
22
+
23
+ class << self
24
+
25
+ alias :merbiful_old_prepare :prepare
26
+
27
+ def prepare(first = [], last = [], &block)
28
+ merbiful_old_prepare(first + ::Merbiful::PREPEND_ROUTES, last + ::Merbiful::APPEND_ROUTES, &block)
29
+ end
30
+
31
+ alias :merbiful_old_compile :compile
32
+
33
+ def compile
34
+ merbiful_old_compile unless compiled_statement.blank?
35
+ end
36
+
37
+ end
38
+
39
+ end
40
+
41
+ end
42
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merbiful-release
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Kihlgren
@@ -9,119 +9,10 @@ autorequire: merbiful-release
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-18 00:00:00 +02:00
12
+ date: 2009-02-19 00:00:00 +01:00
13
13
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: merb-core
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: merb_helpers
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
- - !ruby/object:Gem::Dependency
36
- name: merb_datamapper
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: "0"
44
- version:
45
- - !ruby/object:Gem::Dependency
46
- name: merb-action-args
47
- type: :runtime
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: "0"
54
- version:
55
- - !ruby/object:Gem::Dependency
56
- name: merb-assets
57
- type: :runtime
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: "0"
64
- version:
65
- - !ruby/object:Gem::Dependency
66
- name: merb-haml
67
- type: :runtime
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: "0"
74
- version:
75
- - !ruby/object:Gem::Dependency
76
- name: dm-core
77
- type: :runtime
78
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: "0"
84
- version:
85
- - !ruby/object:Gem::Dependency
86
- name: dm-aggregates
87
- type: :runtime
88
- version_requirement:
89
- version_requirements: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: "0"
94
- version:
95
- - !ruby/object:Gem::Dependency
96
- name: dm-migrations
97
- type: :runtime
98
- version_requirement:
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: "0"
104
- version:
105
- - !ruby/object:Gem::Dependency
106
- name: dm-timestamps
107
- type: :runtime
108
- version_requirement:
109
- version_requirements: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- version: "0"
114
- version:
115
- - !ruby/object:Gem::Dependency
116
- name: dm-validations
117
- type: :runtime
118
- version_requirement:
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: "0"
124
- version:
14
+ dependencies: []
15
+
125
16
  description: Merb plugin that provides a simple CMS
126
17
  email: martin@wemind.se
127
18
  executables: []
@@ -139,6 +30,7 @@ files:
139
30
  - lib/merbiful-release/body.rb
140
31
  - lib/merbiful-release/body.rb~
141
32
  - lib/merbiful-release/controller.rb
33
+ - lib/merbiful-release/controller.rb~
142
34
  - lib/merbiful-release/css.rb
143
35
  - lib/merbiful-release/css.rb~
144
36
  - lib/merbiful-release/erubis.rb~
@@ -155,6 +47,7 @@ files:
155
47
  - lib/merbiful-release/page.rb~
156
48
  - lib/merbiful-release/relative_time.rb
157
49
  - lib/merbiful-release/routes.rb
50
+ - lib/merbiful-release/routes.rb~
158
51
  - lib/merbiful-release/string.rb
159
52
  - lib/merbiful-release/string.rb~
160
53
  - lib/merbiful-release.rb