private IEnumerator CreateTagTree(string sampleHtml, Action <TagTree> onParsed, float width = 100) { ParsedTree parsedRoot = null; TagTree layoutedRoot = null; var cor = parser.ParseRoot( sampleHtml, parsed => { parsedRoot = parsed; } ); executor.Core.CoroutineExecutor(cor); yield return(WaitUntil( () => parsedRoot != null, () => { throw new TimeoutException("too late."); }, 1 )); if (parsedRoot.errors.Any()) { throw new Exception("failed to parse. error:" + parsedRoot.errors[0].reason); } var layoutMachine = new LayoutMachine( loader, new TMProPlugin() ); var loaderCor = layoutMachine.Layout( parsedRoot, new Vector2(width, 100), layoutedTree => { layoutedRoot = layoutedTree; } ); executor.Core.CoroutineExecutor(loaderCor); yield return(WaitUntil( () => layoutedRoot != null, () => { throw new TimeoutException("too late."); }, 5 )); onParsed(layoutedRoot); }
private IEnumerator CreateLayoutedTree(string sampleHtml, Action <TagTree> onLayouted, float width = 100) { ParsedTree parsedRoot = null; var cor = parser.ParseRoot( sampleHtml, parsed => { parsedRoot = parsed; } ); view.Core.Internal_CoroutineExecutor(cor); yield return(WaitUntil( () => parsedRoot != null, () => { throw new TimeoutException("too late."); }, 1 )); if (parsedRoot.errors.Any()) { foreach (var error in parsedRoot.errors) { Debug.LogError("error:" + error.code + " reason:" + error.reason); } throw new Exception("failed to create layouted tree."); } TagTree layouted = null; var layoutMachine = new LayoutMachine(core.resLoader, new TMProPlugin()); var cor2 = layoutMachine.Layout( parsedRoot, new Vector2(width, 100), layoutedTree => { layouted = layoutedTree; } ); view.Core.Internal_CoroutineExecutor(cor2); yield return(WaitUntil( () => layouted != null, () => { throw new TimeoutException("too late."); }, 5 )); onLayouted(layouted); }
private IEnumerator GetParsedRoot(string sampleHtml, Action <ParsedTree> ret) { ParsedTree parsedRoot = null; var cor = parser.ParseRoot( sampleHtml, parsed => { parsedRoot = parsed; } ); executor.Core.CoroutineExecutor(cor); yield return(WaitUntil( () => parsedRoot != null, () => { throw new TimeoutException("too late."); }, 1 )); ret(parsedRoot); }