excel_to_code 0.3.18.beta.2 → 0.3.18

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 454aafc3c0b81b49d23e47d43c6c9481e05bfd2f203a54cbb4f843a443c2a940
4
- data.tar.gz: f91a141c594eade7eb307230be6b942d909081266e6ea13124ebce0539174161
3
+ metadata.gz: 8a3957e729191cbc51037a420413ad74da28146727732dad6b681d82dc3dc186
4
+ data.tar.gz: 8dc0f9e740b1826f953fc58da6a6a533f45019a1e64a6d69a2c9435a084ff570
5
5
  SHA512:
6
- metadata.gz: ff5152ff1c3e2db4456ade2ae8602cf68d52cc62dfcaa4bd8e102d1c3083a42bb32b337d4618ca3bfacf97bec9bcf35eddaea3e9e3a9ecc10aba2a52d75d68bf
7
- data.tar.gz: aa9fe6581068e15768d53e2b9a9d2692383c487559808a32f1e86df41d0c3ba5b3b50a01884c7b7e5086c8142ba507b48ab6498a10fbad26a4c71b4ddb57f147
6
+ metadata.gz: 2a7fcd36058406db53cca24714416d25f6ee2f1f20ba4d97d57632a1d6cd42992243add6f66c835d0264db6a3d9d4f658e063a8c374e36a0445aaea9016e273e
7
+ data.tar.gz: 623215bcb5cf2b1b20708c86e75976db740ebcc180ad8d93f9587e98ae17e0c3f886c3504fe4051e96050c101560065986db4c2a31953f502b81839ff5a7adb0
data/src/compile/c/a.out CHANGED
Binary file
@@ -2215,18 +2215,30 @@ static ExcelValue filter_range(ExcelValue original_range_v, int number_of_argume
2215
2215
 
2216
2216
  if(current_value.type == ExcelString) {
2217
2217
  s = current_value.string;
2218
+ while(s[0] == ' ') {
2219
+ s = s + 1;
2220
+ }
2218
2221
  if(s[0] == '<') {
2219
2222
  if( s[1] == '>') {
2223
+ while(s[2] == ' ') {
2224
+ s = s + 1;
2225
+ }
2220
2226
  new_comparator = strndup(s+2,strlen(s)-2);
2221
2227
  free_later(new_comparator);
2222
2228
  criteria[i].type = NotEqual;
2223
2229
  criteria[i].comparator = EXCEL_STRING(new_comparator);
2224
2230
  } else if(s[1] == '=') {
2231
+ while(s[2] == ' ') {
2232
+ s = s + 1;
2233
+ }
2225
2234
  new_comparator = strndup(s+2,strlen(s)-2);
2226
2235
  free_later(new_comparator);
2227
2236
  criteria[i].type = LessThanOrEqual;
2228
2237
  criteria[i].comparator = EXCEL_STRING(new_comparator);
2229
2238
  } else {
2239
+ while(s[1] == ' ') {
2240
+ s = s + 1;
2241
+ }
2230
2242
  new_comparator = strndup(s+1,strlen(s)-1);
2231
2243
  free_later(new_comparator);
2232
2244
  criteria[i].type = LessThan;
@@ -2234,17 +2246,26 @@ static ExcelValue filter_range(ExcelValue original_range_v, int number_of_argume
2234
2246
  }
2235
2247
  } else if(s[0] == '>') {
2236
2248
  if(s[1] == '=') {
2249
+ while(s[2] == ' ') {
2250
+ s = s + 1;
2251
+ }
2237
2252
  new_comparator = strndup(s+2,strlen(s)-2);
2238
2253
  free_later(new_comparator);
2239
2254
  criteria[i].type = MoreThanOrEqual;
2240
2255
  criteria[i].comparator = EXCEL_STRING(new_comparator);
2241
2256
  } else {
2257
+ while(s[1] == ' ') {
2258
+ s = s + 1;
2259
+ }
2242
2260
  new_comparator = strndup(s+1,strlen(s)-1);
2243
2261
  free_later(new_comparator);
2244
2262
  criteria[i].type = MoreThan;
2245
2263
  criteria[i].comparator = EXCEL_STRING(new_comparator);
2246
2264
  }
2247
2265
  } else if(s[0] == '=') {
2266
+ while(s[1] == ' ') {
2267
+ s = s + 1;
2268
+ }
2248
2269
  new_comparator = strndup(s+1,strlen(s)-1);
2249
2270
  free_later(new_comparator);
2250
2271
  criteria[i].type = Equal;
@@ -2466,18 +2487,30 @@ static ExcelValue countifs(int number_of_arguments, ExcelValue *arguments) {
2466
2487
 
2467
2488
  if(current_value.type == ExcelString) {
2468
2489
  s = current_value.string;
2490
+ while(s[0] == ' ') {
2491
+ s = s + 1;
2492
+ }
2469
2493
  if(s[0] == '<') {
2470
2494
  if( s[1] == '>') {
2495
+ while(s[2] == ' ') {
2496
+ s = s + 1;
2497
+ }
2471
2498
  new_comparator = strndup(s+2,strlen(s)-2);
2472
2499
  free_later(new_comparator);
2473
2500
  criteria[i].type = NotEqual;
2474
2501
  criteria[i].comparator = EXCEL_STRING(new_comparator);
2475
2502
  } else if(s[1] == '=') {
2503
+ while(s[2] == ' ') {
2504
+ s = s + 1;
2505
+ }
2476
2506
  new_comparator = strndup(s+2,strlen(s)-2);
2477
2507
  free_later(new_comparator);
2478
2508
  criteria[i].type = LessThanOrEqual;
2479
2509
  criteria[i].comparator = EXCEL_STRING(new_comparator);
2480
2510
  } else {
2511
+ while(s[1] == ' ') {
2512
+ s = s + 1;
2513
+ }
2481
2514
  new_comparator = strndup(s+1,strlen(s)-1);
2482
2515
  free_later(new_comparator);
2483
2516
  criteria[i].type = LessThan;
@@ -2485,17 +2518,26 @@ static ExcelValue countifs(int number_of_arguments, ExcelValue *arguments) {
2485
2518
  }
2486
2519
  } else if(s[0] == '>') {
2487
2520
  if(s[1] == '=') {
2521
+ while(s[2] == ' ') {
2522
+ s = s + 1;
2523
+ }
2488
2524
  new_comparator = strndup(s+2,strlen(s)-2);
2489
2525
  free_later(new_comparator);
2490
2526
  criteria[i].type = MoreThanOrEqual;
2491
2527
  criteria[i].comparator = EXCEL_STRING(new_comparator);
2492
2528
  } else {
2529
+ while(s[1] == ' ') {
2530
+ s = s + 1;
2531
+ }
2493
2532
  new_comparator = strndup(s+1,strlen(s)-1);
2494
2533
  free_later(new_comparator);
2495
2534
  criteria[i].type = MoreThan;
2496
2535
  criteria[i].comparator = EXCEL_STRING(new_comparator);
2497
2536
  }
2498
2537
  } else if(s[0] == '=') {
2538
+ while(s[1] == ' ') {
2539
+ s = s + 1;
2540
+ }
2499
2541
  new_comparator = strndup(s+1,strlen(s)-1);
2500
2542
  free_later(new_comparator);
2501
2543
  criteria[i].type = Equal;
@@ -2871,6 +2913,8 @@ static ExcelValue text(ExcelValue number_v, ExcelValue format_v) {
2871
2913
  snprintf(s, 99, "%'0.3f",number_v.number);
2872
2914
  } else if(strcmp(format_v.string,"0000") == 0) {
2873
2915
  snprintf(s, 99, "%04.0f",number_v.number);
2916
+ } else if(strcmp(format_v.string,"#,000") == 0) {
2917
+ snprintf(s, 99, "%'03.0f",number_v.number);
2874
2918
  } else {
2875
2919
  snprintf(s, 99, "Text format not recognised");
2876
2920
  }
@@ -585,6 +585,8 @@ int test_functions() {
585
585
 
586
586
  ExcelValue sumifs_array_10f[] = { sumifs_array_3_v, EXCEL_STRING(">=3")};
587
587
  assert(sumifs(sumifs_array_3_v,2, sumifs_array_10f).number == 17);
588
+ ExcelValue sumifs_array_10g[] = { sumifs_array_3_v, EXCEL_STRING(" >= 3")};
589
+ assert(sumifs(sumifs_array_3_v,2, sumifs_array_10g).number == 17);
588
590
 
589
591
  // ... BLANK in check range should match empty strings, BLANK in criteria should match zero
590
592
  ExcelValue sumifs_array_11[] = { BLANK, EXCEL_NUMBER(0)};
@@ -658,6 +660,9 @@ int test_functions() {
658
660
  ExcelValue countifs_array_10e[] = { countifs_array_3_v, EXCEL_STRING(">3")};
659
661
  assert(countifs(2, countifs_array_10e).number == 3.0);
660
662
 
663
+ ExcelValue countifs_array_10e2[] = { countifs_array_3_v, EXCEL_STRING("> 3")};
664
+ assert(countifs(2, countifs_array_10e2).number == 3.0);
665
+
661
666
  ExcelValue countifs_array_10f[] = { countifs_array_3_v, EXCEL_STRING(">=3")};
662
667
  assert(countifs(2, countifs_array_10f).number == 4.0);
663
668
 
@@ -890,6 +895,8 @@ int test_functions() {
890
895
  assert(strcmp(text(EXCEL_NUMBER(123456789.123456), EXCEL_STRING("#,##")).string, "123,456,789") == 0);
891
896
  assert(strcmp(text(EXCEL_NUMBER(123456789.123456), EXCEL_STRING("#,##0")).string, "123,456,789") == 0);
892
897
  assert(strcmp(text(EXCEL_NUMBER(123456789.123456), EXCEL_STRING("#,##0.0")).string, "123,456,789.1") == 0);
898
+ assert(strcmp(text(EXCEL_NUMBER(3.1), EXCEL_STRING("#,000")).string, "003") == 0);
899
+ assert(strcmp(text(EXCEL_NUMBER(1000.3), EXCEL_STRING("#,000")).string, "1,000") == 0);
893
900
  assert(strcmp(text(EXCEL_NUMBER(123456789.123456), EXCEL_STRING("!#,##0.0")).string, "Text format not recognised") == 0);
894
901
 
895
902
  // Test LOG
@@ -69,7 +69,7 @@ module ExcelFunctions
69
69
  when Numeric
70
70
  check_value == required_value
71
71
  when String
72
- required_value =~ /^(<=|>=|<|>)?([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)$/
72
+ required_value =~ /^\s*(<=|>=|<|>)?\s*([-+]?[0-9]+\.?[0-9]*([eE][-+]?[0-9]+)?)\s*$/
73
73
  if $1 && $2
74
74
  check_value.send($1,$2.to_f)
75
75
  elsif $2
@@ -20,9 +20,12 @@ module ExcelFunctions
20
20
  text(number*100, $1)+"%"
21
21
  when /^(0+)$/
22
22
  sprintf("%0#{$1.length}.0f", number)
23
- when /#[,.]#+(0[.,]0+)?/
23
+ when /^#[,.]#*(0[.,]0+)?(0*)$/
24
24
  formated_with_decimals = text(number, $1 || "0")
25
25
  parts = formated_with_decimals.split('.')
26
+ if $2 && parts[0].length < $2.length
27
+ parts[0] = ("0"*($2.length - parts[0].length))+parts[0]
28
+ end
26
29
  parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")
27
30
  parts.join('.')
28
31
  when /0[.,](0+)/
data/src/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  class ExcelToCode
2
- def self.version() "0.3.18.beta.2" end
2
+ def self.version() "0.3.18" end
3
3
  end
4
4
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: excel_to_code
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.18.beta.2
4
+ version: 0.3.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Counsell, Green on Black Ltd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-30 00:00:00.000000000 Z
11
+ date: 2019-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubypeg
@@ -365,9 +365,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
365
365
  version: 2.3.0
366
366
  required_rubygems_version: !ruby/object:Gem::Requirement
367
367
  requirements:
368
- - - ">"
368
+ - - ">="
369
369
  - !ruby/object:Gem::Version
370
- version: 1.3.1
370
+ version: '0'
371
371
  requirements: []
372
372
  rubyforge_project:
373
373
  rubygems_version: 2.7.7