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); }
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) + "}"); } } }
public void AppendChildNode(UniWebViewGradleNode node) { if (m_children == null) { m_children = new List <UniWebViewGradleNode>(); } m_children.Add(node); node.m_parent = this; }
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(); }
public UniWebViewGradleCommentNode(String content, UniWebViewGradleNode parent) : base(content, parent) { }
public UniWebViewGradleNode(string name, UniWebViewGradleNode parent = null) { m_parent = parent; m_name = name; }
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!"); }
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!"); }