dec_number 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Binary file
data/dec_number.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s| # -*-ruby-*-
2
2
  s.name = "dec_number"
3
- s.version = '0.0.0'
3
+ s.version = '0.1.0'
4
4
  s.authors = ["Paris Sinclair"]
5
5
  s.email = ["paris@rubypanther.com"]
6
6
  s.summary = "ICU-decNumber wrapper for arbitrary precision math with context objects"
@@ -123,14 +123,15 @@ static VALUE dec_number_from_struct(decNumber source_dec_num) {
123
123
 
124
124
  static VALUE dec_number_from_string(VALUE obj, VALUE from) {
125
125
  decNumber *dec_num_ptr;
126
- VALUE new, ret, err;
127
-
126
+ VALUE new, ret, err, r_str;
128
127
  ret = Qnil;
129
128
  new = rb_funcall( cDecNumber, rb_intern("new"), 1, from );
130
- Data_Get_Struct(new, decNumber, dec_num_ptr);
131
129
 
130
+ Data_Get_Struct(new, decNumber, dec_num_ptr);
132
131
  if ( decNumberIsNaN( dec_num_ptr ) ) {
133
- err = rb_funcall( rb_cObject, rb_intern( "sprintf" ), 2, "invalid value for DecNumber: %s", from );
132
+ // FIXME: Just use the sprintf from C, silly
133
+ r_str = rb_funcall( from, rb_intern( "to_s" ), 0 );
134
+ err = rb_funcall( rb_mKernel, rb_intern( "sprintf" ), 2, rb_str_new2("invalid value for DecNumber: %s"), r_str );
134
135
  rb_raise(rb_eArgError, StringValuePtr( err ) );
135
136
  } else {
136
137
  ret = new;
@@ -407,12 +408,17 @@ static VALUE num_modulo(VALUE self, VALUE rval) {
407
408
  return result;
408
409
  }
409
410
 
410
- static VALUE num_round(VALUE self) {
411
- VALUE result;
411
+ static VALUE num_round(int argc, VALUE *argv, VALUE self) {
412
+ VALUE result, rval;
412
413
  decContext *context_ptr;
413
414
  decNumber *self_ptr, *result_ptr;
414
415
  dec_num_setup( result, self, result_ptr, self_ptr, context_ptr );
415
416
 
417
+ rb_scan_args( argc, argv, "01", &rval );
418
+ if ( !NIL_P( rval ) ) {
419
+ context_ptr->digits = NUM2INT( rb_funcall( rval, rb_intern("to_i"), 0 ) );
420
+ }
421
+
416
422
  decNumberToIntegralValue( result_ptr, self_ptr, context_ptr);
417
423
  return result;
418
424
  }
@@ -441,6 +447,7 @@ void Init_dec_number() {
441
447
  rb_define_method(cDecNumber, "<=>", num_compare, 1);
442
448
  rb_define_method(cDecNumber, "/", num_divide, 1);
443
449
  rb_define_alias( cDecNumber, "quo", "/");
450
+ rb_define_alias( cDecNumber, "fdiv", "quo");
444
451
  rb_define_method(cDecNumber, "coerce", num_coerce, 1);
445
452
  rb_define_method(cDecNumber, "div", num_div, 1);
446
453
  rb_define_method(cDecNumber, "*", num_multiply, 1);
@@ -455,7 +462,7 @@ void Init_dec_number() {
455
462
  rb_define_alias( cDecNumber, "modulo", "%");
456
463
  rb_define_method(cDecNumber, "zero?", num_zero, 0);
457
464
  rb_define_method(cDecNumber, "nonzero?", num_nonzero, 0);
458
- rb_define_method(cDecNumber, "round", num_round, 0);
465
+ rb_define_method(cDecNumber, "round", num_round, -1);
459
466
  rb_define_method(cDecNumber, "**", num_power, 1);
460
467
 
461
468
  rb_define_method(rb_cObject, "DecNumber", dec_number_from_string, 1);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dec_number
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-10-15 00:00:00.000000000Z
12
+ date: 2011-10-17 00:00:00.000000000Z
13
13
  dependencies: []
14
14
  description: Wrapper for ICU-decNumber library
15
15
  email:
@@ -82,6 +82,7 @@ files:
82
82
  - ext/dec_number/decNumber/decSingle.h
83
83
  - ext/dec_number/decNumber/decCommon.c
84
84
  - ext/dec_number/decNumber/decimal128.c
85
+ - dec_number-0.0.0.gem
85
86
  - dec_number.gemspec
86
87
  - README
87
88
  homepage: http://github.com/rubypanther/dec_number