visualize_helper 0.0.10.25 → 0.0.10.26

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b76c98e9ade2e5f4411990878d7346e6e72bfcb9
4
- data.tar.gz: ef3d0489fe296aec90146c0c2801f5a909c97bdf
3
+ metadata.gz: 903c04a29bd20e7c659c5a397b62d211b5e4ae3f
4
+ data.tar.gz: b7619b2bc026d47d6064e1a7661f299b6f5db5a7
5
5
  SHA512:
6
- metadata.gz: b262f27bd47d62dbb43ca3d6adb3b38e0291671a5fbd39d34c7a3f668d9c342796189db789b010bbd0a796467502d25018271825cf2a0da971d182c50f6a3f5d
7
- data.tar.gz: ced031d3a566fdb644e2bedb7427a7eeaef3d650a6d6f183f2224272a0fe68fa2d998d0f53fcf663d51d27db0de26ecbd3f2b92629676abbb3de5304deaea4a8
6
+ metadata.gz: ca2f511e73820ff749c7d63cea0a2b7bb8e6bbc170cf39a1ebb1a63144243d7c2c5f89bdb7e10b52471c51874ac80a827d6b680644f8f4282abdfa99a68078b5
7
+ data.tar.gz: d921e8513e7d0f8704e13dbd10bd888aa387c4ae7b47f511e309a010caa8f277127719504f869eb64fbfb148ae2d82fe57f0bd45ea504a85c7e79a9984f339e0
@@ -6,51 +6,125 @@ static VALUE hello_world()
6
6
  return rb_str_new_cstr("hello world");
7
7
  }
8
8
 
9
+ // Find the index of the target value inside array
10
+ int findIndex(VALUE intervals, size_t size, int target)
11
+ {
12
+ int i=0;
13
+ while((i<size) && (FIX2INT(rb_ary_entry(intervals,i)) != target)) i++;
14
+
15
+ return (i<size) ? (i) : (-1);
16
+ }
9
17
 
10
18
 
