OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 /** | 5 /** |
6 * To generate docs for a library, run this script with the path to an | 6 * To generate docs for a library, run this script with the path to an |
7 * entrypoint .dart file, like: | 7 * entrypoint .dart file, like: |
8 * | 8 * |
9 * $ dart dartdoc.dart foo.dart | 9 * $ dart dartdoc.dart foo.dart |
10 * | 10 * |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 | 312 |
313 /** The member that we're currently generating docs for. */ | 313 /** The member that we're currently generating docs for. */ |
314 MemberMirror _currentMember; | 314 MemberMirror _currentMember; |
315 | 315 |
316 /** The path to the file currently being written to, relative to [outdir]. */ | 316 /** The path to the file currently being written to, relative to [outdir]. */ |
317 Path _filePath; | 317 Path _filePath; |
318 | 318 |
319 /** The file currently being written to. */ | 319 /** The file currently being written to. */ |
320 StringBuffer _file; | 320 StringBuffer _file; |
321 | 321 |
322 /** | |
323 * The temporary directory used for this instance of Dartdoc. | |
324 * Call [cleanup] to delete it. | |
325 */ | |
326 Directory _tempDir; | |
327 | |
328 int _totalLibraries = 0; | 322 int _totalLibraries = 0; |
329 int _totalTypes = 0; | 323 int _totalTypes = 0; |
330 int _totalMembers = 0; | 324 int _totalMembers = 0; |
331 | 325 |
332 int get totalLibraries => _totalLibraries; | 326 int get totalLibraries => _totalLibraries; |
333 int get totalTypes => _totalTypes; | 327 int get totalTypes => _totalTypes; |
334 int get totalMembers => _totalMembers; | 328 int get totalMembers => _totalMembers; |
335 | 329 |
336 // Check if the compilation has started and finished. | 330 // Check if the compilation has started and finished. |
337 bool _started = false; | 331 bool _started = false; |
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 /** | 776 /** |
783 * Walks the libraries and creates a JSON object containing the data needed | 777 * Walks the libraries and creates a JSON object containing the data needed |
784 * to generate navigation for them. | 778 * to generate navigation for them. |
785 */ | 779 */ |
786 void docNavigationJson() { | 780 void docNavigationJson() { |
787 startFile('nav.json'); | 781 startFile('nav.json'); |
788 writeln(json.stringify(createNavigationInfo())); | 782 writeln(json.stringify(createNavigationInfo())); |
789 endFile(); | 783 endFile(); |
790 } | 784 } |
791 | 785 |
792 /// Whether dartdoc is running from within the Dart SDK or the | |
793 /// Dart source repository. | |
794 bool get runningFromSdk => | |
795 pathos.extension(new Options().script) == '.snapshot'; | |
796 | |
797 /// Gets the path to the root directory of the SDK. | |
798 String get rootDirectory => | |
799 pathos.dirname(pathos.dirname(new Options().executable)); | |
800 | |
801 /// Gets the path to the dartdoc directory normalized for running in different | |
802 /// places. | |
803 String get normalizedDartdocPath => runningFromSdk ? | |
804 pathos.join(rootDirectory, 'lib', '_internal', 'dartdoc') : | |
805 dartdocPath.toString(); | |
806 | |
807 /// The path to the temporary directory in the SDK. | |
808 // TODO(amouravski): Remove this and use a REAL temporary directory. | |
809 String get tempPath => pathos.join(normalizedDartdocPath, 'tmp'); | |
810 | |
811 void docNavigationDart() { | 786 void docNavigationDart() { |
812 _tempDir = new Directory(tempPath); | 787 final dir = new Directory.fromPath(tmpPath); |
813 if (!_tempDir.existsSync()) { | 788 if (!dir.existsSync()) { |
814 // TODO(3914): Hack to avoid 'file already exists' exception | 789 // TODO(3914): Hack to avoid 'file already exists' exception |
815 // thrown due to invalid result from dir.existsSync() (probably due to | 790 // thrown due to invalid result from dir.existsSync() (probably due to |
816 // race conditions). | 791 // race conditions). |
817 try { | 792 try { |
818 _tempDir.createSync(); | 793 dir.createSync(); |
819 } on DirectoryIOException catch (e) { | 794 } on DirectoryIOException catch (e) { |
820 // Ignore. | 795 // Ignore. |
821 } | 796 } |
822 } | 797 } |
823 String jsonString = json.stringify(createNavigationInfo()); | 798 String jsonString = json.stringify(createNavigationInfo()); |
824 String dartString = jsonString.replaceAll(r"$", r"\$"); | 799 String dartString = jsonString.replaceAll(r"$", r"\$"); |
825 | 800 final filePath = tmpPath.append('nav.dart'); |
826 var navPath = pathos.join(tempPath, 'nav.dart'); | 801 writeString(new File.fromPath(filePath), |
827 writeString(new File(navPath), | |
828 '''part of client; | 802 '''part of client; |
829 get json => $dartString;'''); | 803 get json => $dartString;'''); |
830 } | 804 } |
831 | 805 |
| 806 Path get tmpPath => dartdocPath.append('tmp'); |
| 807 |
832 void cleanup() { | 808 void cleanup() { |
833 if (_tempDir.existsSync()) { | 809 final dir = new Directory.fromPath(tmpPath); |
834 _tempDir.deleteSync(recursive: true); | 810 if (dir.existsSync()) { |
| 811 dir.deleteSync(recursive: true); |
835 } | 812 } |
836 } | 813 } |
837 | 814 |
838 List createNavigationInfo() { | 815 List createNavigationInfo() { |
839 final libraryList = []; | 816 final libraryList = []; |
840 for (final library in _sortedLibraries) { | 817 for (final library in _sortedLibraries) { |
841 docLibraryNavigationJson(library, libraryList); | 818 docLibraryNavigationJson(library, libraryList); |
842 } | 819 } |
843 return libraryList; | 820 return libraryList; |
844 } | 821 } |
(...skipping 1455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2300 return ''' | 2277 return ''' |
2301 <div class="mdn"> | 2278 <div class="mdn"> |
2302 $mdnComment | 2279 $mdnComment |
2303 <div class="mdn-note"><a href="$mdnUrl">from MDN</a></div> | 2280 <div class="mdn-note"><a href="$mdnUrl">from MDN</a></div> |
2304 </div> | 2281 </div> |
2305 '''; | 2282 '''; |
2306 } | 2283 } |
2307 | 2284 |
2308 String toString() => mdnComment; | 2285 String toString() => mdnComment; |
2309 } | 2286 } |
OLD | NEW |