Class: Velocitator
- Inherits:
-
Object
- Object
- Velocitator
- Includes:
- Helpers
- Defined in:
- lib/gem_velocity/velocitator.rb
Instance Attribute Summary collapse
-
#date_range ⇒ Object
modifiers on the end result image being rendered.
-
#gem_name ⇒ Object
Returns the value of attribute gem_name.
-
#max_value ⇒ Object
modifiers on the end result image being rendered.
-
#min_value ⇒ Object
modifiers on the end result image being rendered.
-
#root ⇒ Object
modifiers on the end result image being rendered.
-
#versions ⇒ Object
Returns the value of attribute versions.
Instance Method Summary collapse
- #default_max_value ⇒ Object
- #default_min_value ⇒ Object
- #effective_date_range ⇒ Object
- #graph(root_arg = nil, range = nil, min = nil, max = nil) ⇒ Object
-
#gruff_builder ⇒ Object
call, after you set all the attributes you want.
-
#initialize(gem_name, versions) ⇒ Velocitator
constructor
A new instance of Velocitator.
- #line_datas ⇒ Object
- #specific_days_in_range ⇒ Object
Methods included from Helpers
#time_format_str, #time_format_str_small
Constructor Details
#initialize(gem_name, versions) ⇒ Velocitator
Returns a new instance of Velocitator.
16 17 18 19 20 21 22 23 |
# File 'lib/gem_velocity/velocitator.rb', line 16 def initialize(gem_name, versions) @gem_name = gem_name || raise(ArgumentError, 'need a name') @versions = if versions.is_a?(String) [versions] else versions end || raise(ArgumentError, 'required versions') end |
Instance Attribute Details
#date_range ⇒ Object
modifiers on the end result image being rendered.
14 15 16 |
# File 'lib/gem_velocity/velocitator.rb', line 14 def date_range @date_range end |
#gem_name ⇒ Object
Returns the value of attribute gem_name.
11 12 13 |
# File 'lib/gem_velocity/velocitator.rb', line 11 def gem_name @gem_name end |
#max_value ⇒ Object
modifiers on the end result image being rendered.
14 15 16 |
# File 'lib/gem_velocity/velocitator.rb', line 14 def max_value @max_value end |
#min_value ⇒ Object
modifiers on the end result image being rendered.
14 15 16 |
# File 'lib/gem_velocity/velocitator.rb', line 14 def min_value @min_value end |
#root ⇒ Object
modifiers on the end result image being rendered.
14 15 16 |
# File 'lib/gem_velocity/velocitator.rb', line 14 def root @root end |
#versions ⇒ Object
Returns the value of attribute versions.
11 12 13 |
# File 'lib/gem_velocity/velocitator.rb', line 11 def versions @versions end |
Instance Method Details
#default_max_value ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/gem_velocity/velocitator.rb', line 99 def default_max_value totals = [] versions.each {|v| totals << gem_data.downloads_day(v).map {|day,total| total} } totals.flatten.compact.max end |
#default_min_value ⇒ Object
95 96 97 |
# File 'lib/gem_velocity/velocitator.rb', line 95 def default_min_value 0 end |
#effective_date_range ⇒ Object
46 47 48 49 50 51 52 53 |
# File 'lib/gem_velocity/velocitator.rb', line 46 def effective_date_range # we allow overwriting by passing a date range. if @date_range.is_a?(Array) && @date_range.compact.size==2 @date_range else default_date_range end end |
#graph(root_arg = nil, range = nil, min = nil, max = nil) ⇒ Object
74 75 76 77 78 79 80 81 |
# File 'lib/gem_velocity/velocitator.rb', line 74 def graph(root_arg = nil, range = nil, min = nil, max = nil) # if nil, defaults will be used self.date_range = range self.root = root_arg self.max_value = max self.min_value = min gruff_builder.write end |
#gruff_builder ⇒ Object
call, after you set all the attributes you want. you can set (or there will be fallback defaults)
max, min date_range (leave nil for default values in either start or end)
60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/gem_velocity/velocitator.rb', line 60 def gruff_builder opts = { :title => "#{gem_name}-#{versions.join("-")}", # just the first and last dates. give a small offset so it fits into the pciture. # line_datas.first.size -2 should be the max of any one of the line-datas, all should be same size. :labels => ({1 => time_format_str_small(effective_start_time), (line_datas.first.size-2) => time_format_str_small(effective_end_time) }), :max_value => max_value || default_max_value, :min_value => min_value || default_min_value, :line_datas => line_datas } builder = GruffBuilder.new(@root || Dir.pwd,nil,versions,gem_name,opts) builder end |
#line_datas ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/gem_velocity/velocitator.rb', line 33 def line_datas versions.map do |v| specific_days_in_range.map do |day_in_range| day_in_range = time_format_str_small(day_in_range) #conform to rubygems api format if gem_data.downloads_day(v).map {|day,total| day}.include?(day_in_range) total = Hash[gem_data.downloads_day(v)][day_in_range] else 0 end end end end |
#specific_days_in_range ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/gem_velocity/velocitator.rb', line 83 def specific_days_in_range all_days = [] s = Date.parse(effective_start_time) e = Date.parse(effective_end_time) i = s while (i <= e ) all_days << i i += 1.day end all_days end |