Exemple #1
0
    public UniWebViewGradleNode TryGetNode(string path)
    {
        string[]             subpath = path.Split('/');
        UniWebViewGradleNode cnode   = this;

        for (int i = 0; i < subpath.Length; i++)
        {
            var p = subpath[i];
            if (string.IsNullOrEmpty(p))
            {
                continue;
            }
            UniWebViewGradleNode tnode = cnode.FindChildNodeByName(p);
            if (tnode == null)
            {
                Debug.Log("Can't find Node:" + p);
                return(null);
            }

            cnode = tnode;
            tnode = null;
        }

        return(cnode);
    }
Exemple #2
0
    private void printNode(StringBuilder stringBuilder, UniWebViewGradleNode node, int level)
    {
        if (node.PARENT != null)
        {
            if (node is UniWebViewGradleCommentNode)
            {
                stringBuilder.Append("\n" + GetLevelIndent(level) + @"//" + node.NAME);
            }
            else
            {
                stringBuilder.Append("\n" + GetLevelIndent(level) + node.NAME);
            }
        }

        if (!(node is UniWebViewGradleContentNode) && !(node is UniWebViewGradleCommentNode))
        {
            if (node.PARENT != null)
            {
                stringBuilder.Append(" {");
            }
            foreach (var c in node.CHILDREN)
            {
                printNode(stringBuilder, c, level + 1);
            }
            if (node.PARENT != null)
            {
                stringBuilder.Append("\n" + GetLevelIndent(level) + "}");
            }
        }
    }
Exemple #3
0
 public void AppendChildNode(UniWebViewGradleNode node)
 {
     if (m_children == null)
     {
         m_children = new List <UniWebViewGradleNode>();
     }
     m_children.Add(node);
     node.m_parent = this;
 }
Exemple #4
0
    private void PatchBuildGradle(string root)
    {
        var gradleFilePath = GetGradleFilePath(root);
        var config         = new UniWebViewGradleConfig(gradleFilePath);

        var kotlinPrefix  = "implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:";
        var kotlinVersion = "1.4.10'";

        var browserPrefix  = "implementation 'androidx.browser:browser:";
        var browserVersion = "1.2.0'";

        var settings = UniWebViewEditorSettings.GetOrCreateSettings();

        var dependenciesNode = config.ROOT.FindChildNodeByName("dependencies");

        if (dependenciesNode != null)
        {
            // Add kotlin
            if (settings.addsKotlin)
            {
                dependenciesNode.ReplaceContenOrAddStartsWith(kotlinPrefix, kotlinPrefix + kotlinVersion);
                Debug.Log("<UniWebView> Updated Kotlin dependency in build.gradle.");
            }

            // Add browser package
            if (settings.addsAndroidBrowser)
            {
                dependenciesNode.ReplaceContenOrAddStartsWith(browserPrefix, browserPrefix + browserVersion);
                Debug.Log("<UniWebView> Updated Browser dependency in build.gradle.");
            }
        }
        else
        {
            Debug.LogError("UniWebViewPostBuildProcessor didn't find the `dependencies` field in build.gradle.");
            Debug.LogError("Although we can continue to add a `dependencies`, make sure you have setup Gradle and the template correctly.");

            var newNode = new UniWebViewGradleNode("dependencies", config.ROOT);
            if (settings.addsKotlin)
            {
                newNode.AppendContentNode(kotlinPrefix + kotlinVersion);
            }
            if (settings.addsAndroidBrowser)
            {
                newNode.AppendContentNode(browserPrefix + browserVersion);
            }
            newNode.AppendContentNode("implementation(name: 'UniWebView', ext:'aar')");
            config.ROOT.AppendChildNode(newNode);
        }
        config.Save();
    }
Exemple #5
0
 public UniWebViewGradleCommentNode(String content, UniWebViewGradleNode parent) : base(content, parent)
 {
 }
Exemple #6
0
 public UniWebViewGradleNode(string name, UniWebViewGradleNode parent = null)
 {
     m_parent = parent;
     m_name   = name;
 }
