diff --git a/docs/content/guide/dev_guide.services.$location.ngdoc b/docs/content/guide/dev_guide.services.$location.ngdoc index 5bce8b0c4fbc..5174751669e7 100644 --- a/docs/content/guide/dev_guide.services.$location.ngdoc +++ b/docs/content/guide/dev_guide.services.$location.ngdoc @@ -369,8 +369,10 @@ redirect to regular / hashbang url, as this conversion happens only during parsi In this examples we use `` - + + + + # Caveats diff --git a/docs/spec/ngdocSpec.js b/docs/spec/ngdocSpec.js index 72ad69ff4442..367f91b4fbbb 100644 --- a/docs/spec/ngdocSpec.js +++ b/docs/spec/ngdocSpec.js @@ -89,6 +89,14 @@ describe('ngdoc', function() { '
\n<>\n

after

'); }); + it('should preserve the source attribute', function() { + var doc = new Doc('@description before ' + + 'lala after'); + doc.parse(); + expect(doc.description).toContain('

before

' + + '
lala

after

'); + }); + it('should preserve the jsfiddle attribute', function() { var doc = new Doc('@description before ' + 'lala after'); diff --git a/docs/src/ngdoc.js b/docs/src/ngdoc.js index c5da18e68d85..562144b517c2 100644 --- a/docs/src/ngdoc.js +++ b/docs/src/ngdoc.js @@ -117,9 +117,9 @@ Doc.prototype = { ''; }); } else if (isDocWidget('example')) { - text = text.replace(/([\s\S]*)<\/doc:source>/mi, - function(_, jsfiddle, content){ - return '
' +
+        text = text.replace(/]*)?>([\s\S]*)<\/doc:source>/mi,
+          function(_, attrs, content){
+            return '
' +
                       htmlEscape(content) +
                    '
'; }); @@ -138,11 +138,11 @@ Doc.prototype = { if (!isFullUrl) self.links.push(absUrl); - return '' - + (isAngular ? '' : '') - + (title || url).replace(/\n/g, ' ') - + (isAngular ? '' : '') - + ''; + return '' + + (isAngular ? '' : '') + + (title || url).replace(/\n/g, ' ') + + (isAngular ? '' : '') + + ''; }); text = new Showdown.converter().makeHtml(text); } @@ -157,7 +157,7 @@ Doc.prototype = { var match; var self = this; self.text.split(NEW_LINE).forEach(function(line){ - if (match = line.match(/^\s*@(\w+)(\s+(.*))?/)) { + if ((match = line.match(/^\s*@(\w+)(\s+(.*))?/))) { // we found @name ... // if we have existing name flush(); @@ -172,9 +172,9 @@ Doc.prototype = { }); flush(); this.shortName = (this.name || '').split(/[\.#]/).pop(); - this.id = this.id // if we have an id just use it - || (((this.file||'').match(/.*\/([^\/]*)\.ngdoc/)||{})[1]) // try to extract it from file name - || this.name; // default to name + this.id = this.id || // if we have an id just use it + (((this.file||'').match(/.*\/([^\/]*)\.ngdoc/)||{})[1]) || // try to extract it from file name + this.name; // default to name this.description = this.markdown(this.description); this.example = this.markdown(this.example); this['this'] = this.markdown(this['this']); @@ -182,9 +182,9 @@ Doc.prototype = { function flush() { if (atName) { - var text = trim(atText.join('\n')); + var text = trim(atText.join('\n')), match; if (atName == 'param') { - var match = text.match(/^{([^}=]+)(=)?}\s+(([^\s=]+)|\[(\S+)=([^\]]+)\])\s+(.*)/); + match = text.match(/^\{([^}=]+)(=)?\}\s+(([^\s=]+)|\[(\S+)=([^\]]+)\])\s+(.*)/); // 1 12 2 34 4 5 5 6 6 3 7 7 if (!match) { throw new Error("Not a valid 'param' format: " + text); @@ -198,7 +198,7 @@ Doc.prototype = { }; self.param.push(param); } else if (atName == 'returns') { - var match = text.match(/^{([^}=]+)}\s+(.*)/); + match = text.match(/^\{([^}=]+)\}\s+(.*)/); if (!match) { throw new Error("Not a valid 'returns' format: " + text); } @@ -207,13 +207,13 @@ Doc.prototype = { description: self.markdown(text.replace(match[0], match[2])) }; } else if(atName == 'requires') { - var match = text.match(/^([^\s]*)\s*([\S\s]*)/); + match = text.match(/^([^\s]*)\s*([\S\s]*)/); self.requires.push({ name: match[1], text: self.markdown(match[2]) }); } else if(atName == 'property') { - var match = text.match(/^{(\S+)}\s+(\S+)(\s+(.*))?/); + match = text.match(/^\{(\S+)\}\s+(\S+)(\s+(.*))?/); if (!match) { throw new Error("Not a valid 'property' format: " + text); } @@ -224,7 +224,7 @@ Doc.prototype = { }; self.properties.push(property); } else if(atName == 'eventType') { - var match = text.match(/^([^\s]*)\s+on\s+([\S\s]*)/); + match = text.match(/^([^\s]*)\s+on\s+([\S\s]*)/); self.type = match[1]; self.target = match[2]; } else { diff --git a/docs/src/templates/doc_widgets.js b/docs/src/templates/doc_widgets.js index 1890e93a2520..56ef5bcf4ffb 100644 --- a/docs/src/templates/doc_widgets.js +++ b/docs/src/templates/doc_widgets.js @@ -28,19 +28,28 @@ //jqlite instead. jqlite's find() method currently supports onlt getElementsByTagName! var example = element.find('pre').eq(0), //doc-source exampleSrc = example.text(), + showSource = example.attr('source') !== 'false', jsfiddle = example.attr('jsfiddle') || true, scenario = element.find('pre').eq(1); //doc-scenario var code = indent(exampleSrc); var tabHtml = - '
    ' + + '
      '; + + // show source tab, if not disabled + if (showSource) { + tabHtml += '
    • Source

    • ' + '
    • ' + jsFiddleButton(jsfiddle) + // may or may not have value '
    • ' + + code.hilite + ']; toolbar: false;">
