Sha256: 2c833d15d9d75480e0a9e1cb05e3bd39b75b6cfb9d6f785d4fa15aaf988e4b13

Contents?: true

Size: 1.32 KB

Versions: 6

Compression:

Stored size: 1.32 KB

Contents

# encoding: UTF-8

require 'pp'
require 'yaml'
require_relative 'properties'

module Clerq

  class Settings
    extend Properties

    STORAGE = 'clerq.yml'.freeze

    # binary document settings that can be changed through 'clerq.yml'
    property :document, default: 'Clеrq SRS'
    property :template, default: 'default.md.erb'
    property :title, default: 'Clеrq SRS'

    # folders structure
    property :bin, default: 'bin'
    property :src, default: 'src'
    property :knb, default: 'knb'
    property :lib, default: 'lib'
    property :tt,  default: 'tt'
    property :assets, default: 'bin/assets'

    def folders
      [bin, src, knb, lib, tt, assets]
    end

    def initialize
      load
    end

    # TODO: load settings than can be changed by user
    def load
      return unless File.exist?(STORAGE)

      props = YAML.load(File.read(STORAGE))
      props.each{|k, v| instance_variable_set("@#{k}", v) }
    end

    # TODO: it saves only changed properties
    #       properties with default values won't be saved
    def save
      props = {}
      instance_variables.each{|v|
        # props[v.to_s[1..-1]] = instance_variable_get("#{v}")
        p = v.to_s[1..-1]
        props[p] = self.send(p)
      }
      File.write(STORAGE, YAML.dump(props))
    end
  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
clerq-0.3.4 lib/clerq/settings.rb
clerq-0.3.3 lib/clerq/settings.rb
clerq-0.3.2 lib/clerq/settings.rb
clerq-0.3.1 lib/clerq/settings.rb
clerq-0.3.0 lib/clerq/settings.rb
clerq-0.2.0 lib/clerq/settings.rb