Sha256: cade21a517647efe413913244873607705e56f35c19e98d4b59b883e4a01b2a7
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
require 'ostruct' module VersionInfo class Data < OpenStruct 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 def file_name @file_name ||= Dir.pwd + '/' + default_file_name end def file_name=(value) @file_name = value load if self.file_name && File.exist?(self.file_name) end def reset assign(get_defaults) end def assign(hash) marshal_load(hash) end 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 def load File.open(file_name, 'r') {|io| load_from(io)} self end def save File.open(file_name, 'w' ) {|out| save_to(out)} self end def to_s tag end def to_hash marshal_dump end def tag tag_format % to_hash end def tag_format @tag_format ||= VersionInfo.segments.map { |k| "%<#{k}>d"}.join('.') end def tag_format=(value) @tag_format = value end 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 def get_defaults VersionInfo.segments[0..2].inject({}){|h, k| h[k] = 0; h} end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
version_info-1.7.7 | lib/version_info/data.rb |
version_info-1.7.6 | lib/version_info/data.rb |
version_info-1.7.5 | lib/version_info/data.rb |