Class: Vump::VersionModule::KeepAChangeLog

Inherits:
ReadWriteVersionModule show all
Defined in:
lib/vump/semver/module/keepachangelog.rb

Overview

[Keep a Changelog](keepachangelog.com/en/1.0.0/)

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ReadWriteVersionModule

#initialize, #read, #write

Constructor Details

This class inherits a constructor from Vump::ReadWriteVersionModule

Class Method Details

.nameObject



11
12
13
# File 'lib/vump/semver/module/keepachangelog.rb', line 11

def self.name
  'CHANGELOG.md'
end

Instance Method Details

#compose(new_version) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/vump/semver/module/keepachangelog.rb', line 27

def compose(new_version)
  content = Keepachangelog::MarkdownParser.parse(@read_contents)
  content = release_changelog(content, new_version)
  parser = Keepachangelog::Parser.new
  parser.parsed_content = content
  parser.to_md + "\n"
end

#pathObject



15
16
17
# File 'lib/vump/semver/module/keepachangelog.rb', line 15

def path
  @base + '/CHANGELOG.md'
end

#release_changelog(changelog, new_version) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/vump/semver/module/keepachangelog.rb', line 35

def release_changelog(changelog, new_version)
  versions = changelog['versions']
  # inherit all from unreleased
  versions[new_version] = versions['Unreleased']
                          .clone
  # update date
  versions[new_version]['date'] = Date.today.to_s
  # reset unreleased
  versions['Unreleased']['changes'] = {}
  changelog
end

#scrape(str) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/vump/semver/module/keepachangelog.rb', line 19

def scrape(str)
  Keepachangelog::MarkdownParser
    .parse(str)['versions']
    .keys
    .reject { |v| v == 'Unreleased' }
    .first
end