diff src/nabble/naml/namespaces/StringList.java @ 0:7ecd1a4ef557

add content
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 21 Mar 2019 19:15:52 -0600
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nabble/naml/namespaces/StringList.java	Thu Mar 21 19:15:52 2019 -0600
@@ -0,0 +1,85 @@
+package nabble.naml.namespaces;
+
+import nabble.naml.compiler.Command;
+import nabble.naml.compiler.CommandSpec;
+import nabble.naml.compiler.IPrintWriter;
+import nabble.naml.compiler.Interpreter;
+import nabble.naml.compiler.Namespace;
+
+import java.util.Collections;
+import java.util.List;
+
+
+@Namespace (
+	name = "string_list",
+	global = true
+)
+public class StringList extends ListSequence<String> {
+
+	public StringList(List<String> strings) {
+		super(strings);
+	}
+
+	@Command public void current_string(IPrintWriter out,Interpreter interp) {
+		current_element(out,interp);
+	}
+
+	@Command public void string_count(IPrintWriter out,Interpreter interp) {
+		element_count(out,interp);
+	}
+
+	public static final CommandSpec add = CommandSpec.NO_OUTPUT()
+		.dotParameter("s")
+		.build()
+	;
+
+	@Command public void add(IPrintWriter out,Interpreter interp) {
+		String s = interp.getArgString("s");
+		if( s != null && !elements.contains(s))
+			elements.add(s);
+	}
+
+	public static final CommandSpec remove = add;
+
+	@Command public void remove(IPrintWriter out,Interpreter interp) {
+		String s = interp.getArgString("s");
+		if( s != null )
+			elements.remove(s);
+	}
+
+	public static final CommandSpec sort = CommandSpec.NO_OUTPUT;
+
+	@Command public void sort(IPrintWriter out,Interpreter interp) {
+		Collections.sort(elements);
+	}
+
+	public static final CommandSpec contains = new CommandSpec.Builder()
+		.dotParameter("s")
+		.build()
+	;
+
+	@Command public void contains(IPrintWriter out,Interpreter interp) {
+		String s = interp.getArgString("s");
+		out.print( elements.contains(s) );
+	}
+
+	@Command public void next_string(IPrintWriter out,Interpreter interp) {
+		next_element(out,interp);
+	}
+
+	public static final CommandSpec has_more_strings = has_more_elements;
+
+	@Command public final void has_more_strings(IPrintWriter out,Interpreter interp) {
+		has_more_elements(out,interp);
+	}
+
+	public static final CommandSpec at_index = new CommandSpec.Builder()
+		.dotParameter("index")
+		.build()
+	;
+
+	@Command public void at_index(IPrintWriter out,Interpreter interp) {
+		int i = interp.getArgAsInt("index");
+		out.print(elements.get(i));
+	}
+}