Exemple #7
0
    public UniWebViewGradleConfig(string filePath)
    {
        string     file   = File.ReadAllText(filePath);
        TextReader reader = new StringReader(file);

        m_filePath = filePath;
        m_root     = new UniWebViewGradleNode("root");
        m_curNode  = m_root;

        StringBuilder str = new StringBuilder();

        while (reader.Peek() > 0)
        {
            char c = (char)reader.Read();
            switch (c)
            {
            case '/':
                if (reader.Peek() == '/')
                {
                    reader.Read();
                    string comment = reader.ReadLine();
                    m_curNode.AppendChildNode(new UniWebViewGradleCommentNode(comment, m_curNode));
                }
                else
                {
                    str.Append('/');
                }
                break;

            case '\n':
            {
                var strf = FormatStr(str);
                if (!string.IsNullOrEmpty(strf))
                {
                    m_curNode.AppendChildNode(new UniWebViewGradleContentNode(strf, m_curNode));
                }
            }
                str = new StringBuilder();
                break;

            case '\r':
                break;

            case '\t':
                break;

            case '{':
            {
                var n = FormatStr(str);
                if (!string.IsNullOrEmpty(n))
                {
                    UniWebViewGradleNode node = new UniWebViewGradleNode(n, m_curNode);
                    m_curNode.AppendChildNode(node);
                    m_curNode = node;
                }
            }
                str = new StringBuilder();
                break;

            case '}':
            {
                var strf = FormatStr(str);
                if (!string.IsNullOrEmpty(strf))
                {
                    m_curNode.AppendChildNode(new UniWebViewGradleContentNode(strf, m_curNode));
                }
                m_curNode = m_curNode.PARENT;
            }
                str = new StringBuilder();
                break;

            default:
                str.Append(c);
                break;
            }
        }

        //Debug.Log("Gradle parse done!");
    }
Exemple #8
0
    public UniWebViewGradleConfig(string filePath)
    {
        string     file   = File.ReadAllText(filePath);
        TextReader reader = new StringReader(file);

        m_filePath = filePath;
        m_root     = new UniWebViewGradleNode("root");
        m_curNode  = m_root;

        StringBuilder str           = new StringBuilder();
        bool          inDoubleQuote = false;
        bool          inSingleQuote = false;

        while (reader.Peek() > 0)
        {
            char c = (char)reader.Read();
            switch (c)
            {
            // case '/':
            //     if (reader.Peek() == '/')
            //     {
            //         reader.Read();
            //         string comment = reader.ReadLine();
            //         Debug.Log("Comment line: " + comment);
            //         m_curNode.AppendChildNode(new UniWebViewGradleCommentNode(comment, m_curNode));
            //     }
            //     else
            //     {
            //         str.Append('/');
            //     }
            //     break;
            case '\n':
            case '\r':
            {
                var strf = FormatStr(str);
                if (!string.IsNullOrEmpty(strf))
                {
                    m_curNode.AppendChildNode(new UniWebViewGradleContentNode(strf, m_curNode));
                }
            }
                str = new StringBuilder();
                break;

            case '\t':
            {
                var strf = FormatStr(str);
                if (!string.IsNullOrEmpty(strf))
                {
                    str.Append(" ");
                }
                break;
            }

            case '{':
            {
                if (inDoubleQuote || inSingleQuote)
                {
                    str.Append(c);
                    break;
                }
                var n = FormatStr(str);
                if (!string.IsNullOrEmpty(n))
                {
                    UniWebViewGradleNode node = new UniWebViewGradleNode(n, m_curNode);
                    m_curNode.AppendChildNode(node);
                    m_curNode = node;
                }
            }
                str = new StringBuilder();
                break;

            case '}':
            {
                if (inDoubleQuote || inSingleQuote)
                {
                    str.Append(c);
                    break;
                }
                var strf = FormatStr(str);
                if (!string.IsNullOrEmpty(strf))
                {
                    m_curNode.AppendChildNode(new UniWebViewGradleContentNode(strf, m_curNode));
                }
                m_curNode = m_curNode.PARENT;
            }
                str = new StringBuilder();
                break;

            case '\"':
                inDoubleQuote = !inDoubleQuote;
                str.Append(c);
                break;

            case '\'':
                inSingleQuote = !inSingleQuote;
                str.Append(c);
                break;

            default:
                str.Append(c);
                break;
            }
        }

        //Debug.Log("Gradle parse done!");
    }