diff options
author | Rémy Coutable <remy@rymai.me> | 2017-01-09 21:46:38 +0100 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2017-01-18 16:38:34 +0100 |
commit | e5a29b451473c6f188d5096f21055d27a51fdf90 (patch) | |
tree | 0cbbd7e09b0636a2a19c1a19078ae95dc6f538c6 /lib/gitlab/view | |
parent | bf789ff567c71ff68c216bfa8f3d43e09b6f49fb (diff) | |
download | gitlab-ce-e5a29b451473c6f188d5096f21055d27a51fdf90.tar.gz |
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.rb | 22 | ||||
-rw-r--r-- | lib/gitlab/view/presenter_factory.rb | 39 |
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 |