*/
private boolean allStructures = false;
+ /**
+ * flag to say whether to ignore or reject non-string values args with a value
+ * e.g., --wrap=hello
+ *
+ * Default is false (i.e. reject non-string args that have a value. It is set
+ * to true for JalviewJS in Platform.getURLCommandArguments().
+ */
+ private static boolean ignoreNonStringValues = false;
+
protected static final Map<String, Arg> argMap;
protected Map<String, ArgValuesMap> linkedArgs = new HashMap<>();
}
if (!a.hasOption(Opt.STRING) && equalPos > -1)
{
- // set --argname=value when arg does not accept values
- Console.error("Argument '" + a.argString()
- + "' does not expect a value (given as '" + arg
- + "'). Ignoring.");
- continue;
+ if (!getIgnoreNonStringValues())
+ {
+ // delete equals sign and value
+ val = null;
+ arg = arg.substring(0, equalPos);
+ }
+ else
+ {
+ // set --argname=value when arg does not accept values
+ Console.error("Argument '" + a.argString()
+ + "' does not expect a value (given as '" + arg
+ + "'). Ignoring.");
+ continue;
+ }
}
if (!a.hasOption(Opt.LINKED) && linkedId != null)
{
this.currentStructureFilename = s;
}
+ public static boolean getIgnoreNonStringValues()
+ {
+ return ignoreNonStringValues;
+ }
+
+ public static void setIgnoreNonStringValues(boolean b)
+ {
+ ignoreNonStringValues = b;
+ }
}
\ No newline at end of file
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+import jalview.bin.argparser.ArgParser;
import jalview.javascript.json.JSON;
/**
public static void getURLCommandArguments()
{
+
+ // setting ArgParser.ignoreNonStringValues allows non-string args to be
+ // set with, e.g., --wrap=hello
+ // which might be necessary for a querystring, plus we don't have access
+ // to Arg.hasOption(Opt.STRING)
+ if (Platform.isJS())
+ {
+ ArgParser.setIgnoreNonStringValues(true);
+ }
try
{
+ // extra spaces between lines of javascript to avoid eclipse comment
+ // munging into one line
+
/**
* Retrieve the first query field as command arguments to Jalview. Include
* only if prior to "?j2s" or "&j2s" or "#". Assign the applet's
* __Info.args element to this value.
*
- * @j2sNative var a =
+ * if a querystringnamespace has been given in Info={...}. Use this
+ * namespace to find arguments and values in the querystring parameters.
+ * Arguments that do not take a value do not need to have a value in the
+ * querystring. If they do they will be ignored. Note, this means you
+ * cannot do 'debug=false' instead of 'nodebug'. If querystringnamepsace
+ * is an empty string ("") then no colon (":") will be expected.
+ *
+ * if querystringnamespace is not defined then use the old style single
+ * first parameter for arguments
+ *
+ * @j2sNative var querystringnamespace =
+ * J2S.thisApplet.__Info.querystringnamespace;
+ *
+ * if (querystringnamespace === undefined)
+ *
+ * {
+ *
+ * System.out.println("No querystringnamespace given");
+ *
+ * var a =
* decodeURI((document.location.href.replace("&","?").split("?j2s")[0]
- * + "?").split("?")[1].split("#")[0]); a &&
- * (System.out.println("URL arguments detected were "+a)) &&
- * (J2S.thisApplet.__Info.urlargs = a.split(" "));
+ * + "?").split("?")[1].split("#")[0]);
+ *
+ * a && (System.out.println("URL arguments detected were "+a))
+ * && (J2S.thisApplet.__Info.urlargs = a.split(" "));
+ *
* (!J2S.thisApplet.__Info.args || J2S.thisApplet.__Info.args
* == "" || J2S.thisApplet.__Info.args == "??") &&
* (J2S.thisApplet.__Info.args = a) && (System.out.println("URL
* arguments were passed to J2S main."));
+ *
+ * }
+ *
+ * else // querystringnamespace is defined
+ *
+ * {
+ *
+ * var qsnsc = "";
+ *
+ * if (J2S.thisApplet.__Info.querystringnamespace) {
+ *
+ * qsnsc = J2S.thisApplet.__Info.querystringnamespace + ":";
+ *
+ * }
+ *
+ * System.out.println("querystringnamespace is '"+qsnsc+"'");
+ *
+ * var qsParams = new URLSearchParams(window.location.search);
+ *
+ * var qsargs = [];
+ *
+ * for (var param of qsParams) {
+ *
+ * var key = param[0];
+ *
+ * var val = param[1];
+ *
+ * if (key.startsWith(qsnsc)) {
+ *
+ * var arg = key.substring(qsnsc.length);
+ *
+ * qsargs.push("--" + arg + "=" + val);
+ *
+ * System.out.println("Setting arg '"+arg+"' to '"+val+"'");
+ *
+ * }
+ *
+ * }
+ *
+ * qsargs && (System.out.println("URL parameters detected were
+ * "+qsargs.join(" "))) && (J2S.thisApplet.__Info.urlargs =
+ * qsargs);
+ *
+ * (!J2S.thisApplet.__Info.args || J2S.thisApplet.__Info.args
+ * == "" || J2S.thisApplet.__Info.args == "??") &&
+ * (J2S.thisApplet.__Info.args = qsargs.join(" ")) &&
+ * (System.out.println("URL parameters were passed to J2S
+ * main."));
+ *
+ * }
*/
} catch (Throwable t)
{
+ /**
+ * @j2sNative console.log("Problem looking for arguments");
+ * console.log(t);
+ */
}
}