-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.message.util;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- */\r
-public final class TagUtil {\r
-\r
- /**\r
- * No operation, does nothing. Just a convenience for replacing a tag with\r
- * no tag in code.\r
- * \r
- * @param text the input\r
- * @return the specified input text\r
- */\r
- public static String nop(String text) {\r
- return text;\r
- }\r
-\r
- public static String tag(String s, String tag) {\r
- if (tag == null)\r
- return s;\r
-\r
- StringBuilder b = new StringBuilder(s.length() + tag.length()*2 + 6);\r
- b.append('<');\r
- b.append(tag);\r
- b.append('>');\r
- b.append(s);\r
- b.append("</");\r
- b.append(tag);\r
- b.append('>');\r
- return b.toString();\r
- }\r
- \r
- /**\r
- * @param s\r
- * @param tag\r
- * @param attrs attribute+value pairs \r
- * @return\r
- */\r
- public static String tag(String s, String tag, String...attrs) {\r
- assert (attrs.length % 2 == 0);\r
- StringBuilder b = new StringBuilder(s.length() + tag.length()*2 + 30);\r
- b.append('<');\r
- b.append(tag);\r
- for (int i = 0; i < attrs.length; i+=2) {\r
- b.append(' ');\r
- b.append(attrs[i]);\r
- b.append("=\"");\r
- b.append(attrs[i+1]);\r
- b.append('"');\r
- }\r
- b.append('>');\r
- b.append(s);\r
- b.append("</");\r
- b.append(tag);\r
- b.append('>');\r
- return b.toString();\r
- }\r
-\r
- // NEVER MIND THESE\r
-\r
- private static boolean isEnclosed(String s, String tag) {\r
- String trim = s.trim();\r
- int tagLen = tag.length();\r
- int len = trim.length();\r
- boolean startTag = (len >= tag.length() + 2) && (trim.charAt(0) == '<') && trim.startsWith(tag, 1) && (trim.charAt(1+tagLen) == '>');\r
- boolean endTag = (len >= tag.length()*2 + 5) && trim.startsWith("</", len - 1 - tagLen - 2) && trim.startsWith(tag, 1) && (trim.charAt(len - 1) == '>');\r
- return startTag && endTag;\r
- }\r
-\r
- public static void main(String[] args) {\r
- assertTrue(isEnclosed("form", "form") == false);\r
- assertTrue(isEnclosed("<form></form>", "form") == true);\r
- assertTrue(isEnclosed("<form> </form>", "form") == true);\r
- assertTrue(isEnclosed(" <form></form>", "form") == true);\r
- assertTrue(isEnclosed("<form></form> ", "form") == true);\r
- assertTrue(isEnclosed(" <form></form> ", "form") == true);\r
- assertTrue(isEnclosed("<form>FOO</form>", "form") == true);\r
- assertTrue(isEnclosed("<form> FOO </form>", "form") == true);\r
- }\r
-\r
- private static void assertTrue(boolean b) {\r
- if (b == false)\r
- throw new AssertionError(false);\r
- }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.message.util;
+
+/**
+ * @author Tuukka Lehtonen
+ */
+public final class TagUtil {
+
+ /**
+ * No operation, does nothing. Just a convenience for replacing a tag with
+ * no tag in code.
+ *
+ * @param text the input
+ * @return the specified input text
+ */
+ public static String nop(String text) {
+ return text;
+ }
+
+ public static String tag(String s, String tag) {
+ if (tag == null)
+ return s;
+
+ StringBuilder b = new StringBuilder(s.length() + tag.length()*2 + 6);
+ b.append('<');
+ b.append(tag);
+ b.append('>');
+ b.append(s);
+ b.append("</");
+ b.append(tag);
+ b.append('>');
+ return b.toString();
+ }
+
+ /**
+ * @param s
+ * @param tag
+ * @param attrs attribute+value pairs
+ * @return
+ */
+ public static String tag(String s, String tag, String...attrs) {
+ assert (attrs.length % 2 == 0);
+ StringBuilder b = new StringBuilder(s.length() + tag.length()*2 + 30);
+ b.append('<');
+ b.append(tag);
+ for (int i = 0; i < attrs.length; i+=2) {
+ b.append(' ');
+ b.append(attrs[i]);
+ b.append("=\"");
+ b.append(attrs[i+1]);
+ b.append('"');
+ }
+ b.append('>');
+ b.append(s);
+ b.append("</");
+ b.append(tag);
+ b.append('>');
+ return b.toString();
+ }
+
+ // NEVER MIND THESE
+
+ private static boolean isEnclosed(String s, String tag) {
+ String trim = s.trim();
+ int tagLen = tag.length();
+ int len = trim.length();
+ boolean startTag = (len >= tag.length() + 2) && (trim.charAt(0) == '<') && trim.startsWith(tag, 1) && (trim.charAt(1+tagLen) == '>');
+ boolean endTag = (len >= tag.length()*2 + 5) && trim.startsWith("</", len - 1 - tagLen - 2) && trim.startsWith(tag, 1) && (trim.charAt(len - 1) == '>');
+ return startTag && endTag;
+ }
+
+ public static void main(String[] args) {
+ assertTrue(isEnclosed("form", "form") == false);
+ assertTrue(isEnclosed("<form></form>", "form") == true);
+ assertTrue(isEnclosed("<form> </form>", "form") == true);
+ assertTrue(isEnclosed(" <form></form>", "form") == true);
+ assertTrue(isEnclosed("<form></form> ", "form") == true);
+ assertTrue(isEnclosed(" <form></form> ", "form") == true);
+ assertTrue(isEnclosed("<form>FOO</form>", "form") == true);
+ assertTrue(isEnclosed("<form> FOO </form>", "form") == true);
+ }
+
+ private static void assertTrue(boolean b) {
+ if (b == false)
+ throw new AssertionError(false);
+ }
+
+}