summaryrefslogtreecommitdiff
path: root/complex.c
diff options
context:
space:
mode:
authortadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-05 12:44:06 +0000
committertadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-05 12:44:06 +0000
commit2d3f41d19fae8a33deb460987ab40251a028c5e6 (patch)
tree460cd98f3feb5c1880d423a766688191f3c6f7ce /complex.c
parent8c07972702051ccbca16747c1dedcaebf74f08b2 (diff)
* complex.c: inpsect should not depend on to_s.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'complex.c')
-rw-r--r--complex.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/complex.c b/complex.c
index 70eba23ec7..f69c976ac0 100644
--- a/complex.c
+++ b/complex.c
@@ -910,7 +910,7 @@ f_tpositive_p(VALUE x)
}
static VALUE
-nucomp_to_s(VALUE self)
+nucomp_format(VALUE self, VALUE (*func)(VALUE))
{
VALUE s, impos;
@@ -918,10 +918,10 @@ nucomp_to_s(VALUE self)
impos = f_tpositive_p(dat->imag);
- s = f_to_s(dat->real);
+ s = (*func)(dat->real);
rb_str_cat2(s, !impos ? "-" : "+");
- rb_str_concat(s, f_to_s(f_abs(dat->imag)));
+ rb_str_concat(s, (*func)(f_abs(dat->imag)));
if (!rb_isdigit(RSTRING_PTR(s)[RSTRING_LEN(s) - 1]))
rb_str_cat2(s, "*");
rb_str_cat2(s, "i");
@@ -930,12 +930,18 @@ nucomp_to_s(VALUE self)
}
static VALUE
+nucomp_to_s(VALUE self)
+{
+ return nucomp_format(self, f_to_s);
+}
+
+static VALUE
nucomp_inspect(VALUE self)
{
VALUE s;
s = rb_str_new2("(");
- rb_str_concat(s, nucomp_to_s(self));
+ rb_str_concat(s, nucomp_format(self, f_inspect));
rb_str_cat2(s, ")");
return s;