From 285cf6a287d4d2de7d02bb1d72f369226e19c213 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 11 Jan 2012 08:11:43 -0800 Subject: * 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. --- ChangeLog | 12 ++++++++++++ eval.c | 1 + lib.c | 9 +++++++++ lib.h | 1 + txr.1 | 2 ++ txr.vim | 3 ++- 6 files changed, 27 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 846f7c0c..50100ddf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2012-01-11 Kaz Kylheku + + * 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 * 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 -- cgit v1.2.3