| OLD | NEW |
| 1 /** | 1 /** |
| 2 * Creates database.html, examples.html, and obsolete.html. | 2 * Creates database.html, examples.html, and obsolete.html. |
| 3 */ | 3 */ |
| 4 | 4 |
| 5 library prettyPrint; | 5 library prettyPrint; |
| 6 | 6 |
| 7 import 'dart:io'; | 7 import 'dart:io'; |
| 8 import 'dart:json' as json; | 8 import 'dart:json' as json; |
| 9 import 'util.dart'; | 9 import 'util.dart'; |
| 10 | 10 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 /** | 24 /** |
| 25 * Add all missing members to the string output and return the number of | 25 * Add all missing members to the string output and return the number of |
| 26 * missing members. | 26 * missing members. |
| 27 */ | 27 */ |
| 28 void addMissingHelper(String propType) { | 28 void addMissingHelper(String propType) { |
| 29 Map expected = allProps[type][propType]; | 29 Map expected = allProps[type][propType]; |
| 30 if (expected != null) { | 30 if (expected != null) { |
| 31 for(final name in sortStringCollection(expected.keys)) { | 31 for(final name in sortStringCollection(expected.keys)) { |
| 32 if (!members.containsKey(name)) { | 32 if (!members.containsKey(name)) { |
| 33 total++; | 33 total++; |
| 34 sb.add(""" | 34 sb.write(""" |
| 35 <tr class="missing"> | 35 <tr class="missing"> |
| 36 <td>$name</td> | 36 <td>$name</td> |
| 37 <td></td> | 37 <td></td> |
| 38 <td>Could not find documentation for $propType</td> | 38 <td>Could not find documentation for $propType</td> |
| 39 </tr> | 39 </tr> |
| 40 """); | 40 """); |
| 41 } | 41 } |
| 42 } | 42 } |
| 43 } | 43 } |
| 44 } | 44 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 64 final sbSkipped = new StringBuffer(); | 64 final sbSkipped = new StringBuffer(); |
| 65 final sbAllExamples = new StringBuffer(); | 65 final sbAllExamples = new StringBuffer(); |
| 66 | 66 |
| 67 // Table rows for all obsolete members. | 67 // Table rows for all obsolete members. |
| 68 final sbObsolete = new StringBuffer(); | 68 final sbObsolete = new StringBuffer(); |
| 69 // Main documentation file. | 69 // Main documentation file. |
| 70 final sb = new StringBuffer(); | 70 final sb = new StringBuffer(); |
| 71 | 71 |
| 72 // TODO(jacobr): switch to using a real template system instead of string | 72 // TODO(jacobr): switch to using a real template system instead of string |
| 73 // interpolation combined with StringBuffers. | 73 // interpolation combined with StringBuffers. |
| 74 sb.add(""" | 74 sb.write(""" |
| 75 <html> | 75 <html> |
| 76 <head> | 76 <head> |
| 77 <style type="text/css"> | 77 <style type="text/css"> |
| 78 body { | 78 body { |
| 79 background-color: #eee; | 79 background-color: #eee; |
| 80 margin: 10px; | 80 margin: 10px; |
| 81 font: 14px/1.428 "Lucida Grande", "Lucida Sans Unicode", Lucida, | 81 font: 14px/1.428 "Lucida Grande", "Lucida Sans Unicode", Lucida, |
| 82 Arial, Helvetica, sans-serif; | 82 Arial, Helvetica, sans-serif; |
| 83 } | 83 } |
| 84 | 84 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 <body> | 149 <body> |
| 150 <h1>Doc Dump</h1> | 150 <h1>Doc Dump</h1> |
| 151 <ul> | 151 <ul> |
| 152 <li><a href="#dart_summary">Summary</a></li> | 152 <li><a href="#dart_summary">Summary</a></li> |
| 153 </li> | 153 </li> |
| 154 """); | 154 """); |
| 155 for (String type in sortStringCollection(database.keys)) { | 155 for (String type in sortStringCollection(database.keys)) { |
| 156 final entry = database[type]; | 156 final entry = database[type]; |
| 157 if (entry == null || entry.containsKey('skipped')) { | 157 if (entry == null || entry.containsKey('skipped')) { |
| 158 numSkipped++; | 158 numSkipped++; |
| 159 sbSkipped.add(""" | 159 sbSkipped.write(""" |
| 160 <li id="$type"> | 160 <li id="$type"> |
| 161 <a target="_blank" href="http://www.google.com/cse?cx=01719397256594783026
6%3Awpqsk6dy6ee&ie=UTF-8&q=$type"> | 161 <a target="_blank" href="http://www.google.com/cse?cx=01719397256594783026
6%3Awpqsk6dy6ee&ie=UTF-8&q=$type"> |
| 162 $type | 162 $type |
| 163 </a> | 163 </a> |
| 164 -- | 164 -- |
| 165 Title: ${entry == null ? "???" : entry["title"]} -- Issue: | 165 Title: ${entry == null ? "???" : entry["title"]} -- Issue: |
| 166 ${entry == null ? "???" : entry['cause']} | 166 ${entry == null ? "???" : entry['cause']} |
| 167 -- | 167 -- |
| 168 <a target="_blank" href="${entry == null ? "???" : entry["srcUrl"]}"> | 168 <a target="_blank" href="${entry == null ? "???" : entry["srcUrl"]}"> |
| 169 scraped url | 169 scraped url |
| 170 </a> | 170 </a> |
| 171 </li>"""); | 171 </li>"""); |
| 172 continue; | 172 continue; |
| 173 } | 173 } |
| 174 matchedTypes.add(type); | 174 matchedTypes.add(type); |
| 175 numGen++; | 175 numGen++; |
| 176 StringBuffer sbSections = new StringBuffer(); | 176 StringBuffer sbSections = new StringBuffer(); |
| 177 StringBuffer sbMembers = new StringBuffer(); | 177 StringBuffer sbMembers = new StringBuffer(); |
| 178 StringBuffer sbExamples = new StringBuffer(); | 178 StringBuffer sbExamples = new StringBuffer(); |
| 179 if (entry.containsKey("members")) { | 179 if (entry.containsKey("members")) { |
| 180 Map members = getMembersMap(entry); | 180 Map members = getMembersMap(entry); |
| 181 sbMembers.add(""" | 181 sbMembers.write(""" |
| 182 <div class="members"> | 182 <div class="members"> |
| 183 <h3><span class="debug">[dart]</span> Members</h3> | 183 <h3><span class="debug">[dart]</span> Members</h3> |
| 184 <table> | 184 <table> |
| 185 <tbody> | 185 <tbody> |
| 186 <tr> | 186 <tr> |
| 187 <th>Name</th><th>Description</th><th>IDL</th><th>Status</th> | 187 <th>Name</th><th>Description</th><th>IDL</th><th>Status</th> |
| 188 </tr> | 188 </tr> |
| 189 """); | 189 """); |
| 190 for (String name in sortStringCollection(members.keys)) { | 190 for (String name in sortStringCollection(members.keys)) { |
| 191 Map memberData = members[name]; | 191 Map memberData = members[name]; |
| 192 bool unknown = !hasAny(type, name); | 192 bool unknown = !hasAny(type, name); |
| 193 StringBuffer classes = new StringBuffer(); | 193 StringBuffer classes = new StringBuffer(); |
| 194 if (unknown) classes.add("unknown "); | 194 if (unknown) classes.write("unknown "); |
| 195 if (unknown) { | 195 if (unknown) { |
| 196 numExtraMethods++; | 196 numExtraMethods++; |
| 197 } else { | 197 } else { |
| 198 numFoundMethods++; | 198 numFoundMethods++; |
| 199 } | 199 } |
| 200 | 200 |
| 201 final sbMember = new StringBuffer(); | 201 final sbMember = new StringBuffer(); |
| 202 | 202 |
| 203 if (memberData.containsKey('url')) { | 203 if (memberData.containsKey('url')) { |
| 204 sbMember.add(""" | 204 sbMember.write(""" |
| 205 <td><a href="${memberData['url']}">$name</a></td> | 205 <td><a href="${memberData['url']}">$name</a></td> |
| 206 """); | 206 """); |
| 207 } else { | 207 } else { |
| 208 sbMember.add(""" | 208 sbMember.write(""" |
| 209 <td>$name</td> | 209 <td>$name</td> |
| 210 """); | 210 """); |
| 211 } | 211 } |
| 212 sbMember.add(""" | 212 sbMember.write(""" |
| 213 <td>${memberData['help']}</td> | 213 <td>${memberData['help']}</td> |
| 214 <td> | 214 <td> |
| 215 <pre>${orEmpty(memberData['idl'])}</pre> | 215 <pre>${orEmpty(memberData['idl'])}</pre> |
| 216 </td> | 216 </td> |
| 217 <td>${memberData['obsolete'] == true ? "Obsolete" : ""}</td> | 217 <td>${memberData['obsolete'] == true ? "Obsolete" : ""}</td> |
| 218 """); | 218 """); |
| 219 if (memberData['obsolete'] == true) { | 219 if (memberData['obsolete'] == true) { |
| 220 sbObsolete.add("<tr class='$classes'><td>$type</td>$sbMember</tr>"); | 220 sbObsolete.write("<tr class='$classes'><td>$type</td>$sbMember</tr>"); |
| 221 } | 221 } |
| 222 sbMembers.add("<tr class='$classes'>$sbMember</tr>"); | 222 sbMembers.write("<tr class='$classes'>$sbMember</tr>"); |
| 223 } | 223 } |
| 224 | 224 |
| 225 numMissingMethods += addMissing(sbMembers, type, members); | 225 numMissingMethods += addMissing(sbMembers, type, members); |
| 226 | 226 |
| 227 sbMembers.add(""" | 227 sbMembers.write(""" |
| 228 </tbody> | 228 </tbody> |
| 229 </table> | 229 </table> |
| 230 </div> | 230 </div> |
| 231 """); | 231 """); |
| 232 } | 232 } |
| 233 for (String sectionName in | 233 for (String sectionName in |
| 234 ["summary", "constructor", "compatibility", "specification", | 234 ["summary", "constructor", "compatibility", "specification", |
| 235 "seeAlso"]) { | 235 "seeAlso"]) { |
| 236 if (entry.containsKey(sectionName)) { | 236 if (entry.containsKey(sectionName)) { |
| 237 sbSections.add(""" | 237 sbSections.write(""" |
| 238 <div class="$sectionName"> | 238 <div class="$sectionName"> |
| 239 <h3><span class="debug">[Dart]</span> $sectionName</h3> | 239 <h3><span class="debug">[Dart]</span> $sectionName</h3> |
| 240 ${entry[sectionName]} | 240 ${entry[sectionName]} |
| 241 </div> | 241 </div> |
| 242 """); | 242 """); |
| 243 } | 243 } |
| 244 } | 244 } |
| 245 if (entry.containsKey("links")) { | 245 if (entry.containsKey("links")) { |
| 246 sbSections.add(""" | 246 sbSections.write(""" |
| 247 <div class="links"> | 247 <div class="links"> |
| 248 <h3><span class="debug">[Dart]</span> Specification</h3> | 248 <h3><span class="debug">[Dart]</span> Specification</h3> |
| 249 <ul> | 249 <ul> |
| 250 """); | 250 """); |
| 251 List links = entry["links"]; | 251 List links = entry["links"]; |
| 252 for (Map link in links) { | 252 for (Map link in links) { |
| 253 » sbSections.add(""" | 253 » sbSections.write(""" |
| 254 <li><a href="${link['href']}">${link['title']}</a></li> | 254 <li><a href="${link['href']}">${link['title']}</a></li> |
| 255 """); | 255 """); |
| 256 } | 256 } |
| 257 sbSections.add(""" | 257 sbSections.write(""" |
| 258 </ul> | 258 </ul> |
| 259 </div> | 259 </div> |
| 260 """); | 260 """); |
| 261 } | 261 } |
| 262 if (entry.containsKey("examples")) { | 262 if (entry.containsKey("examples")) { |
| 263 for (String example in entry["examples"]) { | 263 for (String example in entry["examples"]) { |
| 264 » sbExamples.add(""" | 264 » sbExamples.write(""" |
| 265 <div class="example"> | 265 <div class="example"> |
| 266 <h3><span class="debug">[Dart]</span> Example</h3> | 266 <h3><span class="debug">[Dart]</span> Example</h3> |
| 267 $example | 267 $example |
| 268 </div> | 268 </div> |
| 269 """); | 269 """); |
| 270 } | 270 } |
| 271 } | 271 } |
| 272 | 272 |
| 273 String title = entry['title']; | 273 String title = entry['title']; |
| 274 if (title != type) { | 274 if (title != type) { |
| 275 title = '<h4>Dart type: $type</h4><h2>$title</h2>'; | 275 title = '<h4>Dart type: $type</h4><h2>$title</h2>'; |
| 276 } else { | 276 } else { |
| 277 title = '<h2>$title</h2>'; | 277 title = '<h2>$title</h2>'; |
| 278 } | 278 } |
| 279 sb.add(""" | 279 sb.write(""" |
| 280 <div class='type' id="$type"> | 280 <div class='type' id="$type"> |
| 281 <a href='${entry['srcUrl']}'>$title</a> | 281 <a href='${entry['srcUrl']}'>$title</a> |
| 282 $sbSections | 282 $sbSections |
| 283 $sbExamples | 283 $sbExamples |
| 284 $sbMembers | 284 $sbMembers |
| 285 </div> | 285 </div> |
| 286 """); | 286 """); |
| 287 if (sbExamples.length > 0) { | 287 if (sbExamples.length > 0) { |
| 288 sbAllExamples.add(""" | 288 sbAllExamples.write(""" |
| 289 <div class='type' id="$type"> | 289 <div class='type' id="$type"> |
| 290 <a href='${entry['srcUrl']}'>$title</a> | 290 <a href='${entry['srcUrl']}'>$title</a> |
| 291 $sbExamples | 291 $sbExamples |
| 292 </div> | 292 </div> |
| 293 """); | 293 """); |
| 294 } | 294 } |
| 295 } | 295 } |
| 296 | 296 |
| 297 for (String type in sortStringCollection(allProps.keys)) { | 297 for (String type in sortStringCollection(allProps.keys)) { |
| 298 if (!matchedTypes.contains(type) && | 298 if (!matchedTypes.contains(type) && |
| 299 !database.containsKey(type)) { | 299 !database.containsKey(type)) { |
| 300 numSkipped++; | 300 numSkipped++; |
| 301 sbSkipped.add(""" | 301 sbSkipped.write(""" |
| 302 <li class="unknown" id="$type"> | 302 <li class="unknown" id="$type"> |
| 303 <a target="_blank" href="http://www.google.com/cse?cx=01719397256594783026
6%3Awpqsk6dy6ee&ie=UTF-8&q=$type"> | 303 <a target="_blank" href="http://www.google.com/cse?cx=01719397256594783026
6%3Awpqsk6dy6ee&ie=UTF-8&q=$type"> |
| 304 $type | 304 $type |
| 305 </a> | 305 </a> |
| 306 </li> | 306 </li> |
| 307 """); | 307 """); |
| 308 } | 308 } |
| 309 } | 309 } |
| 310 | 310 |
| 311 sb.add(""" | 311 sb.write(""" |
| 312 <div id="#dart_summary"> | 312 <div id="#dart_summary"> |
| 313 <h2>Summary</h2> | 313 <h2>Summary</h2> |
| 314 <h3> | 314 <h3> |
| 315 Generated docs for $numGen classes out of a possible | 315 Generated docs for $numGen classes out of a possible |
| 316 ${allProps.keys.length} | 316 ${allProps.keys.length} |
| 317 </h3> | 317 </h3> |
| 318 <h3>Found documentation for $numFoundMethods methods listed in WebKit</h3> | 318 <h3>Found documentation for $numFoundMethods methods listed in WebKit</h3> |
| 319 <h3> | 319 <h3> |
| 320 Found documentation for $numExtraMethods methods not listed in WebKit | 320 Found documentation for $numExtraMethods methods not listed in WebKit |
| 321 </h3> | 321 </h3> |
| 322 <h3> | 322 <h3> |
| 323 Unable to find documentation for $numMissingMethods methods present in | 323 Unable to find documentation for $numMissingMethods methods present in |
| 324 WebKit | 324 WebKit |
| 325 </h3> | 325 </h3> |
| 326 <h3> | 326 <h3> |
| 327 Skipped generating documentation for $numSkipped classes due to no | 327 Skipped generating documentation for $numSkipped classes due to no |
| 328 plausible matching files | 328 plausible matching files |
| 329 </h3> | 329 </h3> |
| 330 <ul> | 330 <ul> |
| 331 $sbSkipped | 331 $sbSkipped |
| 332 </ul> | 332 </ul> |
| 333 </div> | 333 </div> |
| 334 """); | 334 """); |
| 335 sb.add(""" | 335 sb.write(""" |
| 336 </body> | 336 </body> |
| 337 </html> | 337 </html> |
| 338 """); | 338 """); |
| 339 | 339 |
| 340 writeFileSync("output/database.html", sb.toString()); | 340 writeFileSync("output/database.html", sb.toString()); |
| 341 | 341 |
| 342 writeFileSync("output/examples.html", """ | 342 writeFileSync("output/examples.html", """ |
| 343 <html> | 343 <html> |
| 344 <head> | 344 <head> |
| 345 <style type="text/css"> | 345 <style type="text/css"> |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 <th>IDL</th> | 421 <th>IDL</th> |
| 422 <th>Status</th> | 422 <th>Status</th> |
| 423 </tr> | 423 </tr> |
| 424 $sbObsolete | 424 $sbObsolete |
| 425 </tbody> | 425 </tbody> |
| 426 </table> | 426 </table> |
| 427 </body> | 427 </body> |
| 428 </html> | 428 </html> |
| 429 """); | 429 """); |
| 430 } | 430 } |
| OLD | NEW |