excel_to_code 0.1.12 → 0.1.13
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a9204f1b847531abe1231be586e07efde9d6f56
|
4
|
+
data.tar.gz: 55e3970859d6b607b877e91c4670777c098e5d78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 994609e98432c12a0abe413587fe7cefa9c138aedd43e174c1ff54a349bf716ed7e82e05413fab9f94b5291df2a1ff89881226c1559593a9052ff20c204ef9ef
|
7
|
+
data.tar.gz: 83139c0c54325b3303c64065b07d18a529a2a761de1391932388c41dc038d51c152bff100bf50c9e50066962eb5e45c136b996bcfba764f2fe025f2f0eb6a9c8
|
data/src/compile/c/a.out
ADDED
Binary file
|
@@ -63,6 +63,8 @@ static ExcelValue excel_index_2(ExcelValue array_v, ExcelValue row_number_v);
|
|
63
63
|
static ExcelValue large(ExcelValue array_v, ExcelValue k_v);
|
64
64
|
static ExcelValue left(ExcelValue string_v, ExcelValue number_of_characters_v);
|
65
65
|
static ExcelValue left_1(ExcelValue string_v);
|
66
|
+
static ExcelValue excel_log(ExcelValue number);
|
67
|
+
static ExcelValue excel_log_2(ExcelValue number, ExcelValue base);
|
66
68
|
static ExcelValue max(int number_of_arguments, ExcelValue *arguments);
|
67
69
|
static ExcelValue min(int number_of_arguments, ExcelValue *arguments);
|
68
70
|
static ExcelValue mod(ExcelValue a_v, ExcelValue b_v);
|
@@ -86,6 +88,7 @@ static ExcelValue text(ExcelValue number_v, ExcelValue format_v);
|
|
86
88
|
static ExcelValue vlookup_3(ExcelValue lookup_value_v,ExcelValue lookup_table_v, ExcelValue column_number_v);
|
87
89
|
static ExcelValue vlookup(ExcelValue lookup_value_v,ExcelValue lookup_table_v, ExcelValue column_number_v, ExcelValue match_type_v);
|
88
90
|
|
91
|
+
|
89
92
|
// My little heap for excel values
|
90
93
|
ExcelValue cells[MAX_EXCEL_VALUE_HEAP_SIZE];
|
91
94
|
int cell_counter = 0;
|
@@ -298,6 +301,23 @@ static ExcelValue add(ExcelValue a_v, ExcelValue b_v) {
|
|
298
301
|
return new_excel_number(a + b);
|
299
302
|
}
|
300
303
|
|
304
|
+
static ExcelValue excel_log(ExcelValue number) {
|
305
|
+
return excel_log_2(number, TEN);
|
306
|
+
}
|
307
|
+
|
308
|
+
static ExcelValue excel_log_2(ExcelValue number_v, ExcelValue base_v) {
|
309
|
+
CHECK_FOR_PASSED_ERROR(number_v)
|
310
|
+
CHECK_FOR_PASSED_ERROR(base_v)
|
311
|
+
NUMBER(number_v, n)
|
312
|
+
NUMBER(base_v, b)
|
313
|
+
CHECK_FOR_CONVERSION_ERROR
|
314
|
+
|
315
|
+
if(n<=0) { return NUM; }
|
316
|
+
if(b<=0) { return NUM; }
|
317
|
+
|
318
|
+
return new_excel_number(log(n)/log(b));
|
319
|
+
}
|
320
|
+
|
301
321
|
static ExcelValue excel_and(int array_size, ExcelValue *array) {
|
302
322
|
int i;
|
303
323
|
ExcelValue current_excel_value, array_result;
|
@@ -2385,6 +2405,16 @@ int test_functions() {
|
|
2385
2405
|
assert(strcmp(text(BLANK, new_excel_string("0%")).string, "0%") == 0);
|
2386
2406
|
assert(strcmp(text(new_excel_number(1.0), BLANK).string, "") == 0);
|
2387
2407
|
assert(strcmp(text(new_excel_string("ASGASD"), new_excel_string("0%")).string, "ASGASD") == 0);
|
2408
|
+
|
2409
|
+
// Test LOG
|
2410
|
+
// One argument variant assumes LOG base 10
|
2411
|
+
assert(excel_log(new_excel_number(10)).number == 1);
|
2412
|
+
assert(excel_log(new_excel_number(100)).number == 2);
|
2413
|
+
assert(excel_log(new_excel_number(0)).type == ExcelError);
|
2414
|
+
// Two argument variant allows LOG base to be specified
|
2415
|
+
assert(excel_log_2(new_excel_number(8),new_excel_number(2)).number == 3.0);
|
2416
|
+
assert(excel_log_2(new_excel_number(8),new_excel_number(0)).type == ExcelError);
|
2417
|
+
|
2388
2418
|
// Release memory
|
2389
2419
|
free_all_allocated_memory();
|
2390
2420
|
|
@@ -47,6 +47,8 @@ class MapFormulaeToC < MapValuesToC
|
|
47
47
|
'LARGE' => 'large',
|
48
48
|
'LEFT1' => 'left_1',
|
49
49
|
'LEFT2' => 'left',
|
50
|
+
'LOG1' => 'excel_log',
|
51
|
+
'LOG2' => 'excel_log_2',
|
50
52
|
'MATCH2' => 'excel_match_2',
|
51
53
|
'MATCH3' => 'excel_match',
|
52
54
|
'MAX' => 'max',
|
@@ -69,7 +71,8 @@ class MapFormulaeToC < MapValuesToC
|
|
69
71
|
'SUMPRODUCT' => 'sumproduct',
|
70
72
|
'VLOOKUP3' => 'vlookup_3',
|
71
73
|
'VLOOKUP4' => 'vlookup',
|
72
|
-
'^' => 'power'
|
74
|
+
'^' => 'power',
|
75
|
+
'POWER' => 'power'
|
73
76
|
}
|
74
77
|
|
75
78
|
def prefix(symbol,ast)
|
@@ -32,6 +32,7 @@ class MapFormulaeToRuby < MapValuesToRuby
|
|
32
32
|
'INT' => 'int',
|
33
33
|
'LARGE' => 'large',
|
34
34
|
'LEFT' => 'left',
|
35
|
+
'LOG' => 'log',
|
35
36
|
'MATCH' => 'excel_match',
|
36
37
|
'MAX' => 'max',
|
37
38
|
'MID' => 'mid',
|
@@ -39,6 +40,7 @@ class MapFormulaeToRuby < MapValuesToRuby
|
|
39
40
|
'MOD' => 'mod',
|
40
41
|
'PI' => 'pi',
|
41
42
|
'PMT' => 'pmt',
|
43
|
+
'POWER' => 'power',
|
42
44
|
'PV' => 'pv',
|
43
45
|
'ROUND' => 'round',
|
44
46
|
'ROUNDDOWN' => 'rounddown',
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module ExcelFunctions
|
2
|
+
|
3
|
+
def log(a, b = 10)
|
4
|
+
a = number_argument(a)
|
5
|
+
b = number_argument(b)
|
6
|
+
|
7
|
+
return a if a.is_a?(Symbol)
|
8
|
+
return b if b.is_a?(Symbol)
|
9
|
+
|
10
|
+
return :num if a <= 0
|
11
|
+
return :num if b <= 0
|
12
|
+
|
13
|
+
Math.log(a) / Math.log(b)
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
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.1.
|
4
|
+
version: 0.1.13
|
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: 2013-08-
|
11
|
+
date: 2013-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubypeg
|
@@ -98,6 +98,7 @@ files:
|
|
98
98
|
- src/commands/excel_to_ruby.rb
|
99
99
|
- src/commands/excel_to_x.rb
|
100
100
|
- src/commands.rb
|
101
|
+
- src/compile/c/a.out
|
101
102
|
- src/compile/c/compile_named_reference_setters.rb
|
102
103
|
- src/compile/c/compile_to_c.rb
|
103
104
|
- src/compile/c/compile_to_c_header.rb
|
@@ -140,6 +141,7 @@ files:
|
|
140
141
|
- src/excel/excel_functions/left.rb
|
141
142
|
- src/excel/excel_functions/less_than.rb
|
142
143
|
- src/excel/excel_functions/less_than_or_equal.rb
|
144
|
+
- src/excel/excel_functions/log.rb
|
143
145
|
- src/excel/excel_functions/max.rb
|
144
146
|
- src/excel/excel_functions/mid.rb
|
145
147
|
- src/excel/excel_functions/min.rb
|