Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * CDDL HEADER START
 * 
 * The contents of this file are subject to the terms of the Common Development and Distribution
 * License, Version 1.0 only (the "License"). You may not use this file except in compliance with
 * the License.
 * 
 * You can obtain a copy of the license at license/ESCIDOC.LICENSE or
 * http://www.escidoc.org/license. See the License for the specific language governing permissions
 * and limitations under the License.
 * 
 * When distributing Covered Code, include this CDDL HEADER in each file and include the License
 * file at license/ESCIDOC.LICENSE. If applicable, add the following below this CDDL HEADER, with
 * the fields enclosed by brackets "[]" replaced with your own identifying information: Portions
 * Copyright [yyyy] [name of copyright owner]
 * 
 * CDDL HEADER END
 */

import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    private static final Pattern SUBS_OR_SUPS = Pattern.compile("\\<(\\/?(su[bp]|SU[BP]))\\>", Pattern.DOTALL);

    /**
     * Check of the balanced tags sup/sub
     * 
     * @param snippet
     * @return <code>true</code> if balanced, <code>false</code> otherwise
     */
    public static boolean isBalanced(String snippet) {
        if (snippet == null)
            return true; // ????

        Stack<String> s = new Stack<String>();
        Matcher m = SUBS_OR_SUPS.matcher(snippet);
        while (m.find()) {
            String tag = m.group(1);
            if (tag.toLowerCase().startsWith("su")) {
                s.push(tag);
            } else {
                if (s.empty() || !tag.equals("/" + s.pop())) {
                    return false;
                }
            }
        }

        return s.empty();
    }
}