diff options
| author | Matias Niemelä | 2013-07-08 21:58:14 -0400 | 
|---|---|---|
| committer | Igor Minar | 2013-07-26 08:51:38 -0700 | 
| commit | 258cae83dc1a03b6b878a7b4236c499288cd2624 (patch) | |
| tree | e793480d3d237ba10e31203a67e67ef93b47c00a | |
| parent | ab189142988043d0513bb796c3b54ca7d07f242d (diff) | |
| download | angular.js-258cae83dc1a03b6b878a7b4236c499288cd2624.tar.bz2 | |
chore(ngdocs): replace showdown.js with marked.js
| -rw-r--r-- | docs/component-spec/annotationsSpec.js | 2 | ||||
| -rw-r--r-- | docs/components/angular-bootstrap/bootstrap.js | 12 | ||||
| -rw-r--r-- | docs/spec/ngdocSpec.js | 79 | ||||
| -rwxr-xr-x | docs/src/gen-docs.js | 3 | ||||
| -rw-r--r-- | docs/src/ngdoc.js | 10 | ||||
| -rw-r--r-- | docs/src/templates/index.html | 2 | ||||
| -rw-r--r-- | karma-docs.conf.js | 2 | ||||
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | src/ng/animator.js | 2 | ||||
| -rw-r--r-- | src/ng/directive/ngRepeat.js | 2 | 
10 files changed, 62 insertions, 54 deletions
| diff --git a/docs/component-spec/annotationsSpec.js b/docs/component-spec/annotationsSpec.js index 29cb9c53..321118ad 100644 --- a/docs/component-spec/annotationsSpec.js +++ b/docs/component-spec/annotationsSpec.js @@ -57,7 +57,7 @@ describe('Docs Annotations', function() {        $scope.$apply();        element.triggerHandler('click');        expect(popoverElement.title()).toBe('#title_text'); -      expect(popoverElement.content()).toBe('<h1 id="heading">heading</h1>'); +      expect(popoverElement.content()).toBe('<h1>heading</h1>\n');      }));    }); diff --git a/docs/components/angular-bootstrap/bootstrap.js b/docs/components/angular-bootstrap/bootstrap.js index 71972200..170e8805 100644 --- a/docs/components/angular-bootstrap/bootstrap.js +++ b/docs/components/angular-bootstrap/bootstrap.js @@ -257,7 +257,7 @@ var popoverElement = function() {      content : function(value) {         if(value && value.length > 0) { -        value = new Showdown.converter().makeHtml(value); +        value = marked(value);        }        return this.contentElement.html(value);      }, @@ -380,4 +380,12 @@ directive.foldout = ['$http', '$animator','$window', function($http, $animator,    }  }]; -angular.module('bootstrap', []).directive(directive).factory('popoverElement', popoverElement); +angular.module('bootstrap', []) +  .directive(directive) +  .factory('popoverElement', popoverElement) +  .run(function() { +    marked.setOptions({ +      gfm: true, +      tables: true +    }); +  }); diff --git a/docs/spec/ngdocSpec.js b/docs/spec/ngdocSpec.js index 128e0106..607745d8 100644 --- a/docs/spec/ngdocSpec.js +++ b/docs/spec/ngdocSpec.js @@ -59,10 +59,10 @@ describe('ngdoc', function() {              '@param {function(number, string=)} d fn with optional arguments');          doc.parse();          expect(doc.param).toEqual([ -           {name:'a', description:'<div class="a-page"><p>short</p></div>', type:'*', optional:false, 'default':undefined}, -           {name:'b', description:'<div class="a-page"><p>med</p></div>', type:'Type', optional:false, 'default':undefined}, -           {name:'c', description:'<div class="a-page"><p>long\nline</p></div>', type:'Class', optional:true, 'default':'2'}, -           {name:'d', description:'<div class="a-page"><p>fn with optional arguments</p></div>', +           {name:'a', description:'<div class="a-page"><p>short</p>\n</div>', type:'*', optional:false, 'default':undefined}, +           {name:'b', description:'<div class="a-page"><p>med</p>\n</div>', type:'Type', optional:false, 'default':undefined}, +           {name:'c', description:'<div class="a-page"><p>long\nline</p>\n</div>', type:'Class', optional:true, 'default':'2'}, +           {name:'d', description:'<div class="a-page"><p>fn with optional arguments</p>\n</div>',               type: 'function(number, string=)', optional: false, 'default':undefined}           ]);        }); @@ -72,7 +72,7 @@ describe('ngdoc', function() {          doc.parse();          expect(doc.returns).toEqual({            type: 'Type', -          description: '<div class="a-page"><p>text <em>bold</em>.</p></div>' +          description: '<div class="a-page"><p>text <em>bold</em>.</p>\n</div>'          });        }); @@ -142,26 +142,26 @@ describe('ngdoc', function() {              '<pre class="prettyprint linenums">\n' +              '<b>angular</b>.k\n' +              '</pre>\n' + -            ' asdf x</p></div>'); +            ' asdf x</p>\n</div>');      });      it('should wrap everything inside a container tag', function() {        var doc = new Doc('@name superman').parse();        var content = doc.markdown('hello'); -      expect(content).toMatch('<div class="superman-page"><p>hello</p></div>'); +      expect(content).toMatch('<div class="superman-page"><p>hello</p>\n</div>');      });      it('should use the content before a colon as the name prefix for the className of the tag container', function() {        var doc = new Doc('@name super: man').parse();        var content = doc.markdown('hello'); -      expect(content).toMatch('<div class="super-page super-man-page"><p>hello</p></div>'); +      expect(content).toMatch('<div class="super-page super-man-page"><p>hello</p>\n</div>');      });      it('should replace text between two <pre></pre> tags', function() {        expect(new Doc().markdown('<pre>x</pre>\n# One\n<pre>b</pre>')). -        toMatch('</pre>\n\n<h1 id="one">One</h1>\n\n<pre'); +        toMatch('</pre>\n<h1>One</h1>\n<pre');      });      it('should replace inline variable type hints', function() { @@ -171,16 +171,16 @@ describe('ngdoc', function() {      it('should ignore nested doc widgets', function() {        expect(new Doc().markdown( -        'before<div class="tabbable">\n' + +        'before\n<div class="tabbable">\n' +            '<div class="tab-pane well" id="git-mac" ng:model="Git on Mac/Linux">' + -          '\ngit bla bla\n</doc:tutorial-instruction>\n' + -        '</doc:tutorial-instructions>')).toEqual( +          '\ngit bla bla\n</div>\n' + +        '</div>')).toEqual( -        '<div class="docs-page"><p>before<div class="tabbable">\n' + +        '<div class="docs-page"><p>before</p>\n<div class="tabbable">\n' +            '<div class="tab-pane well" id="git-mac" ng:model="Git on Mac/Linux">\n' +            'git bla bla\n' + -          '</doc:tutorial-instruction>\n' + -        '</doc:tutorial-instructions></p></div>'); +          '</div>\n' + +        '</div></div>');        });      it('should unindent text before processing based on the second line', function() { @@ -190,10 +190,10 @@ describe('ngdoc', function() {                                  '        fourth line\n\n' +                                  '   fifth line')).          toMatch('<p>first line\n' + -                'second line</p>\n\n' + +                'second line</p>\n' +                  '<pre><code>third line\n' + -                ' fourth line\n</code></pre>\n\n' + -                '<p>fifth line</p>'); +                ' fourth line</code></pre>\n' + +                '<p>fifth line</p>\n');      });      it('should unindent text before processing based on the first line', function() { @@ -202,11 +202,11 @@ describe('ngdoc', function() {                                  '       third line\n' +                                  '        fourth line\n\n' +                                  '   fifth line')). -        toMatch('<p>first line</p>\n\n' + +        toMatch('<div class="docs-page"><p>first line</p>\n' +                  '<pre><code>second line\n' +                  'third line\n' + -                ' fourth line\n</code></pre>\n\n' + -                '<p>fifth line</p>'); +                ' fourth line</code></pre>\n' + +                '<p>fifth line</p>\n</div>');      }); @@ -304,7 +304,7 @@ describe('ngdoc', function() {            name : 'number',            optional: false,            'default' : undefined, -          description : '<div class="a-page"><p>Number \nto format.</p></div>' }]); +          description : '<div class="a-page"><p>Number \nto format.</p>\n</div>' }]);        });        it('should parse with default and optional', function() { @@ -315,7 +315,7 @@ describe('ngdoc', function() {            name : 'fractionSize',            optional: true,            'default' : '2', -          description : '<div class="a-page"><p>desc</p></div>' }]); +          description : '<div class="a-page"><p>desc</p>\n</div>' }]);        });      }); @@ -325,8 +325,8 @@ describe('ngdoc', function() {          doc.ngdoc = 'service';          doc.parse();          expect(doc.requires).toEqual([ -          {name:'$service', text:'<div class="a-page"><p>for \n<code>A</code></p></div>'}, -          {name:'$another', text:'<div class="a-page"><p>for <code>B</code></p></div>'}]); +          {name:'$service', text:'<div class="a-page"><p>for \n<code>A</code></p>\n</div>'}, +          {name:'$another', text:'<div class="a-page"><p>for <code>B</code></p>\n</div>'}]);          expect(doc.html()).toContain('<a href="api/ng.$service">$service</a>');          expect(doc.html()).toContain('<a href="api/ng.$another">$another</a>');          expect(doc.html()).toContain('<p>for \n<code>A</code></p>'); @@ -378,7 +378,7 @@ describe('ngdoc', function() {          var doc = new Doc("@name a\n@property {string} name desc rip tion");          doc.parse();          expect(doc.properties[0].name).toEqual('name'); -        expect(doc.properties[0].description).toEqual('<div class="a-page"><p>desc rip tion</p></div>'); +        expect(doc.properties[0].description).toEqual('<div class="a-page"><p>desc rip tion</p>\n</div>');        });        it('should parse @property with type and description both', function() { @@ -386,7 +386,7 @@ describe('ngdoc', function() {          doc.parse();          expect(doc.properties[0].name).toEqual('name');          expect(doc.properties[0].type).toEqual('bool'); -        expect(doc.properties[0].description).toEqual('<div class="a-page"><p>desc rip tion</p></div>'); +        expect(doc.properties[0].description).toEqual('<div class="a-page"><p>desc rip tion</p>\n</div>');        });      }); @@ -409,26 +409,26 @@ describe('ngdoc', function() {        it('should parse @returns with type and description', function() {          var doc = new Doc("@name a\n@returns {string} descrip tion");          doc.parse(); -        expect(doc.returns).toEqual({type: 'string', description: '<div class="a-page"><p>descrip tion</p></div>'}); +        expect(doc.returns).toEqual({type: 'string', description: '<div class="a-page"><p>descrip tion</p>\n</div>'});        });        it('should parse @returns with complex type and description', function() {          var doc = new Doc("@name a\n@returns {function(string, number=)} description");          doc.parse(); -        expect(doc.returns).toEqual({type: 'function(string, number=)', description: '<div class="a-page"><p>description</p></div>'}); +        expect(doc.returns).toEqual({type: 'function(string, number=)', description: '<div class="a-page"><p>description</p>\n</div>'});        });        it('should transform description of @returns with markdown', function() {          var doc = new Doc("@name a\n@returns {string} descrip *tion*");          doc.parse(); -        expect(doc.returns).toEqual({type: 'string', description: '<div class="a-page"><p>descrip <em>tion</em></p></div>'}); +        expect(doc.returns).toEqual({type: 'string', description: '<div class="a-page"><p>descrip <em>tion</em></p>\n</div>'});        });        it('should support multiline content', function() {          var doc = new Doc("@name a\n@returns {string} description\n new line\n another line");          doc.parse();          expect(doc.returns). -          toEqual({type: 'string', description: '<div class="a-page"><p>description\nnew line\nanother line</p></div>'}); +          toEqual({type: 'string', description: '<div class="a-page"><p>description\nnew line\nanother line</p>\n</div>'});        });      }); @@ -437,7 +437,7 @@ describe('ngdoc', function() {          var doc = new Doc("@name a\n@description <pre><b>abc</b></pre>");          doc.parse();          expect(doc.description). -          toBe('<div class="a-page"><pre class="prettyprint linenums"><b>abc</b></pre></div>'); +          toBe('<div class="a-page"><pre class="prettyprint linenums"><b>abc</b></pre>\n</div>');        });        it('should support multiple pre blocks', function() { @@ -445,11 +445,10 @@ describe('ngdoc', function() {          doc.parse();          expect(doc.description).            toBe('<div class="a-page"><p>foo \n' + -               '<pre class="prettyprint linenums">abc</pre>\n\n' + -               '<h1 id="bah">bah</h1>\n\n' + +               '<pre class="prettyprint linenums">abc</pre>\n' + +               '<h1>bah</h1>\n' +                 '<p>foo \n' + -               '<pre class="prettyprint linenums">cba</pre></div>'); - +               '<pre class="prettyprint linenums">cba</pre>\n</div>');        });        it('should support nested @link annotations with or without description', function() { @@ -491,7 +490,7 @@ describe('ngdoc', function() {        it('should not remove {{}}', function() {          var doc = new Doc('@name a\n@example text {{ abc }}');          doc.parse(); -        expect(doc.example).toEqual('<div class="a-page"><p>text {{ abc }}</p></div>'); +        expect(doc.example).toEqual('<div class="a-page"><p>text {{ abc }}</p>\n</div>');        });      }); @@ -511,11 +510,11 @@ describe('ngdoc', function() {          expect(doc.html()).toContain('<h3>Method\'s <code>this</code></h3>\n' +              '<div>' +              '<div class="a-page">' + -            '<p>I am self.</p>' + +            '<p>I am self.</p>\n' +              '</div>' +              '</div>\n');          expect(doc.html()).toContain('<h3>Method\'s <code>this</code></h3>\n' + -            '<div><div class="a-page"><p>I am self.</p></div></div>'); +            '<div><div class="a-page"><p>I am self.</p>\n</div></div>');        });      }); @@ -542,7 +541,7 @@ describe('ngdoc', function() {          var doc = new Doc('@ngdoc overview\n@name angular\n@description\n#heading\ntext');          doc.parse();          expect(doc.html()).toContain('text'); -        expect(doc.html()).toContain('<h2 id="heading">heading</h2>'); +        expect(doc.html()).toContain('<h2>heading</h2>');          expect(doc.html()).not.toContain('Description');        });      }); diff --git a/docs/src/gen-docs.js b/docs/src/gen-docs.js index 2e711ab3..10b01385 100755 --- a/docs/src/gen-docs.js +++ b/docs/src/gen-docs.js @@ -83,8 +83,7 @@ function writeTheRest(writesFuture) {    writesFuture.push(writer.copyDir('components/components-font-awesome/font', 'components/font-awesome/font'));    writesFuture.push(writer.copyDir('components/bootstrap', 'components/bootstrap')); -  writesFuture.push(writer.copy('node_modules/showdown/src/showdown.js', 'components/showdown.js')); -  writesFuture.push(writer.copy('node_modules/showdown/compressed/showdown.js', 'components/showdown.min.js')); +  writesFuture.push(writer.copy('node_modules/marked/lib/marked.js', 'components/marked.js'));    writesFuture.push(writer.copy('components/lunr.js/lunr.js', 'components/lunr.js'));    writesFuture.push(writer.copy('components/lunr.js/lunr.min.js', 'components/lunr.min.js'));    writesFuture.push(writer.copy('components/jquery/jquery.js', 'components/jquery.js')); diff --git a/docs/src/ngdoc.js b/docs/src/ngdoc.js index 4ad478f4..394510c5 100644 --- a/docs/src/ngdoc.js +++ b/docs/src/ngdoc.js @@ -1,8 +1,6 @@  /**   * All parsing/transformation code goes here. All code here should be sync to ease testing.   */ - -var Showdown = require('showdown');  var DOM = require('./dom.js').DOM;  var htmlEscape = require('./dom.js').htmlEscape;  var Example = require('./example.js').Example; @@ -10,10 +8,14 @@ var NEW_LINE = /\n\r?/;  var globalID = 0;  var fs = require('fs');  var fspath = require('path'); -var markdown = new Showdown.converter({ extensions : ['table'] });  var shell = require('shelljs');  var gruntUtil = require('../../lib/grunt/utils.js');  var errorsJson; +var marked = require('marked'); +marked.setOptions({ +  gfm: true, +  tables: true +});  var lookupMinerrMsg = function (doc) {    var code, namespace; @@ -289,7 +291,7 @@ Doc.prototype = {      pageClassName = pageClassName || prepareClassName(this.name || 'docs') + suffix;      text = '<div class="' + pageClassName + '">' +  -             markdown.makeHtml(text) + +             marked(text) +             '</div>';      text = text.replace(/(?:<p>)?(REPLACEME\d+)(?:<\/p>)?/g, function(_, id) {        return placeholderMap[id]; diff --git a/docs/src/templates/index.html b/docs/src/templates/index.html index 65e26c99..82a5c87e 100644 --- a/docs/src/templates/index.html +++ b/docs/src/templates/index.html @@ -47,7 +47,7 @@        addTag('script', {src: 'components/angular-bootstrap-prettify.js' }, sync);        addTag('script', {src: 'components/google-code-prettify.js' }, sync);        addTag('script', {src: 'components/' + (debug ? 'lunr.js' : 'lunr.min.js') }, sync); -      addTag('script', {src: 'components/' + (debug ? 'showdown.js' : 'showdown.min.js') }, sync); +      addTag('script', {src: 'components/marked.js' }, sync);        addTag('script', {src: 'docs-data.js'}, sync);        addTag('script', {src: 'js/docs.js'}, sync); diff --git a/karma-docs.conf.js b/karma-docs.conf.js index ae15ddfc..65f51fdd 100644 --- a/karma-docs.conf.js +++ b/karma-docs.conf.js @@ -18,7 +18,7 @@ module.exports = function(config) {        'build/docs/components/lunr.js',        'build/docs/components/google-code-prettify.js', -      'build/docs/components/showdown.js', +      'build/docs/components/marked.js',        'build/docs/components/angular-bootstrap.js',        'build/docs/components/angular-bootstrap-prettify.js', diff --git a/package.json b/package.json index 2578b8c4..0bcad1f0 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@      "karma-sauce-launcher": "~0.0.4",      "karma-script-launcher": "~0.0.1",      "yaml-js": "0.0.5", -    "showdown": "0.3.1", +    "marked": "~0.2.9",      "rewire": "1.1.3",      "grunt-contrib-jasmine-node": "~0.1.1",      "grunt-parallel": "~0.2.0", diff --git a/src/ng/animator.js b/src/ng/animator.js index 2a549f12..a9ea5743 100644 --- a/src/ng/animator.js +++ b/src/ng/animator.js @@ -16,7 +16,7 @@   * Below is a more detailed breakdown of the supported callback events provided by pre-exisitng ng directives:   *   * | Directive                                                 | Supported Animations                               | - * |========================================================== |====================================================| + * |---------------------------------------------------------- |----------------------------------------------------|   * | {@link ng.directive:ngRepeat#animations ngRepeat}         | enter, leave and move                              |   * | {@link ngRoute.directive:ngView#animations ngView}        | enter and leave                                    |   * | {@link ng.directive:ngInclude#animations ngInclude}       | enter and leave                                    | diff --git a/src/ng/directive/ngRepeat.js b/src/ng/directive/ngRepeat.js index 7da67105..e0b2cb38 100644 --- a/src/ng/directive/ngRepeat.js +++ b/src/ng/directive/ngRepeat.js @@ -12,7 +12,7 @@   * Special properties are exposed on the local scope of each template instance, including:   *   * | Variable  | Type            | Details                                                                     | - * |===========|=================|=============================================================================| + * |-----------|-----------------|-----------------------------------------------------------------------------|   * | `$index`  | {@type number}  | iterator offset of the repeated element (0..length-1)                       |   * | `$first`  | {@type boolean} | true if the repeated element is first in the iterator.                      |   * | `$middle` | {@type boolean} | true if the repeated element is between the first and last in the iterator. | | 
