rendering_engine 0.0.1 → 0.1.0
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.
- checksums.yaml +8 -8
- data/README.md +71 -3
- data/lib/rendering_engine/content.rb +13 -6
- data/lib/rendering_engine/content_helpers.rb +4 -1
- data/lib/rendering_engine/provider.rb +7 -5
- data/lib/rendering_engine/version.rb +1 -1
- data/rendering_engine.gemspec +1 -1
- data/spec/rendering_engine/content_helpers_spec.rb +3 -2
- data/spec/rendering_engine/content_spec.rb +11 -3
- data/spec/rendering_engine/provider_spec.rb +5 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YzhkNmMzOWYzMmU3MmFhMDI5NjA0N2FmMGVhMTA5ZWQ4MjVmMGNmYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NTRkZDIxYTA5MWU1MTA5NDk4NGQwMThmNmM1NDU3N2VhNTE4NDVlNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWNkNzRhNmNhOGNmYzczMTcxMzIwN2Q5YzY2MTQ1NWRlNmYzYjQ5ZTM3NTEw
|
10
|
+
NDMyYmI5N2U1MTNjMTA0ZGVkZTdlOGU5OTNmMGQzZmRkODUxZTRkYzQ4NTdl
|
11
|
+
NjYwNDQ5OGQ2N2QwMjBkYjk5MDc4ZjA3MDUwNWM4ZTY1YmJmNmI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZTlkNDM0ZmYxNzYwYzkyMGE0YzdkMmJlMWQyM2M2Njk1MzJlZDc3NGVjY2Nh
|
14
|
+
ZjljNjI2MzI1NjNhYTM5YmJjOGNhYjAwMjM2ZWI5ZDQyZTAyOGJiYTg2Zjg3
|
15
|
+
NzkwODdmMDY1NTI4MTgyZDFjNWI1YmFjNmZjMDI5M2FhODhjZDg=
|
data/README.md
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# RenderingEngine
|
2
2
|
|
3
|
-
TODO: Write a gem description
|
4
|
-
|
5
3
|
## Installation
|
6
4
|
|
7
5
|
Add this line to your application's Gemfile:
|
@@ -18,7 +16,77 @@ Or install it yourself as:
|
|
18
16
|
|
19
17
|
## Usage
|
20
18
|
|
21
|
-
|
19
|
+
$ content_provider = RenderingEngine::Provider.new(base_path)
|
20
|
+
$ content = content_provider.get(relative_file_path)
|
21
|
+
$ content.source #gets source of file (rendered or not :D)
|
22
|
+
$ content.kind return (:orginal, :template, :unknown)
|
23
|
+
|
24
|
+
In controller can looks like this:
|
25
|
+
|
26
|
+
---
|
27
|
+
def show
|
28
|
+
path = "#{params[:client]}/#{params[:path]}"
|
29
|
+
data = params[:data]
|
30
|
+
|
31
|
+
content = content_provider.get(path, data)
|
32
|
+
return not_found if content.unknown?
|
33
|
+
|
34
|
+
render text: content.source
|
35
|
+
end
|
36
|
+
|
37
|
+
def content_provider
|
38
|
+
@content_provider ||= RenderingEngine::Provider.new(Rails.root.join('app/content'))
|
39
|
+
end
|
40
|
+
---
|
41
|
+
|
42
|
+
## Own Helper class
|
43
|
+
|
44
|
+
```
|
45
|
+
|
46
|
+
class ContentCustomHelpers
|
47
|
+
def initialize(opts={})
|
48
|
+
@base_path = opts.fetch(:base_path)
|
49
|
+
@data = opts[:data]
|
50
|
+
end
|
51
|
+
|
52
|
+
def make_some_stuff
|
53
|
+
"best line ever!"
|
54
|
+
end
|
55
|
+
|
56
|
+
def render(file_relative_path)
|
57
|
+
file_path = File.join(base_path, file_relative_path)
|
58
|
+
|
59
|
+
RenderingEngine::Content.new(file_path, data: data, custom_helper: self.class).source
|
60
|
+
end
|
61
|
+
|
62
|
+
attr_reader :data
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
attr_reader :base_path
|
67
|
+
end
|
68
|
+
|
69
|
+
|
70
|
+
```
|
71
|
+
|
72
|
+
### Usage own custom class
|
73
|
+
|
74
|
+
```
|
75
|
+
|
76
|
+
provider = RenderingEngine::Provider.new(Rails.root.join('app/content'), custom_helper: ContentCustomHelpers)
|
77
|
+
provider.get(path).source
|
78
|
+
|
79
|
+
```
|
80
|
+
|
81
|
+
or
|
82
|
+
|
83
|
+
```
|
84
|
+
|
85
|
+
provider = RenderingEngine::Provider.new(Rails.root.join('app/content'))
|
86
|
+
provider.get(path, custom_helper: ContentCustomHelpers).source
|
87
|
+
|
88
|
+
|
89
|
+
```
|
22
90
|
|
23
91
|
## Contributing
|
24
92
|
|
@@ -2,18 +2,23 @@ require 'erb'
|
|
2
2
|
|
3
3
|
module RenderingEngine
|
4
4
|
class Content
|
5
|
-
attr_reader :file_path
|
5
|
+
attr_reader :file_path, :data
|
6
6
|
|
7
|
-
def initialize(file_path,
|
7
|
+
def initialize(file_path, opts={})
|
8
8
|
@file_path = file_path
|
9
|
-
@base_folder_path = base_folder_path
|
9
|
+
@base_folder_path = opts[:base_folder_path]
|
10
|
+
@data = opts[:data]
|
11
|
+
@custom_helper = opts[:custom_helper]
|
10
12
|
end
|
11
13
|
|
12
14
|
def source
|
13
15
|
@source ||= (
|
14
16
|
case kind
|
15
17
|
when :orginal then File.read(file_path)
|
16
|
-
when :template
|
18
|
+
when :template
|
19
|
+
ERB.new(File.read(file_path_as_erb)).result(
|
20
|
+
helper(base_folder_path, data).instance_eval { binding }
|
21
|
+
)
|
17
22
|
else ''
|
18
23
|
end
|
19
24
|
)
|
@@ -49,8 +54,10 @@ module RenderingEngine
|
|
49
54
|
|
50
55
|
private
|
51
56
|
|
52
|
-
|
53
|
-
|
57
|
+
attr_reader :custom_helper
|
58
|
+
|
59
|
+
def helper(path, content_data)
|
60
|
+
(custom_helper || ContentHelpers).new(base_path: path, data: content_data)
|
54
61
|
end
|
55
62
|
|
56
63
|
def orginal_file_present?
|
@@ -2,14 +2,17 @@ module RenderingEngine
|
|
2
2
|
class ContentHelpers
|
3
3
|
def initialize(opts={})
|
4
4
|
@base_path = opts.fetch(:base_path)
|
5
|
+
@data = opts[:data]
|
5
6
|
end
|
6
7
|
|
7
8
|
def render(file_relative_path)
|
8
9
|
file_path = File.join(base_path, file_relative_path)
|
9
10
|
|
10
|
-
RenderingEngine::Content.new(file_path).source
|
11
|
+
RenderingEngine::Content.new(file_path, data: data).source
|
11
12
|
end
|
12
13
|
|
14
|
+
attr_reader :data
|
15
|
+
|
13
16
|
private
|
14
17
|
|
15
18
|
attr_reader :base_path
|
@@ -1,16 +1,18 @@
|
|
1
1
|
module RenderingEngine
|
2
2
|
class Provider
|
3
|
-
def initialize(base_path)
|
3
|
+
def initialize(base_path, base_opts={})
|
4
4
|
@base_path = base_path
|
5
|
+
@base_opts = base_opts
|
5
6
|
end
|
6
7
|
|
7
|
-
def get(relative_path)
|
8
|
-
file_path
|
9
|
-
|
8
|
+
def get(relative_path, opts={})
|
9
|
+
file_path = File.join(base_path, relative_path)
|
10
|
+
content_opts = base_opts.merge(opts)
|
11
|
+
Content.new(file_path, content_opts)
|
10
12
|
end
|
11
13
|
|
12
14
|
private
|
13
15
|
|
14
|
-
attr_reader :base_path
|
16
|
+
attr_reader :base_path, :base_opts
|
15
17
|
end
|
16
18
|
end
|
data/rendering_engine.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["pniemczyk@o2.pl"]
|
11
11
|
spec.description = %q{ Rendering engine based on ERB }
|
12
12
|
spec.summary = %q{ Rendering engine based on ERB }
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "https://github.com/pniemczyk/rendering_engine"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
@@ -6,11 +6,12 @@ describe RenderingEngine::ContentHelpers do
|
|
6
6
|
let(:file_path) { File.join(base_path, file_relative_path) }
|
7
7
|
let(:content) { double('content_object', source: source) }
|
8
8
|
let(:source) { 'file_source' }
|
9
|
-
|
9
|
+
let(:content_data) {{ name: 'pawel' }}
|
10
|
+
subject { described_class.new(base_path: base_path, data: content_data) }
|
10
11
|
|
11
12
|
it '#render' do
|
12
13
|
RenderingEngine::Content.should_receive(:new)
|
13
|
-
.with(file_path)
|
14
|
+
.with(file_path, data: content_data)
|
14
15
|
.and_return(content)
|
15
16
|
|
16
17
|
subject.render(file_relative_path).should eq source
|
@@ -6,9 +6,17 @@ describe RenderingEngine::Content do
|
|
6
6
|
let(:relative_path) { 'login/form.html' }
|
7
7
|
let(:file_path) { File.join(base_path, relative_path) }
|
8
8
|
let(:content) { double('ContentObject') }
|
9
|
+
let(:content_data) { nil }
|
10
|
+
let(:custom_helper) { nil }
|
11
|
+
let(:opts) do
|
12
|
+
{
|
13
|
+
base_folder_path: test_base_path,
|
14
|
+
data: content_data,
|
15
|
+
custom_helper: custom_helper
|
16
|
+
}
|
17
|
+
end
|
9
18
|
|
10
|
-
|
11
|
-
subject { described_class.new(file_path, test_base_path) }
|
19
|
+
subject { described_class.new(file_path, opts) }
|
12
20
|
|
13
21
|
context '#source' do
|
14
22
|
|
@@ -48,7 +56,7 @@ describe RenderingEngine::Content do
|
|
48
56
|
let(:base_folder_path) { 'root/contract/files/login' }
|
49
57
|
before do
|
50
58
|
ERB.should_receive(:new).with(source).and_return(erb_instance)
|
51
|
-
subject.should_receive(:
|
59
|
+
subject.should_receive(:helper).with(base_folder_path, content_data)
|
52
60
|
.and_return(double)
|
53
61
|
erb_instance.should_receive(:result).with(an_instance_of(Binding))
|
54
62
|
.and_return(rendered_source)
|
@@ -5,12 +5,15 @@ describe RenderingEngine::Provider do
|
|
5
5
|
let(:relative_path) { 'login/form.html' }
|
6
6
|
let(:file_path) { File.join(base_path, relative_path) }
|
7
7
|
let(:content) { double('ContentObject') }
|
8
|
+
let(:data) { double('data') }
|
9
|
+
let(:custom_helper) { double('custom_helper') }
|
10
|
+
let(:opts) {{ data: data, custom_helper: custom_helper }}
|
8
11
|
subject { described_class.new(base_path) }
|
9
12
|
|
10
13
|
it '#get' do
|
11
14
|
RenderingEngine::Content.should_receive(:new)
|
12
|
-
.with(file_path)
|
15
|
+
.with(file_path, opts)
|
13
16
|
.and_return(content)
|
14
|
-
subject.get(relative_path).should be content
|
17
|
+
subject.get(relative_path, opts).should be content
|
15
18
|
end
|
16
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rendering_engine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paweł Niemczyk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-05-
|
11
|
+
date: 2014-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -75,7 +75,7 @@ files:
|
|
75
75
|
- spec/rendering_engine/content_spec.rb
|
76
76
|
- spec/rendering_engine/provider_spec.rb
|
77
77
|
- spec/spec_helper.rb
|
78
|
-
homepage:
|
78
|
+
homepage: https://github.com/pniemczyk/rendering_engine
|
79
79
|
licenses:
|
80
80
|
- MIT
|
81
81
|
metadata: {}
|