hobber 0.6.2 → 0.6.4
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/Gemfile +0 -2
- data/hobber.gemspec +3 -2
- data/lib/hobber/render_action.rb +37 -15
- data/lib/hobber/renderable_object.rb +6 -3
- data/lib/hobber/version.rb +1 -1
- data/lib/hobber.rb +39 -7
- metadata +13 -13
data/Gemfile
CHANGED
data/hobber.gemspec
CHANGED
@@ -16,7 +16,8 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.version = Hobber::VERSION
|
17
17
|
|
18
18
|
gem.add_dependency 'tilt'
|
19
|
-
gem.add_dependency 'rdiscount'
|
20
|
-
gem.add_dependency 'haml'
|
21
19
|
gem.add_dependency 'thor'
|
20
|
+
|
21
|
+
gem.add_dependency "active_support"
|
22
|
+
gem.add_dependency "sprockets"
|
22
23
|
end
|
data/lib/hobber/render_action.rb
CHANGED
@@ -3,33 +3,55 @@ require 'hobber/rendered_object'
|
|
3
3
|
|
4
4
|
module Hobber
|
5
5
|
class RenderAction
|
6
|
-
|
6
|
+
attr_accessor :rewrite_paths
|
7
|
+
attr_accessor :rewrite_urls
|
8
|
+
|
9
|
+
def initialize robjects, binding=nil, &block
|
7
10
|
@robjects = robjects
|
8
11
|
@tmpl_vars = {}
|
9
12
|
@layouts = []
|
10
13
|
@rewrite_paths = []
|
11
|
-
@rewrite_urls
|
14
|
+
@rewrite_urls = []
|
12
15
|
@target_extention = nil
|
16
|
+
@caller_binding = binding || ( block && block.binding )
|
13
17
|
|
14
18
|
if block
|
15
19
|
block.arity <= 0 ? instance_eval(&block) : block.call(self)
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
19
|
-
def layout
|
20
|
-
|
21
|
-
|
23
|
+
def layout *robjects
|
24
|
+
robjects.each do |robject|
|
25
|
+
raise ArgumentError.new('Expected RenderableObject as a layout') unless robject.is_a?(RenderableObject)
|
26
|
+
end
|
27
|
+
@layouts.concat robjects
|
22
28
|
end
|
23
29
|
|
24
|
-
def tmpl_vars vars
|
30
|
+
def tmpl_vars vars=[]
|
31
|
+
if vars.empty?
|
32
|
+
return @tmpl_vars
|
33
|
+
end
|
25
34
|
@tmpl_vars.merge!(vars)
|
26
35
|
end
|
27
36
|
|
28
|
-
def
|
37
|
+
def _parse_rewrite_args *args
|
38
|
+
if args.count == 1 && args[0].is_a?(Hash)
|
39
|
+
regexp, replacement = args[0].keys.first, args[0].values.first
|
40
|
+
elsif args.count == 2
|
41
|
+
regexp, replacement = args
|
42
|
+
else
|
43
|
+
raise ArgumentError.new('[rewrite_path] Expected either [regexp => sub] or [regexp, replacement] as arguments')
|
44
|
+
end
|
45
|
+
return regexp, replacement
|
46
|
+
end
|
47
|
+
|
48
|
+
def rewrite_path *args
|
49
|
+
regexp, replacement = _parse_rewrite_args(*args)
|
29
50
|
@rewrite_paths << [regexp, replacement]
|
30
51
|
end
|
31
52
|
|
32
|
-
def rewrite_url
|
53
|
+
def rewrite_url *args
|
54
|
+
regexp, replacement = _parse_rewrite_args(*args)
|
33
55
|
@rewrite_urls << [regexp, replacement]
|
34
56
|
end
|
35
57
|
|
@@ -43,31 +65,31 @@ module Hobber
|
|
43
65
|
def perform
|
44
66
|
@robjects.map do |ro|
|
45
67
|
RenderedObject.new(
|
46
|
-
:data=>
|
68
|
+
:data=>_render_renderable_object(ro, { :item => ro }.merge(@tmpl_vars), @layouts),
|
47
69
|
:renderable_object=>ro,
|
48
70
|
:layouts=> @layouts,
|
49
|
-
:path=>
|
50
|
-
:url=>
|
71
|
+
:path=>_rewrite_paths(ro.path, @rewrite_paths),
|
72
|
+
:url=>_rewrite_paths(ro.path, @rewrite_urls))
|
51
73
|
end
|
52
74
|
end
|
53
75
|
|
54
76
|
protected
|
55
77
|
|
56
|
-
def
|
78
|
+
def _render_renderable_object ro, tmpl_vars={}, layouts=[]
|
57
79
|
tmpl_vars.merge!(ro.tmpl_vars)
|
58
80
|
tmpl_vars.merge!(:current_renderable_object => ro)
|
59
81
|
|
60
|
-
result = ro.render(tmpl_vars)
|
82
|
+
result = ro.render(tmpl_vars, @caller_binding)
|
61
83
|
|
62
84
|
render_chain = layouts.reverse
|
63
85
|
render_chain.each do |layout|
|
64
86
|
tmpl_vars = layout.tmpl_vars.merge(tmpl_vars)
|
65
|
-
result = layout.render(tmpl_vars) { result }
|
87
|
+
result = layout.render(tmpl_vars, @caller_binding) { result }
|
66
88
|
end
|
67
89
|
result
|
68
90
|
end
|
69
91
|
|
70
|
-
def
|
92
|
+
def _rewrite_paths path, rewrites
|
71
93
|
target_path = path.dup
|
72
94
|
rewrites.each do |regexp, replacement|
|
73
95
|
target_path.gsub!(regexp, replacement)
|
@@ -14,8 +14,7 @@ module Hobber
|
|
14
14
|
@data = yield(self) if block_given?
|
15
15
|
end
|
16
16
|
|
17
|
-
def render(vars={}, &block)
|
18
|
-
context = Object.new
|
17
|
+
def render(vars={}, context=Object.new, &block)
|
19
18
|
_render_template_chain(@path, data, context, vars, &block)
|
20
19
|
end
|
21
20
|
|
@@ -24,7 +23,11 @@ module Hobber
|
|
24
23
|
end
|
25
24
|
|
26
25
|
def [](key)
|
27
|
-
tmpl_vars
|
26
|
+
tmpl_vars[key]
|
27
|
+
end
|
28
|
+
|
29
|
+
def fetch(*a)
|
30
|
+
tmpl_vars.fetch(*a)
|
28
31
|
end
|
29
32
|
|
30
33
|
def data
|
data/lib/hobber/version.rb
CHANGED
data/lib/hobber.rb
CHANGED
@@ -1,26 +1,48 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'thor'
|
3
3
|
require 'logger'
|
4
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
4
5
|
|
5
6
|
require "hobber/version"
|
6
7
|
require 'hobber/renderable_object'
|
7
8
|
require 'hobber/rendered_object_saver'
|
8
9
|
require 'hobber/render_action'
|
9
10
|
|
11
|
+
require 'yaml'
|
12
|
+
require 'sprockets'
|
13
|
+
|
10
14
|
module Hobber
|
11
|
-
|
12
|
-
|
15
|
+
include Thor::Shell
|
16
|
+
include FileUtils
|
17
|
+
|
18
|
+
def assets
|
19
|
+
@assets ||= Sprockets::Environment.new
|
20
|
+
end
|
21
|
+
|
22
|
+
def load_yaml_config path
|
23
|
+
HashWithIndifferentAccess.new(YAML.load_file(path))
|
24
|
+
end
|
25
|
+
|
26
|
+
def default_tmpl_vars vars
|
27
|
+
@default_tmpl_vars ||= {}
|
28
|
+
@default_tmpl_vars.merge!(vars)
|
13
29
|
end
|
14
30
|
|
15
|
-
def
|
16
|
-
@
|
31
|
+
def default_rewrite_path *args
|
32
|
+
@default_rewrite_paths ||= []
|
33
|
+
@default_rewrite_paths << args
|
34
|
+
end
|
35
|
+
|
36
|
+
def default_rewrite_url *args
|
37
|
+
@default_rewrite_urls ||= []
|
38
|
+
@default_rewrite_urls << args
|
17
39
|
end
|
18
40
|
|
19
41
|
def remove_output_dir dirname, options={}
|
20
42
|
safe_mode = options.fetch(:safe, false)
|
21
43
|
|
22
44
|
dirname = Pathname.new(dirname)
|
23
|
-
if safe_mode &&
|
45
|
+
if safe_mode && no?("Do you want to remove output dir [#{dirname.realpath}]? (y/yes/other=no)")
|
24
46
|
return
|
25
47
|
end
|
26
48
|
FileUtils.rm_r dirname.realpath
|
@@ -41,8 +63,18 @@ module Hobber
|
|
41
63
|
end
|
42
64
|
|
43
65
|
def render robjects, opts={}, &block
|
44
|
-
|
45
|
-
|
66
|
+
render_action = RenderAction.new(robjects.to_a, block.binding, &block)
|
67
|
+
if render_action.rewrite_paths.empty?
|
68
|
+
@default_rewrite_paths && @default_rewrite_paths.map { |args| render_action.rewrite_path *args }
|
69
|
+
end
|
70
|
+
if render_action.rewrite_urls.empty?
|
71
|
+
@default_rewrite_urls && @default_rewrite_urls.map { |args| render_action.rewrite_url *args }
|
72
|
+
end
|
73
|
+
if @default_tmpl_vars
|
74
|
+
render_action.tmpl_vars @default_tmpl_vars.merge(render_action.tmpl_vars)
|
75
|
+
end
|
76
|
+
rendered_objects = render_action.perform
|
77
|
+
robjects.is_a?(Array) ? rendered_objects : rendered_objects.first
|
46
78
|
end
|
47
79
|
|
48
80
|
def save *args
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hobber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-29 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: tilt
|
16
|
-
requirement: &
|
16
|
+
requirement: &70258422315100 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70258422315100
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
|
-
name:
|
27
|
-
requirement: &
|
26
|
+
name: thor
|
27
|
+
requirement: &70258422314680 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70258422314680
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement: &
|
37
|
+
name: active_support
|
38
|
+
requirement: &70258422314260 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70258422314260
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
-
requirement: &
|
48
|
+
name: sprockets
|
49
|
+
requirement: &70258422313840 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70258422313840
|
58
58
|
description: Minimal implementation ..
|
59
59
|
email:
|
60
60
|
- boy.maas@gmail.com
|