(function(){ var angularJsUrl; var scripts = document.getElementsByTagName("script"); var angularJsRegex = /^(|.*\/)angular(-.*?)?(\.min)?.js(\?[^#]*)?(#(.*))?$/; for(var j = 0; j < scripts.length; j++) { var src = scripts[j].src; if (src && src.match(angularJsRegex)) { angularJsUrl = src.replace('docs.angularjs.org', 'code.angularjs.org'); continue; } } var HTML_TEMPLATE = '\n' + '\n' + ' \n' + ' \n' + '_HTML_SOURCE_\n' + ' \n' + ''; angular.widget('doc:example', function(element){ this.descend(true); //compile the example code element.hide(); var example = element.find('pre.doc-source').eq(0), exampleSrc = example.text(), scenario = element.find('pre.doc-scenario').eq(0); var code = indent(exampleSrc); var tabHtml = ''; var tabs = angular.element(tabHtml); 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(/]*>([\s\S]*)<\/script>/) || [])[1] || ''; try { eval(script); } catch (e) { alert(e); } }); function indent(text) { if (!text) return text; var lines = text.split(/\r?\n/); var lineNo = []; // remove any leading blank lines while (lines[0].match(/^\s*$/)) lines.shift(); // remove any trailing blank lines while (lines[lines.length - 1].match(/^\s*$/)) lines.pop(); var minIndent = 999; for ( var i = 0; i < lines.length; i++) { var line = lines[0]; var indent = line.match(/^\s*/)[0]; if (indent !== line && indent.length < minIndent) { minIndent = indent.length; } } for ( var i = 0; i < lines.length; i++) { lines[i] = ' ' + lines[i].substring(minIndent); lineNo.push(5 + i); } return {html: lines.join('\n'), hilite: lineNo.join(',') }; }; })();