/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.lang.gosuc;
import gw.lang.parser.IToken;
import java.util.ArrayList;
import java.util.List;
/**
*/
public class GosucSdk {
private List<String> _paths;
public GosucSdk( List<String> paths ) {
_paths = paths;
}
public List<String> getPaths() {
return _paths;
}
public String write() {
StringBuilder sb = new StringBuilder()
.append( "sdk {\n" );
for( String path : getPaths() ) {
sb.append( " " ).append( "\"" ).append( path ).append( "\",\n" );
}
sb.append( "}" );
return sb.toString();
}
public static GosucSdk parse( GosucProjectParser parser ) {
parser.verify( parser.matchWord( "sdk", false ), "Expecting 'sdk' keyword" );
parser.verify( parser.match( null, '{', false ), "Expecting '{' to begin sdk path list" );
List<String> paths = new ArrayList<String>();
for( IToken t = parser.getTokenizer().getCurrentToken(); parser.match( null, '"', false ); t = parser.getTokenizer().getCurrentToken() ) {
paths.add( t.getStringValue() );
if( !parser.match( null, ',', false ) ) {
break;
}
}
parser.verify( parser.match( null, '}', false ), "Expecting '}' to close sdk path list" );
return new GosucSdk( paths );
}
@Override
public boolean equals( Object o ) {
if( this == o ) {
return true;
}
if( o == null || getClass() != o.getClass() ) {
return false;
}
GosucSdk gosucSdk = (GosucSdk)o;
return _paths.equals( gosucSdk._paths );
}
@Override
public int hashCode() {
return _paths.hashCode();
}
}