diff options
| author | Misko Hevery | 2010-12-23 00:44:27 +0100 |
|---|---|---|
| committer | Misko Hevery | 2011-01-10 11:50:11 -0800 |
| commit | 4f22d6866c052fb5b770ce4f377cecacacd9e6d8 (patch) | |
| tree | 6bdb1c5eb70cfd7e6bcf143c121c53025a0489a4 /docs/src/templates/doc_widgets.js | |
| parent | aab3df7aeaf79908e8b6212288b283adb42b1ce6 (diff) | |
| download | angular.js-4f22d6866c052fb5b770ce4f377cecacacd9e6d8.tar.bz2 | |
complete rewrite of documentation generation
- romeved mustache.js
- unified templates
- improved testability of the code
Diffstat (limited to 'docs/src/templates/doc_widgets.js')
| -rw-r--r-- | docs/src/templates/doc_widgets.js | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/docs/src/templates/doc_widgets.js b/docs/src/templates/doc_widgets.js new file mode 100644 index 00000000..b119e326 --- /dev/null +++ b/docs/src/templates/doc_widgets.js @@ -0,0 +1,71 @@ +(function(){ + + var angularJsUrl; + var scripts = document.getElementsByTagName("script"); + var filename = /(.*\/)angular([^\/]*)/; + for(var j = 0; j < scripts.length; j++) { + var src = scripts[j].src; + if (src && src.match(filename)) { + angularJsUrl = src; + } + } + + + var HTML_TEMPLATE = + '<!doctype html>\n' + + '<html xmlns:ng="http://angularjs.org">\n' + + ' <script type="text/javascript" ng:autobind\n' + + ' src="' + angularJsUrl + '"></script>\n' + + ' <body>\n' + + '_HTML_SOURCE_\n' + + ' </body>\n' + + '</html>'; + + angular.widget('doc:example', function(element){ + this.descend(true); //compile the example code + element.hide(); + + var example = element.find('doc\\:source').eq(0), + exampleSrc = example.text(), + scenario = element.find('doc\\:scenario').eq(0); + + var code = indent(exampleSrc); + var tabs = angular.element( + '<ul class="doc-example">' + + '<li class="doc-example-heading"><h3>Source</h3></li>' + + '<li class="doc-example-source" ng:non-bindable>' + + '<pre class="brush: js; html-script: true; highlight: [' + + code.hilite + ']; toolbar: false;"></pre></li>' + + '<li class="doc-example-heading"><h3>Live Preview</h3></li>' + + '<li class="doc-example-live">' + exampleSrc +'</li>' + + '<li class="doc-example-heading"><h3>Scenario Test</h3></li>' + + '<li class="doc-example-scenario"><pre class="brush: js">' + scenario.text() + '</pre></li>' + + '</ul>'); + + tabs.find('li.doc-example-source > pre').text(HTML_TEMPLATE.replace('_HTML_SOURCE_', code.html)); + + element.html(''); + element.append(tabs); + element.show(); + + var script = (exampleSrc.match(/<script[^\>]*>([\s\S]*)<\/script>/) || [])[1] || ''; + try { + eval(script); + } catch (e) { + alert(e); + } + }); + + function indent(text) { + var lines = text.split(/\n/); + var lineNo = []; + while (lines[0].match(/^\s*$/)) lines.shift(); + while (lines[lines.length - 1].match(/^\s*$/)) lines.pop(); + for ( var i = 0; i < lines.length; i++) { + lines[i] = ' ' + lines[i]; + lineNo.push(6 + i); + } + return {html: lines.join('\n'), hilite: lineNo.join(',') }; + }; + +})();
\ No newline at end of file |
