Sha256: 647b42fa795e38668e0d6544a90339359026aa980f526e288343e4a711a12bef

Contents?: true

Size: 1.63 KB

Versions: 49

Compression:

Stored size: 1.63 KB

Contents

module MetaProject
  class VersionParser
    def parse(changes_file, version)
      release_notes_first = nil
      changes_first = nil
      changes_last = nil
  
      lines = File.open(changes_file).readlines
      state = nil
      lines.each_with_index do |line, n|
        # parse state
        if (line =~ /^==/ && state == :in_release_notes && state != :done)
          changes_first = changes_last = n
          state = :done
        end
        if line =~ /#{version}/ && state.nil?
          state = :in_release_notes
          release_notes_first = n+1
        end
        if (line =~ /^\*/ && state == :in_release_notes)
          state = :in_changes
          changes_first = changes_last = n
        end
        if (line =~ /^\*/ && state == :in_changes)
          changes_last = n
        end
        if (line =~ /^==/ && state == :in_changes)
          state = :done
        end
      end
  
      release_notes = lines[release_notes_first..changes_first-1].join("")
      raise "Release notes for #{version} couldn't be parsed from #{changes_file}" if release_notes.strip == ""

      release_changes = lines[changes_first..changes_last].collect do |line| 
        line.length >= 2 ? line[2..-1].chomp : line
      end
      raise "Release changes for #{version} couldn't be parsed from #{changes_file}" if release_changes.length == 0

      Version.new(release_notes, release_changes)
    end
  end

  class Version
    attr_reader :release_notes # String
    attr_reader :release_changes # Array of String

    def initialize(release_notes, release_changes)
      @release_notes, @release_changes = release_notes, release_changes
    end
  end
end

Version data entries

49 entries across 49 versions & 3 rubygems

Version Path
redcar-dev-0.12.1dev-java lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-dev-0.12.0dev-java lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.11 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.11.0dev lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.10 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.9.2 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.9.1 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.9.0 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.8.1 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.8 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.7 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.6.1 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.6 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.6.1dev lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.5.1 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.5 lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.5.6dev lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.5.5dev lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.5.4dev lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb
redcar-0.5.3dev lib/openssl/mocha/vendor/meta_project-0.4.15/lib/meta_project/version_parser.rb