Class: VersionInfo::Data

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/version_info/data.rb

Instance Method Summary collapse

Constructor Details

#initializeData

Returns a new instance of Data.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/version_info/data.rb', line 7

def initialize
  super
  case VersionInfo.file_format.to_s
    when 'text'
      require 'version_info/text_storage'
      extend(TextStorage)
    when 'yaml' 
      require 'version_info/yaml_storage'
      extend(YamlStorage)
    else # asume 'module'
      require 'version_info/module_storage'
      extend(ModuleStorage)          
  end
  reset
  self.file_name = nil
end

Instance Method Details

#assign(hash) ⇒ Object



37
38
39
# File 'lib/version_info/data.rb', line 37

def assign(hash)
  marshal_load(hash)    
end

#bump(key) ⇒ Object



41
42
43
44
45
46
47
48
# File 'lib/version_info/data.rb', line 41

def bump(key)
  idx = VersionInfo.segments.index(key.to_sym) + 1
  return unless idx
  VersionInfo.segments[idx..-1].each do |sgm| 
   send("#{sgm}=", 0) if send(sgm)
  end
  send("#{key}=", 1 + send(key).to_i)
end

#file_nameObject



24
25
26
# File 'lib/version_info/data.rb', line 24

def file_name
  @file_name ||= Dir.pwd + '/' + default_file_name
end

#file_name=(value) ⇒ Object



28
29
30
31
# File 'lib/version_info/data.rb', line 28

def file_name=(value)
  @file_name = value
  load if self.file_name && File.exist?(self.file_name)
end

#get_defaultsObject



85
86
87
# File 'lib/version_info/data.rb', line 85

def get_defaults
  VersionInfo.segments[0..2].inject({}){|h, k| h[k] = 0; h}
end

#loadObject



50
51
52
53
# File 'lib/version_info/data.rb', line 50

def load
  File.open(file_name, 'r') {|io| load_from(io)}
	  self
end

#resetObject



33
34
35
# File 'lib/version_info/data.rb', line 33

def reset
  assign(get_defaults)
end

#saveObject



55
56
57
58
# File 'lib/version_info/data.rb', line 55

def save      
	  File.open(file_name, 'w' ) {|out| save_to(out)}
	  self
end

#set_version_info(tag_str) ⇒ Object



80
81
82
83
# File 'lib/version_info/data.rb', line 80

def set_version_info(tag_str)
  values = tag_str.to_s.split('.')
  VersionInfo.segments.each{|sgm|	self.send("#{sgm}=", values.shift.match(/(\d+)/).to_s.to_i) }
end

#tagObject



68
69
70
# File 'lib/version_info/data.rb', line 68

def tag
  tag_format % to_hash
end

#tag_formatObject



72
73
74
# File 'lib/version_info/data.rb', line 72

def tag_format
 @tag_format ||= VersionInfo.segments.map { |k| "%<#{k}>d"}.join('.')
end

#tag_format=(value) ⇒ Object



76
77
78
# File 'lib/version_info/data.rb', line 76

def tag_format=(value)
 @tag_format = value
end

#to_hashObject



64
65
66
# File 'lib/version_info/data.rb', line 64

def to_hash
  marshal_dump
end

#to_sObject



60
61
62
# File 'lib/version_info/data.rb', line 60

def to_s
  tag
end