./lib/wwdc/helpers.rb in wwdc-0.0.2 vs ./lib/wwdc/helpers.rb in wwdc-1.0.0
- old
+ new
@@ -1,25 +1,51 @@
require 'excon'
require 'json'
+require 'rubygems/text'
module WWDC
+ YEARS = (2010..2014)
+
module Helpers
+ include Gem::Text
+
def get(options = {}, &block)
response = client.get(options)
say_error "Error #{response.status}" and abort unless response.status == 200
yield response if block_given?
JSON.parse(response.body)
end
- def describe(session)
- puts %{\033[1m#{session['number']}: "#{session['title']}"\033[0m}
- puts session['description']
- puts
+ def describe(*sessions)
+ enable_paging if sessions.length > 5
+
+ sessions.each do |session|
+ puts %{\033[1mWWDC #{session['year']}\033[0m}
+ puts %{\033[1mSession #{session['number']}: "#{session['title']}"\033[0m}
+ puts
+ puts format_text(session['description'], 80)
+ puts
+ end
end
private
+
+ def determine_session!(args = [], options = {})
+ @number = (Integer(args.first).nonzero? rescue nil)
+ say_error "Missing session number" and abort unless @number
+ end
+
+ def determine_year!(args = [], options = {})
+ @year = (Integer(options.year).nonzero? rescue nil) || YEARS.last
+ say_error "Invalid year: #{@year}" and abort unless YEARS.include?(@year)
+ end
+
+ def determine_query!(args = [], options = {})
+ @query = args.join(" ")
+ say_error "Missing query" and abort if @query.empty?
+ end
def client
@client ||= Excon.new('http://asciiwwdc.com', headers: {'Accept' => "application/json"})
end
end