'; + } + // show live preview tab + tabHtml += '
  • Live Preview

  • ' + '
  • ' + exampleSrc +'
  • '; + // show scenario tab, if present if (scenario.text()) { tabHtml += '
  • Scenario Test

  • ' + @@ -69,14 +78,14 @@ function jsFiddleButton(jsfiddle) { if (jsfiddle !== 'false') { - if(jsfiddle == true) { + if(jsfiddle === true) { //dynamically generate a fiddle var fiddleUrl = 'http://jsfiddle.net/api/post/library/pure/', fiddleSrc = exampleSrc, stripIndent = fiddleSrc.match(/^(\s*)/)[1].length; //escape closing textarea - fiddleSrc = fiddleSrc.replace(/<\/textarea>/gi,'</textarea>') + fiddleSrc = fiddleSrc.replace(/<\/textarea>/gi,'</textarea>'); //strip extra indentation fiddleSrc = fiddleSrc.replace(new RegExp('^\\s{' + stripIndent + '}', 'gm'), ''); @@ -113,12 +122,14 @@ if (!text) return text; var lines = text.split(/\r?\n/); var lineNo = []; + var i; + // 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++) { + for (i = 0; i < lines.length; i++) { var line = lines[0]; var indent = line.match(/^\s*/)[0]; if (indent !== line && indent.length < minIndent) { @@ -126,12 +137,12 @@ } } - for ( var i = 0; i < lines.length; i++) { + for (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 = '

    Workspace Reset Instructions  ➤

    ' + @@ -199,8 +210,8 @@ if (children.length) { // load custom content angular.forEach(element.children(), function(elm) { - var elm = angular.element(elm), - id = elm.attr('id'); + elm = angular.element(elm); + var id = elm.attr('id'); nav.append(HTML_NAV.replace('{title}', elm.attr('title')).replace(/\{id\}/g, id)); content.append(HTML_CONTENT.replace('{id}', id).replace('{content}', elm.html())); diff --git a/docs/src/templates/docs.css b/docs/src/templates/docs.css index 7f1cea8ea689..d42ec093ebaa 100644 --- a/docs/src/templates/docs.css +++ b/docs/src/templates/docs.css @@ -467,17 +467,6 @@ td.empty-corner-lt { } /* service.$location Html5 mode example */ -.html5-hashbang-example { - height: 255px; - margin-left: -40px; - padding-left: 30px; -} - -.html5-hashbang-example div { - float: left; - width: 375px; -} - .html5-hashbang-example div input { width: 360px; } pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy