Add string multiplication by number

This commit is contained in:
Nicolas Williams committed 2013-12-04 18:21:39 -06:00
1 parent db19a11399
commit 5989dbdfcf
1 file changed
+13
+13
View File
@@ -138,6 +138,19 @@ static jv f_multiply(jv input, jv a, jv b) {
jv_free(input);
if (jv_get_kind(a) == JV_KIND_NUMBER && jv_get_kind(b) == JV_KIND_NUMBER) {
return jv_number(jv_number_value(a) * jv_number_value(b));
} else if (jv_get_kind(a) == JV_KIND_STRING && jv_get_kind(b) == JV_KIND_NUMBER) {
int n;
size_t alen = jv_string_length_bytes(jv_copy(a));
jv res = a;
for (n = jv_number_value(b) - 1; n > 0; n--)
res = jv_string_append_buf(res, jv_string_value(a), alen);
if (n < 0) {
jv_free(a);
return jv_null();
}
return res;
} else {
return type_error2(a, b, "cannot be multiplied");
}