(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
//jQuery find() methods in this widget contain primitive selectors on purpose so that we can use
//jqlite instead. jqlite's find() method currently supports onlt getElementsByTagName!
var example = element.find('pre').eq(0), //doc-source
exampleSrc = example.text(),
jsfiddle = example.attr('jsfiddle') || true,
scenario = element.find('pre').eq(1); //doc-scenario
var code = indent(exampleSrc);
var tabHtml =
'
' +
'
Source
' +
'
' +
jsFiddleButton(jsfiddle) + // may or may not have value
'
' +
'
Live Preview
' +
'
' + exampleSrc +'
';
if (scenario.text()) {
tabHtml +=
'
Scenario Test
' +
'
' + scenario.text() + '
';
}
tabHtml +=
'
';
var tabs = angular.element(tabHtml);
tabs.find('li').eq(1).find('pre').text(HTML_TEMPLATE.replace('_HTML_SOURCE_', code.html));
element.html('');
element.append(tabs);
var script = (exampleSrc.match(/\n\n' +
'\n\n' +
fiddleSrc +
'' +
'' +
'';
} else {
//use existing fiddle
fiddleUrl = "http://jsfiddle.net" + jsfiddle;
return '';
}
}
return '';
}
});
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(',') };
};
var HTML_TPL =
'