Module: TrainSH::Mixin::Sessions

Defined in:
lib/trainsh/mixin/sessions.rb

Instance Method Summary collapse

Instance Method Details

#current_sessionObject



35
36
37
# File 'lib/trainsh/mixin/sessions.rb', line 35

def current_session
  @sessions[current_session_id]
end

#current_session_idObject



31
32
33
# File 'lib/trainsh/mixin/sessions.rb', line 31

def current_session_id
  @current_session_id ||= 0
end

#session(session_id = current_session_id) ⇒ Object



22
23
24
# File 'lib/trainsh/mixin/sessions.rb', line 22

def session(session_id = current_session_id)
  @sessions[session_id]
end

#sessionsObject

?



27
28
29
# File 'lib/trainsh/mixin/sessions.rb', line 27

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



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/trainsh/mixin/sessions.rb', line 39

def validate_session_id(session_id)
  unless session_id.match?(/^[0-9]+$/)
    say 'Expected session id to be numeric'.red
    return
  end

  if @sessions[session_id.to_i].nil?
    say format('No session id [%s] found', session_id).red
    return
  end

  session_id.to_i
end