Sha256: b48706bd1326a0a4a795a55c5560438ae5a3557efd10e68dce6bbc5520099881

Contents?: true

Size: 693 Bytes

Versions: 3

Compression:

Stored size: 693 Bytes

Contents

class ProjectPresenter
  include UrlHelper

  def initialize(projects)
    @projects = OneOrMany.new(projects)
  end

  def as_json(*args)
    projects = @projects
    projects = Houston.benchmark "[#{self.class.name.underscore}] Load objects" do
      projects.load
    end if projects.is_a?(ActiveRecord::Relation)
    Houston.benchmark "[#{self.class.name.underscore}] Prepare JSON" do
      projects.map(&method(:project_to_json))
    end
  end

  def project_to_json(project)
    { id: project.id,
      name: project.name,
      slug: project.slug,
      color: {
        name: project.color,
        hex: project.color_value.hex },
      props: project.extended_attributes }
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
houston-core-0.6.3 app/presenters/project_presenter.rb
houston-core-0.6.2 app/presenters/project_presenter.rb
houston-core-0.6.1 app/presenters/project_presenter.rb