Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Enhance the NDoc3/HtmlHelp build script to support transforming SQLite core library documentation links as necessary. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | coreDocs |
Files: | files | file ages | folders |
SHA1: |
960fde8c37759e93fa52409a88af5c95 |
User & Date: | mistachkin 2014-02-05 01:31:06.903 |
Context
2014-02-05
| ||
01:36 | Some readability improvements to the NDoc3/HtmlHelp build script. check-in: 1e20c68e20 user: mistachkin tags: coreDocs | |
01:31 | Enhance the NDoc3/HtmlHelp build script to support transforming SQLite core library documentation links as necessary. check-in: 960fde8c37 user: mistachkin tags: coreDocs | |
00:04 | Import new SQLite core docs. check-in: c221f9714d user: mistachkin tags: coreDocs | |
Changes
Changes to Doc/Extra/Core/lang_select.html.
︙ | ︙ | |||
657 658 659 660 661 662 663 | <a name="crossjoin"></a> <p><b>Side note: Special handling of CROSS JOIN.</b> There is no difference between the "INNER JOIN", "JOIN" and "," join operators. They are completely interchangeable in SQLite. The "CROSS JOIN" join operator produces the same result as the "INNER JOIN", "JOIN" and "," operators, but is | | | 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 | <a name="crossjoin"></a> <p><b>Side note: Special handling of CROSS JOIN.</b> There is no difference between the "INNER JOIN", "JOIN" and "," join operators. They are completely interchangeable in SQLite. The "CROSS JOIN" join operator produces the same result as the "INNER JOIN", "JOIN" and "," operators, but is <a href="optoverview.html#crossjoin">handled differently by the query optimizer</a> in that it prevents the query optimizer from reordering the tables in the join. An application programmer can use the CROSS JOIN operator to directly influence the algorithm that is chosen to implement the SELECT statement. Avoid using CROSS JOIN except in specific situations where manual control of the query optimizer is desired. Avoid using CROSS JOIN early in the development of an application as doing so is a <a href="http://c2.com/cgi/wiki?PrematureOptimization">premature |
︙ | ︙ |
Changes to Doc/SQLite.NET.hhc.
︙ | ︙ | |||
193 194 195 196 197 198 199 | <param name="Local" value="Core/lang_with.html"> </OBJECT> <LI> <OBJECT type="text/sitemap"> <param name="Name" value="PRAGMA"> <param name="Local" value="Core/pragma.html"> </OBJECT> <LI> <OBJECT type="text/sitemap"> | | | 193 194 195 196 197 198 199 200 201 202 203 204 | <param name="Local" value="Core/lang_with.html"> </OBJECT> <LI> <OBJECT type="text/sitemap"> <param name="Name" value="PRAGMA"> <param name="Local" value="Core/pragma.html"> </OBJECT> <LI> <OBJECT type="text/sitemap"> <param name="Name" value="Syntax Diagrams"> <param name="Local" value="Core/syntaxdiagrams.html"> </OBJECT> </UL> </BODY><HTML> |
Changes to Doc/buildChm.tcl.
︙ | ︙ | |||
22 23 24 25 26 27 28 | set file_id [open $fileName {WRONLY CREAT TRUNC}] fconfigure $file_id -encoding binary -translation binary puts -nonewline $file_id $data close $file_id return "" } | | < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | set file_id [open $fileName {WRONLY CREAT TRUNC}] fconfigure $file_id -encoding binary -translation binary puts -nonewline $file_id $data close $file_id return "" } proc escapeSubSpec { data } { regsub -all -- {&} $data {\\\&} data regsub -all -- {\\(\d+)} $data {\\\\\1} data return $data } proc readFileAsSubSpec { fileName } { return [escapeSubSpec [readFile $fileName]] } proc getFileHash { fileName } { if {[catch { exec fossil.exe sha1sum [file nativename $fileName] } result] == 0} then { return [string trim [lindex [split $result " "] 0]] } return "" } # # HACK: This procedure checks all the "href" attribute values in the specified # core documentation file. For each value, this procedure checks if the # reference conforms to one of the following general categories: # # 1. A relative reference to a named anchor within the same document. # 2. An absolute reference using HTTP or HTTPS. # 3. A relative reference to an existing local file. # 4. An absolute reference to a local file. # # Otherwise, this procedure transforms the "href" attribute value into # an absolute reference using the specified base URL. # proc transformCoreDocumentationFile { fileName url } { # # NOTE: Grab the name of the directory containing the file. # set directory [file dirname $fileName] # # NOTE: Read all the textual data from the file. # set data [readFile $fileName] # # NOTE: No replacements made yet. # set count 0 # # NOTE: Process all "href" attribute values from the data. This pattern is # not univeral; however, as of this writing (Feb 2014), the core docs # are using it consistently. # foreach {dummy href} [regexp -all -inline -nocase -- {href="(.*?)"} $data] { # # NOTE: Skip all references to other items on this page. # if {[string index $href 0] eq "#"} then { continue } # # NOTE: Skip all absolute HTTP/HTTPS references. # if {[string range $href 0 6] eq "http://" || \ [string range $href 0 7] eq "https://"} then { continue } # # NOTE: Split on the "#" character to get the file name. There are some # places within the core docs that refer to named anchors within # other files. # set parts [split $href #]; set part1 [lindex $parts 0] # # NOTE: If there is no file name part, skip the reference. # if {[string length $part1] == 0} then { continue } # # NOTE: If it does not appear to be relative, skip it. # if {[file pathtype $part1] ne "relative"} then { continue } # # NOTE: If the referenced file name exists locally, skip it. # if {[file exists [file join $directory $part1]]} then { continue } # # NOTE: Replace the reference with an absolute reference using the base # URL specified by the caller, escaping it as necessary for use # with [regsub]. # set pattern "***=$dummy"; # NOTE: Use literal string syntax. set subSpec "href=\"[escapeSubSpec $url$href]\"" # # NOTE: Perform the replacements, if any, keeping track of how many were # done. # incr count [regsub -all -- $pattern $data $subSpec data] } # # NOTE: If some replacements were performed on the data from the file, then # overwrite it with the new data; otherwise, issue a warning. # if {$count > 0} then { writeFile $fileName $data } else { puts stdout "*WARNING* File \"$fileName\" does not match: href=\"(.*?)\"" } } # # HACK: Copy our local [fixed] copy of the MSDN documenter assembly into the # installed location of NDoc3, if necessary. Actually copying the file # will require elevated administrator privileges; otherwise, it will # fail. Any errors encountered while copying the file are reported via # the console; however, they will not halt further processing (i.e. the |
︙ | ︙ | |||
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | # # TODO: If the NDoc version number ever changes, the next line of code will # probably need to be updated. # set outputPath [file join Output] set temporaryPath [file join $outputPath ndoc3_msdn_temp] if {[file isdirectory $nDocExtPath]} then { copyMsdnDocumenter $nDocExtPath $nDocInstPath } set code [catch {exec [file join $nDocInstPath bin NDoc3Console.exe] \ "-project=[file nativename $projectFile]"} result] puts stdout $result; if {$code != 0} then {exit $code} | > > > > > > > > > > > > > | > > | | | 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 | # # TODO: If the NDoc version number ever changes, the next line of code will # probably need to be updated. # set outputPath [file join Output] set temporaryPath [file join $outputPath ndoc3_msdn_temp] set corePath [file join $temporaryPath Core] set providerPath [file join $temporaryPath Provider] if {[file isdirectory $nDocExtPath]} then { copyMsdnDocumenter $nDocExtPath $nDocInstPath } set code [catch {exec [file join $nDocInstPath bin NDoc3Console.exe] \ "-project=[file nativename $projectFile]"} result] puts stdout $result; if {$code != 0} then {exit $code} foreach fileName [glob -nocomplain [file join $corePath *.html]] { set fileName [file join $path $fileName] if {![file isfile $fileName]} then { puts stdout "Cannot find core file: $fileName" exit 1 } transformCoreDocumentationFile $fileName http://www.sqlite.org/ } set providerFileNames [list \ [file join $temporaryPath SQLite.NET.hhp] \ [file join $temporaryPath SQLite.NET.hhc]] foreach fileName [glob -nocomplain [file join $providerPath *.html]] { lappend providerFileNames $fileName } set patterns(.hhc,1) {<!--This document contains Table of Contents information\ for the HtmlHelp compiler\.--><UL>} set patterns(.hhp,1) {Default topic=~System\.Data\.SQLite\.html} |
︙ | ︙ | |||
203 204 205 206 207 208 209 | set subSpecs(.html,3) {78dfe2yb} set subSpecs(.html,4) {"\1~Overloads.html"} set subSpecs(.html,5) {"\1~Overloads.html"} set subSpecs(.html,6) {"\1~Overloads.html"} set subSpecs(.html,7) {"\1~Overloads.html"} set subSpecs(.html,8) {"\1~Overloads.html"} | | | | 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 | set subSpecs(.html,3) {78dfe2yb} set subSpecs(.html,4) {"\1~Overloads.html"} set subSpecs(.html,5) {"\1~Overloads.html"} set subSpecs(.html,6) {"\1~Overloads.html"} set subSpecs(.html,7) {"\1~Overloads.html"} set subSpecs(.html,8) {"\1~Overloads.html"} foreach fileName $providerFileNames { set fileName [file join $path $fileName] # # NOTE: Make sure the file we need actually exists. # if {![file isfile $fileName]} then { puts stdout "Cannot find file: $fileName" exit 1 |
︙ | ︙ |