class Natas
OverTheWire wargame Natas
Constants
- MAXLEVEL
Attributes
level[RW]
levels[RW]
Public Class Methods
new(shell)
click to toggle source
# File lib/natas.rb, line 16 def initialize(shell) @shell = shell @level = nil @levels = [] ObjectSpace.each_object(Class).select { |c| c < NatasLevelBase }.each { |c| @levels << c.new(@shell) } @levels.sort! { |a, b| a.level <=> b.level } end
Public Instance Methods
exec()
click to toggle source
# File lib/natas.rb, line 24 def exec level = @levels.detect { |l| l.level == @level } raise StandardError, "Level #{@level} not implemented" if level.nil? raise StandardError, "Level #{@level} has no password" if level.password.nil? password = level.exec level = @levels.detect { |l| l.level == @level + 1 } return if level.nil? level.password = password end
to_yaml()
click to toggle source
# File lib/natas.rb, line 37 def to_yaml data = {} @levels.each do |level| data[level.level] = level.password end YAML.dump(data) end