1 23 24 package org.enhydra.xml.xmlc.commands.xmlc; 25 26 import java.io.IOException ; 27 28 import org.enhydra.xml.io.ErrorReporter; 29 import org.enhydra.xml.xmlc.XMLCException; 30 import org.enhydra.xml.xmlc.commands.options.OptionSet; 31 import org.enhydra.xml.xmlc.commands.options.OptionsParser; 32 import org.enhydra.xml.xmlc.metadata.CompileOptions; 33 import org.enhydra.xml.xmlc.metadata.MetaData; 34 35 39 public class XMLCOptionsParser { 40 43 private static final String USAGE = "wrong # args: xmlc [options] [optfile.xmlc ...] src.ext"; 44 45 48 private OptionSet optionSet = new OptionSet(); 49 50 53 public XMLCOptionsParser() { 54 new CompileOptsCmdOptions(optionSet); 55 new CompilerCmdOptions(optionSet); 56 new DOMEditCmdOptions(optionSet); 57 new DocClassCmdOptions(optionSet); 58 new HTMLCmdOptions(optionSet); 59 new ParserCmdOptions(optionSet); 60 } 61 62 66 public MetaData parse(String [] args, 67 ErrorReporter errorReporter) 68 throws XMLCException, IOException { 69 OptionsParser optParser = new OptionsParser(optionSet, 70 errorReporter); 71 optParser.parse(args); 72 73 MetaData metaData = optParser.getMetaData(); 74 CompileOptions compileOptions = metaData.getCompileOptions(); 75 String [] posArgs = optParser.getPositionalArgs(); 76 77 if (posArgs.length > 1) { 80 throw new XMLCException(USAGE); 81 } else if (posArgs.length == 0) { 82 if (!compileOptions.getPrintVersion()) { 83 throw new XMLCException(USAGE); 84 } 85 } else { 86 metaData.getInputDocument().setUrl(posArgs[0]); 87 metaData.getDocument().completeModifications(); 88 } 89 return metaData; 90 } 91 92 } 93 | Popular Tags |