From 258cae83dc1a03b6b878a7b4236c499288cd2624 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Matias=20Niemel=C3=A4?= short med long\nline fn with optional arguments short med long\nline fn with optional arguments text bold. text bold.heading
');
+ expect(popoverElement.content()).toBe('heading
\n');
}));
});
diff --git a/docs/components/angular-bootstrap/bootstrap.js b/docs/components/angular-bootstrap/bootstrap.js
index 71972200c607..170e88053b99 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 128e01066310..607745d85d47 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:'\n' +
'<b>angular</b>.k\n' +
'
\n' +
- ' asdf x
hello
hello
\nhello
hello
\nx\n# One\n
b')). - toMatch('\n\n
\nOne
\n\n' + + 'before\n\n' + '')).toEqual( - '' + - '\ngit bla bla\n\n' + - '')).toEqual( + '\ngit bla bla\n\n' + + ''); }); 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('before
\n' + + ''); }); 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('before
\n\n' + '\n' + + '\n' + 'git bla bla\n' + - '\n' + - ''); + 'first line\n' + - 'second line
\n\n' + + 'second line\n' + '\n\n' + - 'third line\n' + - ' fourth line\n
fifth line
'); + ' fourth line\n' + + 'fifth line
\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('first line
\n\n' + + toMatch(''); }); @@ -304,7 +304,7 @@ describe('ngdoc', function() { name : 'number', optional: false, 'default' : undefined, - description : 'first line
\n' + '\n\n' + - 'second line\n' + 'third line\n' + - ' fourth line\n
fifth line
'); + ' fourth line\n' + + 'fifth line
\n' }]); + description : 'Number \nto format.
' }]); }); it('should parse with default and optional', function() { @@ -315,7 +315,7 @@ describe('ngdoc', function() { name : 'fractionSize', optional: true, 'default' : '2', - description : 'Number \nto format.
\n' }]); + description : 'desc
' }]); }); }); @@ -325,8 +325,8 @@ describe('ngdoc', function() { doc.ngdoc = 'service'; doc.parse(); expect(doc.requires).toEqual([ - {name:'$service', text:'desc
\n'}, - {name:'$another', text:'for \n
A
'}]); + {name:'$service', text:'for
B
'}, + {name:'$another', text:'for \n
\nA
'}]); expect(doc.html()).toContain('$service'); expect(doc.html()).toContain('$another'); expect(doc.html()).toContain('for
\nB
for \n
'); @@ -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('A
'); + expect(doc.properties[0].description).toEqual('desc rip tion
'); }); 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('desc rip tion
\n'); + expect(doc.properties[0].description).toEqual('desc rip tion
'); }); }); @@ -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: 'desc rip tion
\n'}); + expect(doc.returns).toEqual({type: 'string', description: 'descrip tion
'}); }); 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: 'descrip tion
\n'}); + expect(doc.returns).toEqual({type: 'function(string, number=)', description: 'description
'}); }); 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: 'description
\n'}); + expect(doc.returns).toEqual({type: 'string', description: 'descrip tion
'}); }); 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: 'descrip tion
\n'}); + toEqual({type: 'string', description: 'description\nnew line\nanother line
'}); }); }); @@ -437,7 +437,7 @@ describe('ngdoc', function() { var doc = new Doc("@name a\n@descriptiondescription\nnew line\nanother line
\nabc"); doc.parse(); expect(doc.description). - toBe(''); + toBe('<b>abc</b>'); }); it('should support multiple pre blocks', function() { @@ -445,11 +445,10 @@ describe('ngdoc', function() { doc.parse(); expect(doc.description). toBe('<b>abc</b>\n'); - + 'foo \n' + - '
abc\n\n' + - 'bah
\n\n' + + 'abc\n' + + 'bah
\n' + 'foo \n' + - '
cbacba\n'); + expect(doc.example).toEqual('text {{ abc }}
'); }); }); @@ -511,11 +510,11 @@ describe('ngdoc', function() { expect(doc.html()).toContain('text {{ abc }}
\nMethod\'s
\n' + 'this
' + '\n'); expect(doc.html()).toContain('' + - '' + 'I am self.
' + + 'I am self.
\n' + 'Method\'s
\n' + - 'this
'); + 'I am self.
'); }); }); @@ -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('I am self.
\nheading
'); + expect(doc.html()).toContain('heading
'); expect(doc.html()).not.toContain('Description'); }); }); diff --git a/docs/src/gen-docs.js b/docs/src/gen-docs.js index 2e711ab31c81..10b013854023 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 4ad478f499bc..394510c53553 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 = '' + - markdown.makeHtml(text) + + marked(text) + ''; text = text.replace(/(?:)?(REPLACEME\d+)(?:<\/p>)?/g, function(_, id) { return placeholderMap[id]; diff --git a/docs/src/templates/index.html b/docs/src/templates/index.html index 65e26c99ecb6..82a5c87e5270 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 ae15ddfc7684..65f51fdd4d0e 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 2578b8c41c26..0bcad1f095dd 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 2a549f129730..a9ea574391f6 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 7da6710535b3..e0b2cb38de20 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. |