/* Copyright (c) 2014 Boundless and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Distribution License v1.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/org/documents/edl-v10.html * * Contributors: * Victor Olaya (Boundless) - initial implementation */ package org.locationtech.geogig.cli; import com.google.common.base.CharMatcher; import com.google.common.base.Splitter; import com.google.common.collect.Iterables; /** * Tokenizes a string with arguments, breaking in blank spaces except when they are quoted * */ public class ArgumentTokenizer { public static String[] tokenize(String s) { Iterable<String> tokens = Splitter.on(new UnquotedSpace()).split(s); return Iterables.toArray(tokens, String.class); } private static class UnquotedSpace extends CharMatcher { private boolean inQuotes = false; @Override public boolean matches(char c) { if ('"' == c) { inQuotes = !inQuotes; } if (inQuotes) { return false; } return (' ' == c); } } }