using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace TweetDck.Core.Utils{
    static class CommandLineArgsParser{
        private static Regex splitRegex;

        private static Regex SplitRegex{
            get{
                return splitRegex ?? (splitRegex = new Regex(@"([^=\s]+(?:=(?:""[^""]*?""|[^ ]*))?)", RegexOptions.Compiled));
            }
        }

        public static int AddToDictionary(string args, IDictionary<string, string> dictionary){
            if (string.IsNullOrWhiteSpace(args)){
                return 0;
            }

            int count = 0;

            foreach(Match match in SplitRegex.Matches(args)){
                string matchValue = match.Value;

                int indexEquals = matchValue.IndexOf('=');
                string key, value;

                if (indexEquals == -1){
                    key = matchValue.TrimStart('-');
                    value = "1";
                }
                else{
                    key = matchValue.Substring(0, indexEquals).TrimStart('-');
                    value = matchValue.Substring(indexEquals+1).Trim('"');
                }

                if (key != string.Empty){
                    dictionary[key] = value;
                    ++count;
                }
            }

            return count;
        }
    }
}