aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/spec/domSpec.js18
-rw-r--r--docs/spec/ngdocSpec.js19
-rw-r--r--docs/src/dom.js5
-rw-r--r--docs/src/ignore.words1
-rw-r--r--docs/src/ngdoc.js3
5 files changed, 33 insertions, 13 deletions
diff --git a/docs/spec/domSpec.js b/docs/spec/domSpec.js
index 5175b91a..7bc6a7f4 100644
--- a/docs/spec/domSpec.js
+++ b/docs/spec/domSpec.js
@@ -28,6 +28,24 @@ describe('dom', function() {
expect(dom.toString()).toContain('<h2>sub-heading</h2>');
});
+ it('should properly number nested headings', function() {
+ dom.h('heading', function() {
+ dom.h('heading2', function() {
+ this.html('<h1>heading3</h1>');
+ });
+ });
+ dom.h('other1', function() {
+ this.html('<h1>other2</h1>');
+ });
+
+ expect(dom.toString()).toContain('<h1 id="heading">heading</h1>');
+ expect(dom.toString()).toContain('<h2 id="heading2">heading2</h2>');
+ expect(dom.toString()).toContain('<h3>heading3</h3>');
+
+ expect(dom.toString()).toContain('<h1 id="other1">other1</h1>');
+ expect(dom.toString()).toContain('<h2>other2</h2>');
+ });
+
});
});
diff --git a/docs/spec/ngdocSpec.js b/docs/spec/ngdocSpec.js
index b1bbbd61..3cd9834b 100644
--- a/docs/spec/ngdocSpec.js
+++ b/docs/spec/ngdocSpec.js
@@ -18,9 +18,9 @@ describe('ngdoc', function() {
describe('Doc', function() {
describe('metadata', function() {
- it('should find keywords', function() {
+ it('should find keywords and filter ignored words', function() {
expect(new Doc('\nHello: World! @ignore. $abc').keywords()).toEqual('$abc hello world');
- expect(new Doc('The `ng:class-odd` and').keywords()).toEqual('and ng:class-odd the');
+ expect(new Doc('The `ng:class-odd` and').keywords()).toEqual('ng:class-odd');
});
it('should get property and methods', function() {
@@ -147,7 +147,7 @@ describe('ngdoc', function() {
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>One</h1>\n\n<pre');
+ toMatch('</pre>\n\n<h1 id="one">One</h1>\n\n<pre');
});
it('should ignore nested doc widgets', function() {
@@ -405,7 +405,7 @@ describe('ngdoc', function() {
expect(doc.description).
toBe('<p>foo \n' +
'<pre class="prettyprint linenums">abc</pre>\n\n' +
- '<h1>bah</h1>\n\n' +
+ '<h1 id="bah">bah</h1>\n\n' +
'<p>foo \n' +
'<pre class="prettyprint linenums">cba</pre>');
@@ -499,7 +499,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>heading</h2>');
+ expect(doc.html()).toContain('<h2 id="heading">heading</h2>');
expect(doc.html()).not.toContain('Description');
});
});
@@ -511,7 +511,7 @@ describe('ngdoc', function() {
ngdoc:'function',
name:'some.name',
param: [
- {name:'a', optional: true},
+ {name:'a', type: 'string', optional: true},
{name:'b', type: 'someType', optional: true, 'default': '"xxx"'},
{name:'c', type: 'string', description: 'param desc'}
],
@@ -520,7 +520,7 @@ describe('ngdoc', function() {
doc.html_usage_function(dom);
expect(dom).toContain('name([a][, b], c)'); //TODO(i) the comma position here is lame
expect(dom).toContain('param desc');
- expect(dom).toContain('(optional="xxx")');
+ expect(dom).toContain('(optional)');
expect(dom).toContain('return desc');
});
});
@@ -531,8 +531,8 @@ describe('ngdoc', function() {
ngdoc:'formatter',
shortName:'myFilter',
param: [
- {name:'a'},
- {name:'b'}
+ {name:'a', type:'string'},
+ {name:'b', type:'string'}
]
});
doc.html_usage_filter(dom);
@@ -546,6 +546,7 @@ describe('ngdoc', function() {
var doc = new Doc({
ngdoc:'property',
name:'myProp',
+ type:'string',
returns:{type: 'type', description: 'description'}
});
doc.html_usage_property(dom);
diff --git a/docs/src/dom.js b/docs/src/dom.js
index 1bb9578e..94048120 100644
--- a/docs/src/dom.js
+++ b/docs/src/dom.js
@@ -43,8 +43,9 @@ DOM.prototype = {
var headingDepth = this.headingDepth;
for ( var i = 10; i > 0; --i) {
html = html
- .replace(new RegExp('(<\/?h)' + i + '(>)', 'gm'), function(all, start, end){
- return start + (i + headingDepth) + end;
+ .replace(new RegExp('<h' + i + '(.*?)>([\\s\\S]+)<\/h' + i +'>', 'gm'), function(_, attrs, content){
+ var tag = 'h' + (i + headingDepth);
+ return '<' + tag + attrs + '>' + content + '</' + tag + '>';
});
}
this.out.push(html);
diff --git a/docs/src/ignore.words b/docs/src/ignore.words
index d3af04b0..82b9f2fc 100644
--- a/docs/src/ignore.words
+++ b/docs/src/ignore.words
@@ -678,7 +678,6 @@ without
won't
wont
words
-world
would
wouldn't
wouldnt
diff --git a/docs/src/ngdoc.js b/docs/src/ngdoc.js
index 0b0bb340..7c07f00f 100644
--- a/docs/src/ngdoc.js
+++ b/docs/src/ngdoc.js
@@ -10,6 +10,7 @@ var NEW_LINE = /\n\r?/;
var globalID = 0;
var fs = require('fs');
var fspath = require('path');
+var markdown = new Showdown.converter({ extensions : ['table'] });
exports.trim = trim;
exports.metadata = metadata;
@@ -216,7 +217,7 @@ Doc.prototype = {
});
});
text = parts.join('');
- text = new Showdown.converter({ extensions : ['table'] }).makeHtml(text);
+ text = markdown.makeHtml(text);
text = text.replace(/(?:<p>)?(REPLACEME\d+)(?:<\/p>)?/g, function(_, id) {
return placeholderMap[id];
});