Class: Railsquest::Quest

Inherits:
Object
  • Object
show all
Defined in:
lib/railsquest/quest.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Quest

Returns a new instance of Quest.

[View source]

22
23
24
# File 'lib/railsquest/quest.rb', line 22

def initialize(path)
  @path = Pathname(path)
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.


8
9
10
# File 'lib/railsquest/quest.rb', line 8

def name
  @name
end

#pathObject (readonly)

Returns the value of attribute path.


30
31
32
# File 'lib/railsquest/quest.rb', line 30

def path
  @path
end

#portObject

Returns the value of attribute port.


8
9
10
# File 'lib/railsquest/quest.rb', line 8

def port
  @port
end

#secretObject (readonly)

Returns the value of attribute secret.


9
10
11
# File 'lib/railsquest/quest.rb', line 9

def secret
  @secret
end

Class Method Details

.for_name(name) ⇒ Object

[View source]

11
12
13
14
15
16
# File 'lib/railsquest/quest.rb', line 11

def self.for_name(name)
    n = name.gsub(/[^A-Za-z-]+/, '_')
    q = new(Railsquest.quests_path.join(n + ".quest"))
    q.name = n
    q
end

.html_id(name) ⇒ Object

[View source]

18
19
20
# File 'lib/railsquest/quest.rb', line 18

def self.html_id(name)
  name.gsub(/[^A-Za-z-]+/, '').downcase
end

Instance Method Details

#==(other) ⇒ Object

[View source]

26
27
28
# File 'lib/railsquest/quest.rb', line 26

def ==(other)
  other.respond_to?(:path) && self.path == other.path
end

#attemptsObject

[View source]

70
71
72
# File 'lib/railsquest/quest.rb', line 70

def attempts
    
end

#dirnameObject

[View source]

58
59
60
# File 'lib/railsquest/quest.rb', line 58

def dirname
  path.split.last.to_s
end

#exist?Boolean

Returns:

  • (Boolean)
[View source]

32
33
34
# File 'lib/railsquest/quest.rb', line 32

def exist?
  path.exist?
end

#html_idObject

[View source]

54
55
56
# File 'lib/railsquest/quest.rb', line 54

def html_id
  self.class.html_id(name)
end

#init!Object

[View source]

36
37
38
39
40
# File 'lib/railsquest/quest.rb', line 36

def init!
  secret = `uuidgen`.strip
  contents =  '{\"secret\" : \"' + secret + '\", \"port\" : ' + port +  '}'
  Dir.chdir(Railsquest.quests_path) { `echo "#{contents}" >> #{path}` }
end

#remove!Object

[View source]

74
75
76
# File 'lib/railsquest/quest.rb', line 74

def remove!
  path.rmtree
end

#to_hashObject

[View source]

78
79
80
81
82
83
84
# File 'lib/railsquest/quest.rb', line 78

def to_hash
  {
    "name" => name,
    "uri" => uri,
    "host_name" => Railsquest.host_name
  }
end

#to_sObject

[View source]

62
63
64
# File 'lib/railsquest/quest.rb', line 62

def to_s
  name
end

#uriObject

[View source]

42
43
44
# File 'lib/railsquest/quest.rb', line 42

def uri
  Railsquest.quest_uri.gsub(/\/$/, '') + ':' + File.open(path) { |f| JSON.parse(f.gets)["port"].to_s }
end

#web_uriObject

[View source]

66
67
68
# File 'lib/railsquest/quest.rb', line 66

def web_uri
  Railsquest.web_uri + "#" + html_id
end