Sha256: f5295a43eb39e4f2bfdc7686310135ec466be533af373ae96f2f99b0f59b6b53

Contents?: true

Size: 1014 Bytes

Versions: 1

Compression:

Stored size: 1014 Bytes

Contents

class ReleaseChange
  include ActiveModel::Validations  
  
  validates :description, :length => 1...255
  # validates :tag_slug, :in => 
  
  ENCODING_PATTERN = /^\[([^\]]*)\] (.*)$/.freeze
  
  def initialize(release, tag_slug, description)
    @release = release
    @tag_slug = tag_slug
    @description = description[/^.*$/]
  end
  
  attr_reader :release, :tag_slug, :description
  
  class << self
    
    def from_s(release, string)
      new release, *(string.match(ENCODING_PATTERN)[1..2])
    end
    
    def from_commit(release, commit)
      message = commit.clean_message[0..255]
      message[0] = message[0].upcase if message[0]
      tag = Houston.config.fetch_tag(commit.tags.first)
      new release, tag.slug, message
    end
    
  end
  
  def to_s
    "[#{tag_slug}] #{description}"
  end
  
  def tag
    Houston.config.fetch_tag(tag_slug)
  end
  
  
  
  def id
    hash
  end
  
  def marked_for_destruction?
    false
  end
  
  def _destroy
    marked_for_destruction?
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
houston-core-0.5.0.beta1 app/models/release_change.rb