# New Ticket Created by  Leon Brocard 
# Please include the string:  [perl #17035]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=17035 >


I realise that proper Unicode support is coming, but it may be a while
to get here. We currently have ord() and it makes sense to have a
chr() as well, so that's what my patch provides. Please apply, thanks ;-)

Leon
-- 
Leon Brocard.............................http://www.astray.com/
scribot.................................http://www.scribot.com/

....... I'm sure it's in the manual somewhere...


-- attachment  1 ------------------------------------------------------
url: http://rt.perl.org/rt2/attach/36636/29568/60614d/chr.patch

Index: core.ops
===================================================================
RCS file: /cvs/public/parrot/core.ops,v
retrieving revision 1.204
diff -u -r1.204 core.ops
--- core.ops    5 Sep 2002 03:46:44 -0000       1.204
+++ core.ops    5 Sep 2002 14:32:53 -0000
@@ -201,6 +201,22 @@
   goto NEXT();
 }
 
+=item B<chr>(out STR, in INT)
+
+Returns the character represented by the $2 number in the ASCII
+character set.
+
+=cut
+
+inline op chr (out STR, in INT) {
+  STRING *s;
+  s = string_make(interpreter, &$1, (UINTVAL)1, NULL, 0, NULL);
+  *(char *)s->bufstart = $2;
+  s->strlen = 1;
+  $1 = s;
+  goto NEXT();
+}
+
 
 ########################################
 
Index: t/op/string.t
===================================================================
RCS file: /cvs/public/parrot/t/op/string.t,v
retrieving revision 1.31
diff -u -r1.31 string.t
--- t/op/string.t       4 Sep 2002 13:49:55 -0000       1.31
+++ t/op/string.t       5 Sep 2002 14:32:53 -0000
@@ -1,6 +1,6 @@
 #! perl -w
 
-use Parrot::Test tests => 91;
+use Parrot::Test tests => 94;
 use Test::More;
 
 output_is( <<'CODE', <<OUTPUT, "set_s_s|sc" );
@@ -1000,6 +1000,24 @@
        set S0,"ab"
        ord I0,S0,-3
        print I0
+       end
+CODE
+
+output_is(<<'CODE',chr(32),'chr of 32 is space in ASCII');
+       chr S0, 32
+       print S0
+       end
+CODE
+
+output_is(<<'CODE',chr(65),'chr of 65 is A in ASCII');
+       chr S0, 65
+       print S0
+       end
+CODE
+
+output_is(<<'CODE',chr(122),'chr of 122 is z in ASCII');
+       chr S0, 122
+       print S0
        end
 CODE
 

Reply via email to