Sha256: f2b461349c607d9f6477490732b1bf23ec80375b4818f2c192983fbd3170e5e2

Contents?: true

Size: 1.25 KB

Versions: 5

Compression:

Stored size: 1.25 KB

Contents

require 'yaml'
module Githug
  class Profile
    PROFILE_FILE = ".profile.yml"

    attr_accessor :settings

    class << self
      def load
        settings = {
          :level => nil,
          :current_attempts => 0,
          :current_levels => [],
          :completed_levels => [] 
        }

        settings.merge! YAML::load(File.open(PROFILE_FILE)) if File.exists?(PROFILE_FILE)

        self.new(settings)
      end
    end


    def method_missing(method, *args, &block)
      if method.to_s.end_with?("=")
        method = method.to_s.chop.to_sym
        return settings[method] = args[0] if settings.include?(method)
      end
      return(settings[method]) if settings.include?(method)
      super
    end

    def initialize(settings)
      @settings = settings
    end

    def save
      File.open(PROFILE_FILE, 'w') do |out|
        YAML.dump(settings, out)
      end
    end

    def level_bump
      levels = Level::LEVELS
      level_no = levels.index(settings[:level])

      settings[:completed_levels] << level

      settings[:current_levels] = levels

      settings[:current_attempts] = 0

      next_level = (levels - settings[:completed_levels]).first || levels.last

      settings[:level] = next_level
      save
      next_level
    end


  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
githug-0.1.4 lib/githug/profile.rb
githug-0.1.3 lib/githug/profile.rb
githug-0.1.2 lib/githug/profile.rb
githug-0.1.1 lib/githug/profile.rb
githug-0.1.0 lib/githug/profile.rb