mezis/appfab

View on GitHub
app/views/users/_user.html.haml

Summary

Maintainability
Test Coverage
-# Context:
-# user     (User)
-# name     (boolean, default false),
-# link     (boolean, default true)
-# avatar   (boolean or integer, default false)
-# classes  (string, default none)
= cached_fragment(disabled:false, resource:User, id:user.id, v:9, key:[user.login.updated_at, user.updated_at, *local_assigns.values_at(:name, :avatar, :karma, :classes, :link), can?(:read, user)]) do

  :ruby
    show_avatar    = !!local_assigns.fetch(:avatar,  true)
    show_name      =   local_assigns.fetch(:name,    !show_avatar)
    show_karma     =   local_assigns.fetch(:karma,   show_name)
    show_tooltip   = !!local_assigns.fetch(:tooltip, true)
    avatar_size    =   local_assigns.fetch(:avatar,  nil)
    wrap_link      = !!local_assigns.fetch(:link,    true)
    classes        =   local_assigns.fetch(:classes, nil)

    link_target = (can?(:read, user) && wrap_link) ? user : nil

    avatar_options = avatar_size.kind_of?(Integer) ? { size:avatar_size } : {}
    link_options = show_tooltip ? user_tooltip_options(user) : {}

  %div[user]{ class:classes }<>
    - body = capture do
      - if show_avatar
        %img.avatar{ src:user.login.gravatar_url(avatar_options) }<>
      - if show_name
        .name>
          = user.first_name
          - if show_karma
            %span.karma
              = surround '(', ')' do
                = number_with_delimiter user.karma
                = user_karma_symbol
    - if link_target
      = link_to link_target, link_options do
        = body
    - else
      = body