class GitReporting::MessageParser

Attributes

input[R]
regexp[R]

Public Class Methods

new(input) click to toggle source
# File lib/git_reporting/message_parser.rb, line 11
def initialize(input)
  @input = input.to_s
  prefix = GitReporting.configuration.prefix
  @regexp = /\[\s*#{prefix && prefix + "\s*"}\s*(\d[^\[\]]*)\]/m
end
parse(*args) click to toggle source
# File lib/git_reporting/message_parser.rb, line 7
def self.parse(*args)
  new(*args).parse
end

Public Instance Methods

parse() click to toggle source
# File lib/git_reporting/message_parser.rb, line 17
def parse
  message = parse_message
  time = parse_time
  [message, time]
end

Private Instance Methods

parse_message() click to toggle source
# File lib/git_reporting/message_parser.rb, line 25
def parse_message
  input.gsub(regexp, "").strip
end
parse_time() click to toggle source
# File lib/git_reporting/message_parser.rb, line 29
def parse_time
  times = input.scan(regexp)
  time = if times[0]
    times[0][0] # we want to take only first time marker
  else
    nil
  end
  return nil unless time.present?

  time = "#{time}:00" if time =~ /^\d{1,2}:\d{1,2}$/

  ChronicDuration.parse(time, keep_zero: true)
end