class Rake::Delphi::GitChangelog
Attributes
changelog[R]
opts[R]
processed[R]
Public Class Methods
new(task, opts) { |self| ... }
click to toggle source
Calls superclass method
Rake::Delphi::BasicTask::new
# File lib/rake/common/git.rb, line 34 def initialize(task, opts) super(task) @opts = {:filter => '.', :format => '%B'} @opts.merge!(opts) if opts.kind_of?(Hash) @changelog = @processed = [] get_changelog yield self if block_given? end
Public Instance Methods
changelog_string()
click to toggle source
# File lib/rake/common/git.rb, line 47 def changelog_string @changelog.join("\n") end
processed_string()
click to toggle source
# File lib/rake/common/git.rb, line 43 def processed_string @processed.join("\n") end
Private Instance Methods
charset()
click to toggle source
# File lib/rake/common/git.rb, line 78 def charset opts[:logoutputencoding] end
do_filter()
click to toggle source
# File lib/rake/common/git.rb, line 82 def do_filter @filter = Regexp.new(@opts[:filter]) @changelog.delete_if { |line| ! @filter.match(line) } end
do_process()
click to toggle source
# File lib/rake/common/git.rb, line 87 def do_process @processed = [] return unless @opts[:process] && @opts[:process].size > 0 @processed = @changelog.map do |line| line = line.dup process = @opts[:process] process = [process] unless process.kind_of?(Array) process.each do |filters| raise "`%s` must be a Hash" % [filters] unless filters.kind_of?(Hash) filters.each do |filter, subst| line.gsub!(filter, subst) end end line end end
get_changelog()
click to toggle source
# File lib/rake/common/git.rb, line 52 def get_changelog cmd = ['git'] cmd << "-c i18n.logOutputEncoding=#{opts[:logoutputencoding]}" if opts[:logoutputencoding] # if :since is not set, do not use range rev = (opts[:since].to_s.empty? ? '' : "#{opts[:since]}..") + 'HEAD' cmd << 'log' << "--format=#{opts[:format]}" << rev Logger.trace(Logger::VERBOSE, cmd) @changelog=%x[#{cmd.join(' ')}].lines.to_a @changelog.map! do |line| line.chomp! if line.respond_to?(:force_encoding) \ && opts[:logoutputencoding] line.force_encoding(opts[:logoutputencoding]) end line end # delete empty lines @changelog.delete_if { |line| line.chomp.empty? } # unique lines only @changelog.uniq! do_filter do_process Logger.trace(Logger::TRACE, @changelog) end