diff --git a/lib/github_changelog_generator.rb b/lib/github_changelog_generator.rb index ffbb86b..9bccf74 100755 --- a/lib/github_changelog_generator.rb +++ b/lib/github_changelog_generator.rb @@ -4,6 +4,7 @@ require 'github_api' require 'json' require 'colorize' require_relative 'github_changelog_generator/parser' +require_relative 'github_changelog_generator/generator' require_relative 'github_changelog_generator/version' module GitHubChangelogGenerator @@ -29,6 +30,8 @@ module GitHubChangelogGenerator @github = Github.new oauth_token: @github_token end + @generator = Generator.new(@options) + @all_tags = self.get_all_tags @pull_requests = self.get_all_closed_pull_requests if @options[:issues] @@ -139,7 +142,7 @@ module GitHubChangelogGenerator output_filename = "#{@options[:output]}" File.open(output_filename, 'w') { |file| file.write(log) } - puts "Done! Generated log placed in #{output_filename}" + puts "Done! Generated log placed in #{`pwd`.strip!}/#{output_filename}" end @@ -264,20 +267,11 @@ module GitHubChangelogGenerator if @options[:pulls] # Generate pull requests: - if pull_requests - if @options[:author] - pull_requests.each { |dict| - merge = "#{@options[:merge_prefix]}#{dict[:title]} [\\##{dict[:number]}](#{dict.html_url}) ([#{dict.user.login}](#{dict.user.html_url}))\n\n" - log += "- #{merge}" - } - else - pull_requests.each { |dict| - merge = "#{@options[:merge_prefix]}#{dict[:title]} [\\##{dict[:number]}](#{dict.html_url})\n\n" - log += "- #{merge}" - } - end + pull_requests.each { |pull_request| + merge = @generator.get_string_for_pull_request(pull_request) + log += "- #{merge}" - end + } if pull_requests end if @options[:issues] @@ -320,7 +314,9 @@ module GitHubChangelogGenerator intro = 'Implemented enhancement' end - merge = "*#{intro}:* #{dict[:title]} [\\##{dict[:number]}](#{dict.html_url})\n\n" + enc_string = @generator.encapsulate_string dict[:title] + + merge = "*#{intro}:* #{enc_string} [\\##{dict[:number]}](#{dict.html_url})\n\n" log += "- #{merge}" } end diff --git a/lib/github_changelog_generator/generator.rb b/lib/github_changelog_generator/generator.rb new file mode 100644 index 0000000..6918db8 --- /dev/null +++ b/lib/github_changelog_generator/generator.rb @@ -0,0 +1,34 @@ +module GitHubChangelogGenerator + class Generator + + def initialize(options = nil) + @options = options + end + + def get_string_for_pull_request(pull_request) + encapsulated_title = self.encapsulate_string pull_request[:title] + + merge = "#{@options[:merge_prefix]}#{encapsulated_title} [\\##{pull_request[:number]}](#{pull_request.html_url})" + if @options[:author] + merge += " ([#{pull_request.user.login}](#{pull_request.user.html_url}))\n\n" + else + merge += "\n\n" + end + merge + end + + def encapsulate_string(string) + + string.gsub! '\\', '\\\\' + + encpas_chars = %w(> * _ \( \) [ ]) + encpas_chars.each{ |char| + string.gsub! char, "\\#{char}" + } + + string + end + + end + +end \ No newline at end of file diff --git a/lib/github_changelog_generator/version.rb b/lib/github_changelog_generator/version.rb index 6bf3090..93de805 100644 --- a/lib/github_changelog_generator/version.rb +++ b/lib/github_changelog_generator/version.rb @@ -1,3 +1,3 @@ module GitHubChangelogGenerator - VERSION = '1.2.1' + VERSION = '1.2.2' end