예제 #1
0
    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);
    }
예제 #2
0
    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);
    }
예제 #3
0
    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);
    }