substance_presenter 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 +7 -0
- data/Rakefile +8 -0
- data/lib/substance_presenter.rb +56 -0
- metadata +47 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 51b44a06dece062ee17455d1368e9243bf875d9fbe59147bafbfc23bc9395af1
|
4
|
+
data.tar.gz: 53154909733e1b247c0003e328659e7f2ac3a47478cbf3fc4497987753aa1579
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 856ec1f33e83e46b4b08104284743ae72bfe4d139b76319b640e3abfc8ea19a2e30e8b31d567a34de94c604750e87b3846ff6f6527585125972a02c6746c7f0a
|
7
|
+
data.tar.gz: 0433b8fab328c68a9f7c06e4a6a14536a9bd0ca75eee3698d456f03217bd4062f1ecaba10c8d39d4aac804ae8fe79bb3265a6adcea1eed37a8d76eedf59c04af
|
data/Rakefile
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'delegate'
|
4
|
+
|
5
|
+
module Substance
|
6
|
+
class Presenter < ::SimpleDelegator
|
7
|
+
attr_reader :view
|
8
|
+
|
9
|
+
class << self
|
10
|
+
# Returns true if object has been wrapped in a Presenter
|
11
|
+
def decorated?(object)
|
12
|
+
object.is_a?(Presenter)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Wrap object in presenter with access to a view context
|
16
|
+
def present(object, view)
|
17
|
+
return object if decorated?(object)
|
18
|
+
new(object, view)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Wrap each object in presenter with access to a view context
|
22
|
+
def present_collection(collection, view)
|
23
|
+
collection.map do |item|
|
24
|
+
present(item, view)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def initialize(object, view)
|
30
|
+
super(object)
|
31
|
+
@view = view
|
32
|
+
end
|
33
|
+
|
34
|
+
def object
|
35
|
+
undecorated(__getobj__)
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def decorated?(object)
|
41
|
+
self.class.decorated?(object)
|
42
|
+
end
|
43
|
+
|
44
|
+
def present_collection(collection, presenter)
|
45
|
+
presenter.present_collection(collection, view)
|
46
|
+
end
|
47
|
+
|
48
|
+
def undecorated(potentially_decorated_object)
|
49
|
+
if decorated?(potentially_decorated_object)
|
50
|
+
potentially_decorated_object.object
|
51
|
+
else
|
52
|
+
potentially_decorated_object
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: substance_presenter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ole Palm
|
8
|
+
- Jakob Skjerning
|
9
|
+
- Jakob Dam Jensen
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2018-05-10 00:00:00.000000000 Z
|
14
|
+
dependencies: []
|
15
|
+
description: An easy to use presenter implementation
|
16
|
+
email: ole.palm@substancelab.com
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- Rakefile
|
22
|
+
- lib/substance_presenter.rb
|
23
|
+
homepage: http://rubygems.org/gems/substance_presenter
|
24
|
+
licenses:
|
25
|
+
- MIT
|
26
|
+
metadata: {}
|
27
|
+
post_install_message:
|
28
|
+
rdoc_options: []
|
29
|
+
require_paths:
|
30
|
+
- lib
|
31
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
requirements: []
|
42
|
+
rubyforge_project:
|
43
|
+
rubygems_version: 2.7.3
|
44
|
+
signing_key:
|
45
|
+
specification_version: 4
|
46
|
+
summary: An easy to use presenter implementation
|
47
|
+
test_files: []
|