Skip to content

Commit

Permalink
Group multiple versions of the same gem.
Browse files Browse the repository at this point in the history
  • Loading branch information
georgebrock authored and tomlea committed Feb 12, 2010
1 parent 8ed85c7 commit 3a59d04
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 12 deletions.
12 changes: 12 additions & 0 deletions lib/geminabox.rb
Expand Up @@ -21,6 +21,18 @@ class Geminabox < Sinatra::Base
@gems = []
end

indices = {}
@gems = @gems.inject([]) do |grouped_gems, (name, version, lang)|
if i = indices[name]
grouped_gems[i][1] << version
grouped_gems[i][1].sort!
else
indices[name] = grouped_gems.size
grouped_gems << [name, [version], lang]
end
grouped_gems
end

erb :index
end

Expand Down
17 changes: 12 additions & 5 deletions public/master.css
Expand Up @@ -15,6 +15,10 @@ a:hover {
color: #00f;
}

form {
margin: 0;
}

code {
font-size: 0.7em;
}
Expand Down Expand Up @@ -60,12 +64,15 @@ ul.gemlist li strong {
}

ul.gemlist li .delete-form {
position: relative;
padding: 0.25em 0;
}
ul.gemlist li .delete-form button {
visibility: hidden;
position: absolute;
top: 0;
right: 0;
display: none;
top: 0;
}

ul.gemlist li:hover .delete-form {
display: block;
ul.gemlist li .delete-form:hover button {
visibility: visible;
}
16 changes: 9 additions & 7 deletions views/index.erb
Expand Up @@ -2,14 +2,16 @@
<a href="upload">Upload Another Gem</a>

<ul class="gemlist">
<% @gems.each do |name, version| %>
<% @gems.each do |name, versions| %>
<li>
<strong><%= name %> (<%= version %>)</strong>
<code>gem install <%= name %> -v "<%= version %>"</code>
<form class="delete-form" method="post" action="/gems/<%= name %>-<%= version %>.gem">
<input type="hidden" name="_method" value="DELETE" />
<input type="submit" value="delete" />
</form>
<strong><%= name %> (<%= versions.size == 1 ? versions.first : "#{versions.first} - #{versions.last}" %>)</strong>
<% versions.each do |version| %>
<form class="delete-form" method="post" action="/gems/<%= name %>-<%= version %>.gem">
<code>gem install <%= name %> -v "<%= version %>"</code>
<input type="hidden" name="_method" value="DELETE" />
<button type="submit">delete</button>
</form>
<% end %>
</li>
<% end %>
</ul>
Expand Down

0 comments on commit 3a59d04

Please sign in to comment.