aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/spec/sitemapSpec.js23
-rw-r--r--docs/src/SiteMap.js31
-rw-r--r--docs/src/gen-docs.js5
3 files changed, 58 insertions, 1 deletions
diff --git a/docs/spec/sitemapSpec.js b/docs/spec/sitemapSpec.js
new file mode 100644
index 00000000..2a5c4901
--- /dev/null
+++ b/docs/spec/sitemapSpec.js
@@ -0,0 +1,23 @@
+var SiteMap = require('sitemap.js').SiteMap;
+var Doc = require('ngdoc.js').Doc;
+
+
+describe('sitemap', function(){
+ it('should render empty sitemap', function(){
+ var map = new SiteMap([]);
+ expect(map.render()).toEqual([
+ '<?xml version="1.0" encoding="UTF-8"?>',
+ '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
+ '</sitemapindex>', ''].join('\n'));
+ });
+
+ it('should render ngdoc url', function(){
+ var map = new SiteMap([new Doc({name: 'a.b.c<>\'"&'})]);
+ expect(map.render()).toContain([
+ ' <url>',
+ '<loc>http://docs.angularjs.org/#!a.b.c&lt;&gt;&apos;&quot;&amp;</loc>',
+ '<changefreq>weekly</changefreq>',
+ '</url>'].join(''));
+
+ });
+});
diff --git a/docs/src/SiteMap.js b/docs/src/SiteMap.js
new file mode 100644
index 00000000..f6f909e9
--- /dev/null
+++ b/docs/src/SiteMap.js
@@ -0,0 +1,31 @@
+exports.SiteMap = SiteMap;
+
+/**
+ * @see http://www.sitemaps.org/protocol.php
+ *
+ * @param docs
+ * @returns {SiteMap}
+ */
+function SiteMap(docs){
+ this.render = function(){
+ var map = [];
+ map.push('<?xml version="1.0" encoding="UTF-8"?>');
+ map.push('<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">');
+ docs.forEach(function(doc){
+ map.push(' <url><loc>http://docs.angularjs.org/#!' +
+ encode(doc.name) + '</loc><changefreq>weekly</changefreq></url>');
+ });
+ map.push('</sitemapindex>');
+ map.push('');
+ return map.join('\n');
+ };
+
+ function encode(text){
+ return text
+ .replace(/&/mg, '&amp;')
+ .replace(/</mg, '&lt;')
+ .replace(/>/mg, '&gt;')
+ .replace(/'/mg, '&apos;')
+ .replace(/"/mg, '&quot;');
+ }
+}
diff --git a/docs/src/gen-docs.js b/docs/src/gen-docs.js
index 1c03a0f1..a287a2be 100644
--- a/docs/src/gen-docs.js
+++ b/docs/src/gen-docs.js
@@ -3,7 +3,8 @@ require.paths.push('lib');
var reader = require('reader.js'),
ngdoc = require('ngdoc.js'),
writer = require('writer.js'),
- callback = require('callback.js');
+ callback = require('callback.js'),
+ SiteMap = require('SiteMap.js').SiteMap;
var docs = [];
var start;
@@ -30,6 +31,8 @@ var writes = callback.chain(function(){
writer.copy('doc_widgets.css', writes.waitFor());
writer.copy('docs-scenario.html', writes.waitFor());
writer.output('docs-scenario.js', ngdoc.scenarios(docs), writes.waitFor());
+ writer.output('sitemap.xml', new SiteMap(docs).render(), writes.waitFor());
+ writer.output('robots.txt', 'Sitemap: http://docs.angularjs.org/sitemap.xml\n', writes.waitFor());
writer.copy('syntaxhighlighter/shBrushJScript.js', writes.waitFor());
writer.copy('syntaxhighlighter/shBrushXml.js', writes.waitFor());
writer.copy('syntaxhighlighter/shCore.css', writes.waitFor());