/// <summary> /// /// </summary> /// <param name="script"></param> /// <param name="line"></param> /// <param name="overlay"></param> /// <param name="isTemplate"></param> /// <param name="parent"></param> /// <returns></returns> private bool ParseChildren(TextReader script, string line, Overlay overlay, bool isTemplate, OverlayElementContainer parent) { var ret = false; var skipParam = 0; var parms = line.Split(' ', '(', ')'); // split on lines with a ) will have an extra blank array element, so lets get rid of it if (parms[parms.Length - 1].Length == 0) { Array.Resize(ref parms, parms.Length - 1); } if (isTemplate) { // the first param = 'template' on a new child element if (parms[0] == "template") { skipParam++; } } // top level component cannot be an element, it must be a container unless it is a template if (parms[0 + skipParam] == "container" || (parms[0 + skipParam] == "element" && (isTemplate || parent != null))) { var templateName = ""; ret = true; // nested container/element if (parms.Length > 3 + skipParam) { if (parms.Length != 5 + skipParam) { LogManager.Instance.Write("Bad element/container line: {0} in {1} - {2}, expecting ':' templateName", line, parent.GetType().Name, parent.Name); ParseHelper.SkipToNextCloseBrace(script); return(ret); } if (parms[3 + skipParam] != ":") { LogManager.Instance.Write("Bad element/container line: {0} in {1} - {2}, expecting ':' for element inheritance.", line, parent.GetType().Name, parent.Name); ParseHelper.SkipToNextCloseBrace(script); return(ret); } // get the template name templateName = parms[4 + skipParam]; } else if (parms.Length != 3 + skipParam) { LogManager.Instance.Write("Bad element/container line: {0} in {1} - {2}, expecting 'element type(name)'.", line, parent.GetType().Name, parent.Name); ParseHelper.SkipToNextCloseBrace(script); return(ret); } ParseHelper.SkipToNextOpenBrace(script); var isContainer = (parms[0 + skipParam] == "container"); ParseNewElement(script, parms[1 + skipParam], parms[2 + skipParam], isContainer, overlay, isTemplate, templateName, parent); } return(ret); }