Class: Configural::Config::FileBase

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/configural/config/file_base.rb

Overview

Base class for abstracting configuration file access. You shouldn’t use this class directly. Use one of the subclasses (e.g. YAMLFile) instead.

Direct Known Subclasses

JSONFile, PlistFile, SDLFile, YAMLFile

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, options) ⇒ FileBase

Returns a new instance of FileBase.



72
73
74
75
76
77
78
# File 'lib/configural/config/file_base.rb', line 72

def initialize( path, options )
  @path = path
  @options = options
  @data = {}
  @loaded = false
  load unless @options[:lazy_loading]
end

Instance Attribute Details

#pathObject (readonly)

Returns the value of attribute path.



70
71
72
# File 'lib/configural/config/file_base.rb', line 70

def path
  @path
end

Class Method Details

.extnamesObject



62
63
64
# File 'lib/configural/config/file_base.rb', line 62

def self.extnames
  raise 'Method not implemented for base class.'
end

.formatObject



58
59
60
# File 'lib/configural/config/file_base.rb', line 58

def self.format
  raise 'Method not implemented for base class.'
end

.get_format_by_extname(extname) ⇒ Object



51
52
53
54
55
# File 'lib/configural/config/file_base.rb', line 51

def self.get_format_by_extname( extname )
  @subclasses.reverse.find { |subclass|
    subclass.extnames.include?(extname)
  } or raise "Unrecognized file extension: #{extname}"
end

.get_format_by_name(format) ⇒ Object



45
46
47
48
49
# File 'lib/configural/config/file_base.rb', line 45

def self.get_format_by_name( format )
  @subclasses.reverse.find { |subclass|
    subclass.format == format
  } or raise "Unrecognized file format: #{format}"
end

.inherited(subclass) ⇒ Object



39
40
41
42
# File 'lib/configural/config/file_base.rb', line 39

def self.inherited(subclass)
  @subclasses ||= []
  @subclasses << subclass
end

Instance Method Details

#[](key) ⇒ Object



113
114
115
116
# File 'lib/configural/config/file_base.rb', line 113

def [](key)
  load unless @loaded
  @data[key.to_s]
end

#[]=(key, value) ⇒ Object



118
119
120
121
# File 'lib/configural/config/file_base.rb', line 118

def []=(key, value)
  load unless @loaded
  @data[key.to_s] = value
end

#clearObject



81
82
83
84
85
# File 'lib/configural/config/file_base.rb', line 81

def clear
  @data = {}
  @loaded = true
  self
end

#closeObject



87
88
89
90
91
# File 'lib/configural/config/file_base.rb', line 87

def close
  @data = {}
  @loaded = false
  self
end

#deleteObject



93
94
95
96
# File 'lib/configural/config/file_base.rb', line 93

def delete
  File.rm(path, :force => true)
  self
end

#each(&block) ⇒ Object



103
104
105
106
# File 'lib/configural/config/file_base.rb', line 103

def each(&block)
  load unless @loaded
  @data.each(&block)
end

#exists?Boolean Also known as: exist?

Returns:

  • (Boolean)


98
99
100
# File 'lib/configural/config/file_base.rb', line 98

def exists?
  File.exists?(path)
end

#keysObject



108
109
110
111
# File 'lib/configural/config/file_base.rb', line 108

def keys
  load unless @loaded
  @data.keys
end

#loadObject



128
129
130
131
# File 'lib/configural/config/file_base.rb', line 128

def load
  load! unless @loaded
  self
end

#load!Object



133
134
135
136
137
# File 'lib/configural/config/file_base.rb', line 133

def load!
  _load
  @loaded = true
  self
end

#saveObject



139
140
141
142
# File 'lib/configural/config/file_base.rb', line 139

def save
  _save unless not @loaded
  self
end

#save!Object



144
145
146
147
# File 'lib/configural/config/file_base.rb', line 144

def save!
  _save
  self
end

#to_hashObject



123
124
125
126
# File 'lib/configural/config/file_base.rb', line 123

def to_hash
  load unless @loaded
  @data.dup
end