11
- static int testando_hash(VALUE key, VALUE value, VALUE array){
19
+ // Function callback to iterate in hash
20
+ // Params:
21
+ // days: hash key (VALUE)
22
+ // traj: hash value (VALUE)
23
+ // array: [min (int) ,max (int) ,period (Qnil/int), intervals (C array), intervals_size(int), aggr (VALUE)]
24
+ static int encontra_min_max_period(VALUE days, VALUE traj, VALUE array){
12
25
 
13
- rb_ary_push(array,value);
14
-
26
+ // Convert every variable need to C value
27
+ VALUE intervals = rb_ary_entry(array,3);
28
+ VALUE aggr = rb_ary_entry(array,4);
29
+ int intervals_size = RARRAY_LEN(array);
30
+ int aggr_size = RARRAY_LEN(aggr);
31
+ VALUE first_interval = rb_ary_entry(intervals,0);
32
+ VALUE last_interval = rb_ary_entry(intervals,intervals_size - 1);
33
+ int first_interval_c = FIX2INT(first_interval);
34
+ int last_interval_c = FIX2INT(last_interval);
35
+ int days_c = atoi(StringValuePtr(days));
36
+ int min_c = FIX2INT(rb_ary_entry(array,0));
37
+ int max_c = FIX2INT(rb_ary_entry(array,1));
38
+ int period;
39
+
40
+ if (days_c < first_interval_c) {
41
+ if (min_c > days_c) {
42
+ min_c = days_c;
43
+ //rb_ary_store(array,0,days);
44
+ }
45
+ period = 0;
46
+ //rb_ary_store(array,2,INT2FIX(0));
47
+ }else if (days_c == 0) {
48
+ period = findIndex(intervals,intervals_size,0)+1;
49
+ //rb_ary_store(array,2,INT2FIX(index+1));
50
+
51
+ }else if (days_c > last_interval_c ) {
52
+ if (max_c < days_c) {
53
+ max_c = days_c;
54
+ //rb_ary_store(array,1,days);
55
+ }
56
+ //rb_ary_store(array,2,INT2FIX(aggr_size -1));
57
+ period = aggr_size -1;
58
+ }else {
59
+ for ( int index = 0 ; index < intervals_size ; index++){
60
+ if( index < (intervals_size - 1) ){
61
+ int intervals_index_plus_1 = FIX2INT(rb_ary_entry(intervals,index+1));
62
+ if ( intervals_index_plus_1 <= 0 ){
63
+ if (( days_c >= rb_ary_entry(intervals,index)) && (days_c < intervals_index_plus_1)) {
64
+ period = index +1;
65
+ //rb_ary_store(array,2,INT2FIX(i+1));
66
+ break;
67
+ }
68
+ }else if ( (days_c > rb_ary_entry(intervals,index) ) && (days_c <= intervals_index_plus_1) ) {
69
+ period = index + 2;
70
+ //rb_ary_store(array,2,INT2FIX(i+2));
71
+ break;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ rb_ary_push(rb_ary_entry(aggr,period),rb_ary_entry(traj,0));
15
77
 
16
78
  return ST_CONTINUE;
17
79
  }
18
80
 
19
- //
20
- static VALUE teste(VALUE self, VALUE min, VALUE max, VALUE hash)
81
+ // Function to find min, max and the period of the HashMapValue of trajectories in Visualize app
82
+ // Return: [ min, max, period]
83
+ static VALUE min_max_period(VALUE self, VALUE min, VALUE max, VALUE hash, VALUE intervals, VALUE aggr)
21
84
  {
85
+ int period = Qnil;
22
86
 
23
- int min_c = FIX2INT(min);
24
- int max_c = FIX2INT(max);
25
- int period = Qnil;
87
+ // Create Ruby array that will be the result
26
88
  VALUE array = rb_ary_new();
27
89
 
28
- rb_hash_foreach(hash,testando_hash,array);
90
+ // Push initial values of the result
91
+ rb_ary_push(array,min);
92
+ rb_ary_push(array,max);
93
+ rb_ary_push(array,period);
94
+ rb_ary_push(array,intervals);
95
+ rb_ary_push(array,aggr);
96
+
97
+
98
+ // iterate on hash calling "encontra_min_max_period" for each
99
+ rb_hash_foreach(hash,encontra_min_max_period,array);
29
100
 
30
- //VALUE str1 = rb_str_new_cstr("OLá ...");
31
- //VALUE str2 = rb_str_new_cstr("enfermeira!");
32
-
33
- //VALUE str1 = INT2FIX(min_c);
34
- //VALUE str2 = INT2FIX(max_c);
35
- //
36
- //rb_ary_push(array,str1);
37
- //rb_ary_push(array,str2);
101
+ // flatten on aggr
102
+
38
103
 
39
- return array;
104
+ // Return results
105
+ return aggr;
40
106
  }
41
107
 
108
+
109
+
110
+ static VALUE test(VALUE self, VALUE param){
111
+
112
+ int a = INT2FIX(param);
113
+ return FIX2INT(a);
114
+ }
115
+
42
116
  // Main function called when the gem is loaded
43
117
  void Init_visualize_helper(void) {
44
118
 
45
119
  // Register the VisualizeHelper module
46
120
  VALUE mVisualizeHelper = rb_define_module("VisualizeHelper");
47
121
 
48
- // Register the module Hello World without parameters
122
+ // Register the method Hello World without parameters
49
123
  rb_define_singleton_method(mVisualizeHelper, "hello_world", hello_world, 0);
50
124
 
51
- // Register the module Hello World with parameters
52
- rb_define_singleton_method(mVisualizeHelper, "teste", teste, 3);
125
+ // Register the method min_max_period
126
+ rb_define_singleton_method(mVisualizeHelper, "min_max_period", min_max_period, 5);
53
127
 
54
- // Register the module Hello World without parameters
55
- //rb_define_singleton_method(mVisualizeHelper, "descobre", descobre, 2);
128
+ // Register the method for development testing
129
+ rb_define_singleton_method(mVisualizeHelper, "test", test, 1 );
56
130
  }
@@ -1,3 +1,3 @@
1
1
  module VisualizeHelper
2
- VERSION = "0.0.10.25"
2
+ VERSION = "0.0.10.26"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: visualize_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10.25
4
+ version: 0.0.10.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raphael Ottoni Santiago Machado de Faria
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-28 00:00:00.000000000 Z
11
+ date: 2016-03-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler