| 
									
										
										
										
											2014-03-05 20:12:51 -06:00
										 |  |  | require 'version' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PkgVersion < Version | 
					
						
							|  |  |  |   attr_reader :version, :revision | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   RX = /\A(.+?)(?:_(\d+))?\z/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def self.parse(path) | 
					
						
							|  |  |  |     _, version, revision = *path.match(RX) | 
					
						
							|  |  |  |     new(version, revision) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def initialize(version, revision) | 
					
						
							|  |  |  |     super(version) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if head? | 
					
						
							|  |  |  |       @revision = 0
 | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       @revision = revision.to_i | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def to_s | 
					
						
							|  |  |  |     if revision > 0
 | 
					
						
							|  |  |  |       "#{version}_#{revision}" | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       version | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  |   alias_method :to_str, :to_s | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def <=>(other) | 
					
						
							| 
									
										
										
										
											2014-07-03 16:32:12 -05:00
										 |  |  |     return unless Version === other | 
					
						
							| 
									
										
										
										
											2014-03-05 20:12:51 -06:00
										 |  |  |     super.nonzero? || revision <=> other.revision | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |