Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
| 2 // for details. All rights reserved. Use of this source code is governed by a | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 class SYLKProducer { | |
| 6 const SYLKProducer(); | |
| 7 | |
| 8 String listSamples() { | |
| 9 return '''[ | |
| 10 "empty", | |
| 11 "mortgage", | |
| 12 "insertTest", | |
| 13 "collatz", | |
| 14 ]'''; | |
| 15 } | |
| 16 | |
| 17 String makeExample(String id) { | |
| 18 | |
|
Dan Rice
2011/10/25 21:33:17
extra blank line
rchandia
2011/10/27 14:46:48
Done.
| |
| 19 switch (id) { | |
| 20 case 'mortgage': | |
| 21 return Strings.join(_makeMortgageExample(), '\n'); | |
| 22 | |
| 23 case 'insertTest': | |
| 24 return Strings.join(_makeInsertTest(), '\n'); | |
| 25 | |
| 26 case 'collatz': | |
| 27 return Strings.join(_makeCollatzTest(), '\n'); | |
| 28 | |
| 29 default: | |
| 30 return Strings.join(_makeEmpty(), '\n'); | |
| 31 } | |
| 32 } | |
| 33 | |
| 34 List<String> _makeEmpty() { | |
| 35 List<String> sylk = new List<String>(); | |
| 36 sylk.add('ID;P'); | |
| 37 return sylk; | |
| 38 } | |
| 39 | |
| 40 List<String> _makeCollatzTest() { | |
| 41 List<String> sylk = new List<String>(); | |
| 42 sylk.add('ID;P'); | |
| 43 sylk.add('B;X1;Y180'); | |
| 44 sylk.add("C;X1;Y1;K871"); | |
| 45 for (int row = 2; row < 180; row++) { | |
| 46 // x even ==> x / 2 | |
| 47 // x odd ==> 3 * x + 1 | |
| 48 // Note that (x - 2*trunc(x/2)) is 0 when x is even and 1 when x is odd | |
| 49 sylk.add("C;X1;Y${row};K=(R[-1]C-2*TRUNC(R[-1]C/2))*(3*R[-1]C+1)+(1-(R[-1] C-2*TRUNC(R[-1]C/2)))*(R[-1]C/2)"); | |
| 50 } | |
| 51 return sylk; | |
| 52 } | |
| 53 | |
| 54 List<String> _makeInsertTest() { | |
| 55 List<String> sylk = new List<String>(); | |
| 56 | |
| 57 sylk.add('ID;P'); | |
| 58 sylk.add('B;X6;Y3'); | |
| 59 | |
| 60 sylk.add('C;Y1;X1;K"InsertTest"'); | |
| 61 sylk.add('F;SD;FD0C'); | |
| 62 sylk.add('C;Y2;X1;K"Absolute"'); | |
| 63 sylk.add('F;SD;FD0C'); | |
| 64 sylk.add('C;Y3;X1;K"Relative"'); | |
| 65 sylk.add('F;SD;FD0C'); | |
| 66 sylk.add('C;Y1;X2;K"Fixed"'); | |
| 67 sylk.add('F;SD;FD0C'); | |
| 68 sylk.add('C;Y1;X3;K"NS to NS"'); | |
| 69 sylk.add('F;SD;FD0C'); | |
| 70 sylk.add('C;Y1;X4;K"NS to S"'); | |
| 71 sylk.add('F;SD;FD0C'); | |
| 72 sylk.add('C;Y1;X5;K"S to NS"'); | |
| 73 sylk.add('F;SD;FD0C'); | |
| 74 sylk.add('C;Y1;X6;K"S to S"'); | |
| 75 sylk.add('F;SD;FD0C'); | |
| 76 | |
| 77 sylk.add('C;Y2;X2;K1'); | |
| 78 sylk.add('F;P1;FD0C'); | |
| 79 sylk.add('C;Y3;X2;K2'); | |
| 80 sylk.add('F;P1;FD0C'); | |
| 81 | |
| 82 sylk.add('C;Y2;X3;K=(R2C2+10)'); | |
| 83 sylk.add('F;P1;FD0C'); | |
| 84 sylk.add('C;Y3;X3;K=(R[0]C[-1] + 10)'); | |
| 85 sylk.add('F;P1;FD0C'); | |
| 86 | |
| 87 sylk.add('C;Y2;X4;K=(R2C5-1000)'); | |
| 88 sylk.add('F;P1;FD0C'); | |
| 89 sylk.add('C;Y3;X4;K=(R[0]C[1] - 1000)'); | |
| 90 sylk.add('F;P1;FD0C'); | |
| 91 | |
| 92 sylk.add('C;Y2;X5;K=(R2C3+1100)'); | |
| 93 sylk.add('F;P1;FD0C'); | |
| 94 sylk.add('C;Y3;X5;K=(R[0]C[-2] + 1100)'); | |
| 95 sylk.add('F;P1;FD0C'); | |
| 96 | |
| 97 sylk.add('C;Y2;X6;K=(R2C5+10000)'); | |
| 98 sylk.add('F;P1;FD0C'); | |
| 99 sylk.add('C;Y3;X6;K=(R[0]C[-1] + 10000)'); | |
| 100 sylk.add('F;P1;FD0C'); | |
| 101 | |
| 102 sylk.add('C;Y4;X1;K"Sums Relative"'); | |
| 103 sylk.add('F;SD;FD0C'); | |
| 104 sylk.add('C;Y4;X2;K=SUM(R[-2]C[0]:R[-1]C[0])'); | |
| 105 sylk.add('F;P1;FD0C'); | |
| 106 sylk.add('C;Y4;X3;K=SUM(R[-2]C[0]:R[-1]C[0])'); | |
| 107 sylk.add('F;P1;FD0C'); | |
| 108 sylk.add('C;Y4;X4;K=SUM(R[-2]C[0]:R[-1]C[0])'); | |
| 109 sylk.add('F;P1;FD0C'); | |
| 110 sylk.add('C;Y4;X5;K=SUM(R[-2]C[0]:R[-1]C[0])'); | |
| 111 sylk.add('F;P1;FD0C'); | |
| 112 sylk.add('C;Y4;X6;K=SUM(R[-2]C[0]:R[-1]C[0])'); | |
| 113 sylk.add('F;P1;FD0C'); | |
| 114 | |
| 115 sylk.add('C;Y5;X1;K"Sums Absolute"'); | |
| 116 sylk.add('F;SD;FD0C'); | |
| 117 sylk.add('C;Y5;X2;K=SUM(B2:B3)'); | |
| 118 sylk.add('F;P1;FD0C'); | |
| 119 sylk.add('C;Y5;X3;K=SUM(C2:C3)'); | |
| 120 sylk.add('F;P1;FD0C'); | |
| 121 sylk.add('C;Y5;X4;K=SUM(D2:D3)'); | |
| 122 sylk.add('F;P1;FD0C'); | |
| 123 sylk.add('C;Y5;X5;K=SUM(E2:E3)'); | |
| 124 sylk.add('F;P1;FD0C'); | |
| 125 sylk.add('C;Y5;X6;K=SUM(F2:F3)'); | |
| 126 sylk.add('F;P1;FD0C'); | |
| 127 | |
| 128 return sylk; | |
| 129 } | |
| 130 | |
| 131 List<String> _makeMortgageExample() { | |
| 132 int years = 8; | |
| 133 int payments = years * 12; | |
| 134 List<String> sylk = new List<String>(); | |
| 135 sylk.add('ID;P'); | |
| 136 sylk.add('B;X4;Y${payments + 4}'); | |
| 137 sylk.add('C;Y1;X1;K"Loan Amount"'); | |
| 138 sylk.add('F;SD;FD0C'); | |
| 139 sylk.add('C;Y1;X2;K"Interest Rate"'); | |
| 140 sylk.add('F;SD;FD0C'); | |
| 141 sylk.add('C;Y1;X3;K"Years"'); | |
| 142 sylk.add('F;SD;FD0C'); | |
| 143 sylk.add('C;Y1;X4;K"\$/Month"'); | |
| 144 sylk.add('F;SD;FD0C'); | |
| 145 sylk.add('C;Y2;X1;K30000'); | |
| 146 sylk.add('F;P5;F\$2R'); | |
| 147 sylk.add('C;Y2;X2;K.05375'); | |
| 148 sylk.add('F;P8;F%3R'); | |
| 149 sylk.add('C;Y2;X3;K${years}'); | |
| 150 sylk.add('F;P2;FD0R'); | |
| 151 sylk.add('C;Y2;X4;K=ROUND((R2C1 * ((R2C2/12)/(1 - POWER((1 + (R2C2/12)), (-1 2 * R2C3))))), 2)'); | |
| 152 sylk.add('F;P5;F\$2R'); | |
| 153 sylk.add('C;Y3;X1;K"Payment #"'); | |
| 154 sylk.add('F;SD;FD0C'); | |
| 155 sylk.add('C;Y3;X2;K"Balance"'); | |
| 156 sylk.add('F;SD;FD0C'); | |
| 157 sylk.add('C;Y3;X3;K"Interest"'); | |
| 158 sylk.add('F;SD;FD0C'); | |
| 159 sylk.add('C;Y3;X4;K"Principal"'); | |
| 160 sylk.add('F;SD;FD0C'); | |
| 161 sylk.add('C;Y4;X1;K1'); | |
| 162 sylk.add('F;P2;FD0C'); | |
| 163 sylk.add('C;Y4;X2;K=R2C1'); | |
| 164 sylk.add('F;P5;F\$2R'); | |
| 165 sylk.add('C;Y4;X3;K=(RC[-1] * R2C2)/12'); | |
| 166 sylk.add('F;P5;F\$2R'); | |
| 167 sylk.add('C;Y4;X4;K=R2C4 - RC[-1]'); | |
| 168 sylk.add('F;P5;F\$2R'); | |
| 169 for (int j = 5; j < payments + 4; j++) { | |
| 170 sylk.add('C;Y${j};X1;K=R[-1]C + 1'); | |
| 171 sylk.add('F;P2;FD0C'); | |
| 172 sylk.add('C;Y${j};X2;K=R[-1]C - R[-1]C[2]'); | |
| 173 sylk.add('F;P5;F\$2R'); | |
| 174 sylk.add('C;Y${j};X3;K=(RC[-1] * R2C2)/12'); | |
| 175 sylk.add('F;P5;F\$2R'); | |
| 176 sylk.add('C;Y${j};X4;K=R2C4 - RC[-1]'); | |
| 177 sylk.add('F;P5;F\$2R'); | |
| 178 } | |
| 179 | |
| 180 int p3 = payments + 3; | |
| 181 int p4 = payments + 4; | |
| 182 sylk.add('C;Y${p4};X1;K"Totals"'); | |
| 183 sylk.add('F;SD;FD0C'); | |
| 184 sylk.add('C;Y${p4};X2;K=C${p4} + D${p4}'); | |
| 185 sylk.add('F;P5;F\$2R'); | |
| 186 sylk.add('C;Y${p4};X3;K=SUM(C4:C${p3})'); | |
| 187 sylk.add('F;P5;F\$2R'); | |
| 188 sylk.add('C;Y${p4};X4;K=SUM(D4:D${p3})'); | |
| 189 sylk.add('F;P5;F\$2R'); | |
| 190 return sylk; | |
| 191 } | |
| 192 } | |
| OLD | NEW |