merbiful-release 0.2.4 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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