Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-01-09 23:46:38 +0300
committerRémy Coutable <remy@rymai.me>2017-01-18 18:38:34 +0300
commite5a29b451473c6f188d5096f21055d27a51fdf90 (patch)
tree0cbbd7e09b0636a2a19c1a19078ae95dc6f538c6 /lib/gitlab/view
parentbf789ff567c71ff68c216bfa8f3d43e09b6f49fb (diff)
Improve presenter factory
Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'lib/gitlab/view')
-rw-r--r--lib/gitlab/view/presenter/factory.rb22
-rw-r--r--lib/gitlab/view/presenter_factory.rb39
2 files changed, 22 insertions, 39 deletions
diff --git a/lib/gitlab/view/presenter/factory.rb b/lib/gitlab/view/presenter/factory.rb
new file mode 100644
index 00000000000..92979c61a25
--- /dev/null
+++ b/lib/gitlab/view/presenter/factory.rb
@@ -0,0 +1,22 @@
+module Gitlab
+ module View
+ module Presenter
+ class Factory
+ def initialize(subject, **attributes)
+ @subject = subject
+ @attributes = attributes
+ end
+
+ def fabricate!
+ presenter_class.new(@subject, @attributes)
+ end
+
+ private
+
+ def presenter_class
+ @subject.class.const_get('Presenter')
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/view/presenter_factory.rb b/lib/gitlab/view/presenter_factory.rb
deleted file mode 100644
index c8cab1249da..00000000000
--- a/lib/gitlab/view/presenter_factory.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-module Gitlab
- module View
- class PresenterFactory
- def initialize(subject, user: nil)
- @subject = subject
- @user = user
- end
-
- def fabricate!
- presenter =
- if presenter_class.ancestors.include?(SimpleDelegator)
- delegator_presenter
- else
- simple_presenter
- end
-
- presenter
- .with_subject(subject)
- .with_user(user)
- end
-
- private
-
- attr_reader :subject, :user
-
- def presenter_class
- "#{subject.class.name.demodulize}Presenter".constantize
- end
-
- def delegator_presenter
- presenter_class.new(subject)
- end
-
- def simple_presenter
- presenter_class.new
- end
- end
- end
-end