summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-01-11 08:11:43 -0800
committerKaz Kylheku <kaz@kylheku.com>2012-01-11 08:11:43 -0800
commit285cf6a287d4d2de7d02bb1d72f369226e19c213 (patch)
treea127dfa2b9f2b7ba960538915b9f5d50914be7f3
parent54599a32a30ee276e4a26b20049ac2c79b6057c9 (diff)
downloadtxr-285cf6a287d4d2de7d02bb1d72f369226e19c213.tar.gz
txr-285cf6a287d4d2de7d02bb1d72f369226e19c213.tar.bz2
txr-285cf6a287d4d2de7d02bb1d72f369226e19c213.zip
* eval.c (eval_init): list_str registered.
* lib.c (list_str): New function. * lib.h (list_str): Declared. * txr.1: Doc stub section created. * txr.vim: Updated.
-rw-r--r--ChangeLog12
-rw-r--r--eval.c1
-rw-r--r--lib.c9
-rw-r--r--lib.h1
-rw-r--r--txr.12
-rw-r--r--txr.vim3
6 files changed, 27 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 846f7c0c..50100ddf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2012-01-11 Kaz Kylheku <kaz@kylheku.com>
+
+ * eval.c (eval_init): list_str registered.
+
+ * lib.c (list_str): New function.
+
+ * lib.h (list_str): Declared.
+
+ * txr.1: Doc stub section created.
+
+ * txr.vim: Updated.
+
2012-01-10 Kaz Kylheku <kaz@kylheku.com>
* eval.c (generate): Bugfix: do not call gen_fun before
diff --git a/eval.c b/eval.c
index 859cafaa..4cf97c6f 100644
--- a/eval.c
+++ b/eval.c
@@ -1608,6 +1608,7 @@ void eval_init(void)
reg_fun(intern(lit("cat-str"), user_package), func_n2(cat_str));
reg_fun(intern(lit("split-str"), user_package), func_n2(split_str));
reg_fun(intern(lit("split-str-set"), user_package), func_n2(split_str_set));
+ reg_fun(intern(lit("list-str"), user_package), func_n1(list_str));
reg_fun(intern(lit("trim-str"), user_package), func_n1(trim_str));
reg_fun(intern(lit("string-lt"), user_package), func_n2(string_lt));
reg_fun(intern(lit("int-str"), user_package), func_n2(int_str));
diff --git a/lib.c b/lib.c
index 12752ef4..70324341 100644
--- a/lib.c
+++ b/lib.c
@@ -1463,6 +1463,15 @@ val split_str_set(val str, val set)
return out;
}
+val list_str(val str)
+{
+ const wchar_t *cstr = c_str(str);
+ list_collect_decl (out, iter);
+ while (*cstr)
+ list_collect(iter, chr(*cstr++));
+ return out;
+}
+
val trim_str(val str)
{
const wchar_t *start = c_str(str);
diff --git a/lib.h b/lib.h
index 3d55a914..6c2ab7ed 100644
--- a/lib.h
+++ b/lib.h
@@ -420,6 +420,7 @@ val sub_str(val str_in, val from_num, val to_num);
val cat_str(val list, val sep);
val split_str(val str, val sep);
val split_str_set(val str, val set);
+val list_str(val str);
val trim_str(val str);
val string_lt(val astr, val bstr);
val int_str(val str, val base);
diff --git a/txr.1 b/txr.1
index 31c8fd73..cb54784b 100644
--- a/txr.1
+++ b/txr.1
@@ -6058,6 +6058,8 @@ Certain object types have a custom equal function.
.SS Function split-str-set
+.SS Function list-str
+
.SS Function trim-str
.SS Function string-lt
diff --git a/txr.vim b/txr.vim
index 96c0bf0a..c5a67415 100644
--- a/txr.vim
+++ b/txr.vim
@@ -59,7 +59,8 @@ syn keyword txl_keyword contained make-sym gensym *gensym-counter* make-package
syn keyword txl_keyword contained intern symbolp symbol-name symbol-package keywordp
syn keyword txl_keyword contained mkstring copy-str upcase-str downcase-str string-extend
syn keyword txl_keyword contained stringp lazy-stringp length-str search-str search-str-tree
-syn keyword txl_keyword contained sub-str cat-str split-str split-str-set trim-str
+syn keyword txl_keyword contained sub-str cat-str split-str
+syn keyword txl_keyword contained split-str-set list-str trim-str
syn keyword txl_keyword contained string-lt int-str chrp chr-isalnum chr-isalpha
syn keyword txl_keyword contained chr-isascii chr-iscntrl chr-isdigit chr-isgraph
syn keyword txl_keyword contained chr-islower chr-isprint chr-ispunct chr-isspace chr-isupper