class Learn::TeamMembers::Parser

Attributes

full_args[R]
members_list[RW]

Public Class Methods

new(full_args) click to toggle source
# File lib/learn/team_members/parser.rb, line 7
def initialize(full_args)
  @full_args = full_args
end

Public Instance Methods

execute() click to toggle source
# File lib/learn/team_members/parser.rb, line 11
def execute
  parse_full_args
  sanitize_members
  return_message
end

Private Instance Methods

every_member_starts_with_at_symbol?() click to toggle source
# File lib/learn/team_members/parser.rb, line 58
def every_member_starts_with_at_symbol?
  members_list.all? {|m| m.start_with?('@')}
end
parse_full_args() click to toggle source
# File lib/learn/team_members/parser.rb, line 19
def parse_full_args
  index = (full_args.index('-t') || full_args.index('--t') || full_args.index('--team') || full_args.index('-team')) + 1
  message_index = full_args.index('-m') || full_args.index('--message')

  self.members_list = if !message_index || (message_index && (index > message_index))
    full_args[index..-1]
  else
    full_args[index...message_index]
  end
end
prepend_at_symbols!() click to toggle source
# File lib/learn/team_members/parser.rb, line 62
def prepend_at_symbols!
  members_list.each {|m| m.prepend('@') if !m.start_with?('@')}
end
remove_trailing_commas!() click to toggle source
# File lib/learn/team_members/parser.rb, line 54
def remove_trailing_commas!
  members_list.map! {|m| m.chomp(',').strip}
end
return_message() click to toggle source
# File lib/learn/team_members/parser.rb, line 66
def return_message
  "team: #{self.members_list.join(' ')}"
end
sanitize_members() click to toggle source
# File lib/learn/team_members/parser.rb, line 30
def sanitize_members
  remove_trailing_commas!

  if members_list.any? {|m| m.include?(',')}
    split_members_list!
  end

  if !every_member_starts_with_at_symbol?
    prepend_at_symbols!
  end
end
split_members_list!() click to toggle source
# File lib/learn/team_members/parser.rb, line 42
def split_members_list!
  members_list.map! do |m|
    if m.include?(',')
      m.split(',')
    else
      m
    end
  end

  members_list.flatten!
end