Example #1
0
 void Update()
 {
     if (directives.Count > 0) {
         if (current_directive == null) {
             current_directive = directives.OrderBy (i => i.Priority).First ();
             current_directive.Execute (this);
         } else if (current_directive.IsComplete (this)) {
             current_directive.Behavior.ConcludeDirective (current_directive);
             directives.Remove (current_directive);
             current_directive = null;
         }
     }
 }
        internal bool ProcessDirective(string line, StringBuilder output)
        {
            string directiveName;

            string[] arguments;
            if (this.ParseDirective(line, output, out directiveName, out arguments))
            {
                IDirective directive = this.directives.FirstOrDefault(d => String.Equals(d.Name, directiveName, StringComparison.OrdinalIgnoreCase));
                if (directive == null)
                {
                    output.AppendLine(Invariant($"Unknown directive type '{directiveName}'!"));
                    return(false);
                }

                return(directive.Execute(arguments, output));
            }

            return(false);
        }