Module: TrainSH::Mixin::Sessions
- Defined in:
- lib/trainsh/mixin/sessions.rb
Instance Method Summary collapse
- #current_session ⇒ Object
- #current_session_id ⇒ Object
- #session(session_id = current_session_id) ⇒ Object
-
#sessions ⇒ Object
?.
- #use_session(url) ⇒ Object
- #validate_session_id(session_id) ⇒ Object
Instance Method Details
#current_session ⇒ Object
37 38 39 |
# File 'lib/trainsh/mixin/sessions.rb', line 37 def current_session @sessions[current_session_id] end |
#current_session_id ⇒ Object
33 34 35 |
# File 'lib/trainsh/mixin/sessions.rb', line 33 def current_session_id @current_session_id ||= 0 end |
#session(session_id = current_session_id) ⇒ Object
22 23 24 25 26 |
# File 'lib/trainsh/mixin/sessions.rb', line 22 def session(session_id = current_session_id) id = validate_session_id(session_id) @sessions[id] if id end |
#sessions ⇒ Object
?
29 30 31 |
# File 'lib/trainsh/mixin/sessions.rb', line 29 def sessions (0..@sessions.count - 1).to_a end |
#use_session(url) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/trainsh/mixin/sessions.rb', line 6 def use_session(url) @sessions = [] if @sessions.nil? existing_id = @sessions.index { |session| session.url == url } if existing_id.nil? @current_session_id = @sessions.count @sessions << TrainSH::Session.new(url) else @current_session_id = existing_id end rescue Train::PluginLoadError say format('No Train plugin found for url %<url>s', url: url).red nil end |
#validate_session_id(session_id) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/trainsh/mixin/sessions.rb', line 41 def validate_session_id(session_id) unless session_id say 'Expecting valid session id, e.g. `!session 2`'.red return end unless session_id.to_s.match?(/^[0-9]+$/) say 'Expected session id to be numeric'.red return end if @sessions[session_id.to_i].nil? say 'Expecting valid session id, e.g. `!session 2`'.red say "\nActive sessions:" @sessions.each_with_index { |data, idx| say "[#{idx}] #{data.url}" } say return end session_id.to_i end |