Class: VersionInfo::Data
- Inherits:
-
OpenStruct
- Object
- OpenStruct
- VersionInfo::Data
- Defined in:
- lib/version_info/data.rb
Instance Method Summary collapse
- #assign(hash) ⇒ Object
- #bump(key) ⇒ Object
- #file_name ⇒ Object
- #file_name=(value) ⇒ Object
- #get_defaults ⇒ Object
-
#initialize ⇒ Data
constructor
A new instance of Data.
- #load ⇒ Object
- #reset ⇒ Object
- #save ⇒ Object
- #set_version_info(tag_str) ⇒ Object
- #tag ⇒ Object
- #tag_format ⇒ Object
- #tag_format=(value) ⇒ Object
- #to_hash ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize ⇒ Data
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_name ⇒ Object
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_defaults ⇒ Object
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 |
#load ⇒ Object
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 |
#reset ⇒ Object
33 34 35 |
# File 'lib/version_info/data.rb', line 33 def reset assign(get_defaults) end |
#save ⇒ Object
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 |
#tag ⇒ Object
68 69 70 |
# File 'lib/version_info/data.rb', line 68 def tag tag_format % to_hash end |
#tag_format ⇒ Object
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_hash ⇒ Object
64 65 66 |
# File 'lib/version_info/data.rb', line 64 def to_hash marshal_dump end |
#to_s ⇒ Object
60 61 62 |
# File 'lib/version_info/data.rb', line 60 def to_s tag end |