+ for (String nodeName : nodeNames) {
+ try {
+ final QName qName = Utils.qNameFromArgument(ctx, nodeName);
+ qNames.add(qName);
+ } catch (Exception e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ return qNames;
+ }
+
+ public static Iterable<QName> parseAugmentPath(StmtContext<?, ?, ?> ctx, String path) {
+
+ if (path.matches(REGEX_PATH_REL1) || path.matches(REGEX_PATH_REL2)) {
+ throw new IllegalArgumentException(
+ "An argument for augment can be only absolute path; or descendant if used in uses");
+ }
+
+ return parseXPath(ctx, path);
+ }
+
+ public static String stringFromStringContext(final YangStatementParser.ArgumentContext context) {
+ StringBuilder sb = new StringBuilder();
+ List<TerminalNode> strings = context.STRING();
+ if (strings.size() == 0) {
+ strings = Arrays.asList(context.IDENTIFIER());
+ }
+ for (TerminalNode stringNode : strings) {
+ final String str = stringNode.getText();
+ char firstChar = str.charAt(0);
+ final CharMatcher quoteMatcher;
+ if (SINGLE_QUOTE_MATCHER.matches(firstChar)) {
+ quoteMatcher = SINGLE_QUOTE_MATCHER;
+ } else if (DOUBLE_QUOTE_MATCHER.matches(firstChar)) {
+ quoteMatcher = DOUBLE_QUOTE_MATCHER;
+ } else {
+ sb.append(str);
+ continue;
+ }
+ sb.append(quoteMatcher.removeFrom(str.substring(1, str.length() - 1)));
+ }
+ return sb.toString();