Sha256: af7b191bf92c1aec796d50a822989c1b5757469f4473a64c31952913cc433312

Contents?: true

Size: 1.04 KB

Versions: 4

Compression:

Stored size: 1.04 KB

Contents

# frozen_string_literal: true

require "yaml"
require "fileutils"

module Vlcraptor
  class Preferences
    def initialize
      @path = "#{File.expand_path("~")}/.player"
      persist({ autoplay: true, crossfade: true }) unless File.exist?(@path)
    end

    def continue?
      self[:autoplay]
    end

    def crossfade?
      self[:autoplay] && self[:crossfade]
    end

    def scrobble?
      self[:scrobble]
    end

    def pause?
      reset(:pause)
    end

    def stop?
      reset(:stop)
    end

    def play?
      reset(:play)
    end

    def skip?
      reset(:skip)
    end

    def [](key)
      load_preferences[key]
    end

    def []=(key, value)
      preferences = load_preferences
      preferences[key] = value
      persist(preferences)
    end

    def persist(preferences)
      File.open(@path, "w") { |f| f.puts preferences.to_yaml }
    end

    private

    def load_preferences
      YAML.load_file(@path)
    end

    def reset(key)
      result = self[key]
      self[key] = false if result
      result
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vlcraptor-0.5.0 lib/vlcraptor/preferences.rb
vlcraptor-0.4.0 lib/vlcraptor/preferences.rb
vlcraptor-0.3.0 lib/vlcraptor/preferences.rb
vlcraptor-0.2.0 lib/vlcraptor/preferences.rb