This commit is contained in:
Tutur33
2023-11-24 22:35:41 +01:00
parent 3c0b507a93
commit 7644b2a0f7
45165 changed files with 4803356 additions and 3 deletions
+4
View File
@@ -0,0 +1,4 @@
language: node_js
node_js:
- '0.11'
- '0.10'
+82
View File
@@ -0,0 +1,82 @@
readme-badger
=============
[![Build Status](https://travis-ci.org/gitterHQ/readme-badger.svg?branch=master)](https://travis-ci.org/gitterHQ/readme-badger)
Whizzy badges in your READMEs.
Install
-------
`npm install readme-badger`
How To Use
----------
### `addBadge(content, fileExt, imageUrl, linkUrl, altText)`
Returns the content but with a new badge inserted.
* `content`: the text content of a README.
* `fileExt`: the file extension of the README (md, textile, rdoc etc).
* `imageUrl`: the image url for the badge.
* `linkUrl`: the url for the badge to link to.
* `altText`: the alternative if images aren't visible. This will be used on its own for plaintext READMEs, so include a url in the text.
### `hasImageSupport(fileExt)`
Returns true/false depending on whether the format (`fileExt`) will render a badge image or just the altText.
* `fileExt`: the file extension of the README (md, textile, rdoc etc)
Example
-------
```javascript
var badger = require('readme-badger');
var readme = '# My Lovely Library\n' +
'\n' +
'## Features\n';
var imageUrl = 'https://badges.gitter.im/Join%20Chat.svg';
var linkUrl = 'https://gitter.im/gitterHQ/gitter';
var altText = 'Join the chat at https://gitter.im/gitterHQ/gitter';
var readmeWithBadge = badger.addBadge(readme, 'md', imageUrl, linkUrl, altText);
console.log(readmeWithBadge);
// # My Lovely Library
//
// [![Join the chat at https://gitter.im/gitterHQ/gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/gitterHQ/gitter)
//
// ## Features
// ...
```
Format (`fileExt`) Support
--------------
readme-badger supports almost all of the [GitHub README markups](https://github.com/github/markup#markups):
* [markdown, mdown, mkdn, md](http://daringfireball.net/projects/markdown/)
* [textile](http://www.textism.com/tools/textile/)
* [rdoc](http://rdoc.sourceforge.net/)
* [org](http://orgmode.org/)
* [mediawiki, wiki](http://www.mediawiki.org/wiki/Help:Formatting)
* [rst](http://docutils.sourceforge.net/rst.html)
* [asciidoc, adoc, asc](http://asciidoc.org/)
* [pod](http://search.cpan.org/dist/perl/pod/perlpod.pod)
It will also failover to inserting the `altText` at the bottom of the README for any format that doesnt have image link support (creole, txt or anything else).
Building Locally
----------------
1. `git clone git@github.com:gitterHQ/readme-badger.git`
2. `cd readme-badger`
3. `npm install`
4. `npm test`
License
-------
MIT
+4
View File
@@ -0,0 +1,4 @@
/* jshint node:true, unused:strict */
"use strict";
module.exports = require('./lib');
+29
View File
@@ -0,0 +1,29 @@
/* jshint node:true */
"use strict";
function badger(content, imgUrl, linkUrl, altText) {
var lines = content.split('\n');
var idealLine = findIdealLineForInsert(lines);
var badgeContent = '\nimage:' + imgUrl + '[link="' + linkUrl + '"]';
lines.splice(idealLine, 0, badgeContent);
return lines.join('\n');
}
function findIdealLineForInsert(lines) {
var i = 0;
var seenHeader = false;
for(;i < lines.length;i++) {
if(/^\s*(\=+|={3,}|-{3,})/.test(lines[i])) {
seenHeader = true;
} else {
if(seenHeader) break;
}
}
return i;
}
module.exports = badger;
+62
View File
@@ -0,0 +1,62 @@
/* jshint node:true */
"use strict";
var markdownBadger = require('./markdown');
var textileBadger = require('./textile');
var rdocBadger = require('./rdoc');
var orgmodeBadger = require('./orgmode');
var mediawikiBadger = require('./mediawiki');
var rstBadger = require('./rst');
var asciidocBadger = require('./asciidoc');
var podBadger = require('./pod');
var plaintextBadger = require('./plaintext');
var assert = require('assert');
var markupBadgers = {
markdown: markdownBadger,
mdown: markdownBadger,
mkdn: markdownBadger,
md: markdownBadger,
textile: textileBadger,
rdoc: rdocBadger,
org: orgmodeBadger,
mediawiki: mediawikiBadger,
wiki: mediawikiBadger,
rst: rstBadger,
asciidoc: asciidocBadger,
adoc: asciidocBadger,
asc: asciidocBadger,
pod: podBadger
};
var addBadge = function(content, fileExt, imageUrl, linkUrl, altText) {
assert(typeof content === 'string', 'readme content required');
assert(imageUrl, 'badge imageUrl required');
assert(linkUrl, 'badge linkUrl required');
assert(altText, 'badge altText required');
var plaintextBadger = function(content) {
return content + '\n' + altText + '\n';
};
// failover to plaintext
var badger = markupBadgers[fileExt && fileExt.toLowerCase()] || plaintextBadger;
return badger(content, imageUrl, linkUrl, altText);
};
var hasImageSupport = function(fileExt) {
return !!markupBadgers[fileExt && fileExt.toLowerCase()];
};
module.exports = {
addBadge: addBadge,
hasImageSupport: hasImageSupport
};
+66
View File
@@ -0,0 +1,66 @@
/* jshint node:true */
"use strict";
var balanced = require('balanced-match');
var rHeader = /^\s*(\#+|={3,}|-{3,})/;
var rBadgePrefix = /\[!\[[^\]]*\]\([^)]*\)\]\(/g; // ends with the first parenthesis of link
function markdownBadger(content, imgUrl, linkUrl, altText) {
var badgeContent = getBadgeMarkdown(imgUrl, linkUrl, altText);
var lines = content.split(/\n/);
// Try to find an existing line with badges in it
var idealLine = findLastBadgeLine(lines);
if(idealLine >= 0) {
var line = lines[idealLine];
// Count badges and find the prefix end index of the last badge in this line
var count = 0;
var end;
line.replace(rBadgePrefix, function(match, offset) {
count++;
end = offset + match.length - 1;
return match;
});
var lastPart = line.substring(end);
var balancedMatch = balanced('(', ')', lastPart);
// Insert into the same line
lines[idealLine] = line.substring(0, end + balancedMatch.end + 1) + ' ' + badgeContent
+ lastPart.substring(balancedMatch.end + 1);
// Otherwise try to place it below the header
} else {
idealLine = findHeaderLine(lines);
// If the next line is not empty, add another empty line
if(lines[idealLine + 1]) badgeContent += '\n';
lines.splice(idealLine + 1, 0, '\n' + badgeContent);
}
return lines.join('\n');
}
function findHeaderLine(lines) {
var i = 0;
for(;i < lines.length;i++) {
if(rHeader.test(lines[i])) return i;
}
return -1;
}
function findLastBadgeLine(lines) {
var i = lines.length - 1;
for(;i >= 0;i--) {
if(rBadgePrefix.test(lines[i])) return i;
}
return -1;
}
function getBadgeMarkdown(imgUrl, linkUrl, altText) {
return '[![' + altText + '](' + imgUrl + ')](' + linkUrl + ')';
}
module.exports = markdownBadger;
+29
View File
@@ -0,0 +1,29 @@
/* jshint node:true */
"use strict";
function badger(content, imgUrl, linkUrl, altText) {
var lines = content.split('\n');
var idealLine = findIdealLineForInsert(lines);
var badgeContent = '\n<a href="' + linkUrl + '"><img src="' + imgUrl + '" alt="' + altText + '"/></a>';
lines.splice(idealLine, 0, badgeContent);
return lines.join('\n');
}
function findIdealLineForInsert(lines) {
var i = 0;
var seenHeader = false;
for(; i < lines.length; i++) {
if(/^\s*(\=+)/.test(lines[i])) {
seenHeader = true;
} else {
if(seenHeader) break;
}
}
return i;
}
module.exports = badger;
+30
View File
@@ -0,0 +1,30 @@
/* jshint node:true */
"use strict";
function badger(content, imgUrl, linkUrl, altText) {
var lines = content.split('\n');
var idealLine = findIdealLineForInsert(lines);
var badgeContent = '\n #+ATTR_HTML: title="' + altText + '"' +
'\n [[' + linkUrl + '][file:' + imgUrl + ']]';
lines.splice(idealLine, 0, badgeContent);
return lines.join('\n');
}
function findIdealLineForInsert(lines) {
var i = 0;
var seenHeader = false;
for(; i < lines.length; i++) {
if(/^\s*(\*\s)/.test(lines[i])) {
seenHeader = true;
} else {
if(seenHeader) break;
}
}
return i;
}
module.exports = badger;
+10
View File
@@ -0,0 +1,10 @@
/* jshint node:true */
"use strict";
/**
* Sticks a url at the bottom of the page. Simple.
*/
module.exports = function(content, badgeUrl, linkUrl) {
var plainUrl = linkUrl.split('?')[0];
return content + '\nJoin the chat: '+ plainUrl + '\n';
};
+32
View File
@@ -0,0 +1,32 @@
/* jshint node:true */
"use strict";
function badger(content, imgUrl, linkUrl, altText) {
var lines = content.split('\n');
var idealLine = findIdealLineForInsert(lines);
var badgeContent = '\n=begin HTML\n' +
'\n' +
'<p><a href="' + linkUrl + '"><img src="' + imgUrl + '" alt="' + altText + '"></a></p>\n' +
'\n' +
'=end HTML';
lines.splice(idealLine, 0, badgeContent);
return lines.join('\n');
}
function findIdealLineForInsert(lines) {
var i = 0;
var seenHeader = false;
for(; i < lines.length; i++) {
if(/^\s*(\=head1)/.test(lines[i])) {
seenHeader = true;
} else {
if(seenHeader) break;
}
}
return i;
}
module.exports = badger;
+29
View File
@@ -0,0 +1,29 @@
/* jshint node:true */
"use strict";
function badger(content, imgUrl, linkUrl, altText) {
var lines = content.split('\n');
var idealLine = findIdealLineForInsert(lines);
var badgeContent = '\n{<img src="' + imgUrl + '" alt="' + altText + '">}[' + linkUrl + ']';
lines.splice(idealLine, 0, badgeContent);
return lines.join('\n');
}
function findIdealLineForInsert(lines) {
var i = 0;
var seenHeader = false;
for(; i < lines.length; i++) {
if(/^\s*(\=+)/.test(lines[i])) {
seenHeader = true;
} else {
if(seenHeader) break;
}
}
return i;
}
module.exports = badger;
+43
View File
@@ -0,0 +1,43 @@
/* jshint node:true */
"use strict";
// http://docutils.sourceforge.net/docs/user/rst/quickref.html#section-structure
var ACCEPTED_CHARS = ['=', '-', '`', ':', "'", '"', '~', '^', '_', '*', '+', '#', '<', '>'];
function badger(content, imgUrl, linkUrl, altText) {
var lines = content.split('\n');
var idealLine = findIdealLineForInsert(lines);
var badgeContent = '\n.. image:: ' + imgUrl + '\n' +
' :alt: ' + altText + '\n' +
' :target: ' + linkUrl;
lines.splice(idealLine, 0, badgeContent);
return lines.join('\n');
}
function findIdealLineForInsert(lines) {
var lineIdx = 1;
var chrIdx = 0;
var seenHeader = false;
for(; lineIdx < lines.length; lineIdx++) {
var line = lines[lineIdx];
var lineAbove = lines[lineIdx - 1];
var chrSeen = {};
for(; chrIdx < line.length; chrIdx++) {
chrSeen[line[chrIdx]] = null;
}
var uniqChars = Object.keys(chrSeen);
if(uniqChars.length === 1
&& ACCEPTED_CHARS.indexOf(uniqChars[0]) !== -1
&& line.length >= lineAbove.length) {
seenHeader = true;
} else {
if(seenHeader) break;
}
}
return lineIdx;
}
module.exports = badger;
+30
View File
@@ -0,0 +1,30 @@
/* jshint node:true */
"use strict";
function badger(content, imgUrl, linkUrl, altText) {
var lines = content.split('\n');
var idealLine = findIdealLineForInsert(lines);
var badgeContent = '\n!' + imgUrl + '(' + altText + ')!:' + linkUrl;
lines.splice(idealLine, 0, badgeContent);
return lines.join('\n');
}
function findIdealLineForInsert(lines) {
var i = 0;
var seenHeader = false;
for(; i < lines.length; i++) {
if(/^\s*(h1\.\s)/.test(lines[i])) {
seenHeader = true;
} else {
if(seenHeader) break;
}
}
return i;
}
module.exports = badger;
+34
View File
@@ -0,0 +1,34 @@
{
"name": "readme-badger",
"version": "0.3.0",
"description": "Inserts badges into GitHub READMEs",
"main": "index.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "mocha test/**/*.js"
},
"repository": {
"type": "git",
"url": "https://github.com/gitterHQ/readme-badger.git"
},
"keywords": [
"badge",
"badger",
"github",
"readme"
],
"author": "Andy Trevorah",
"license": "MIT",
"bugs": {
"url": "https://github.com/gitterHQ/readme-badger/issues"
},
"homepage": "https://github.com/gitterHQ/readme-badger",
"devDependencies": {
"mocha": "1.20.1"
},
"dependencies": {
"balanced-match": "^1.0.0"
}
}
@@ -0,0 +1,9 @@
My Amazing Library
==================
image:https://badges.gitter.im/Join%20Chat.svg[link="https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"]
Features
--------
It does amazing things!
@@ -0,0 +1,7 @@
My Amazing Library
==================
Features
--------
It does amazing things!
+2
View File
@@ -0,0 +1,2 @@
[![Join the chat at https://gitter.im/myorg/myrepo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
View File
+7
View File
@@ -0,0 +1,7 @@
# My Amazing Library
[![Join the chat at https://gitter.im/myorg/myrepo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Features
It does amazing things!
+5
View File
@@ -0,0 +1,5 @@
# My Amazing Library
## Features
It does amazing things!
@@ -0,0 +1,7 @@
# My Amazing Library
[![]()]() [![Join the chat at https://gitter.im/myorg/myrepo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Features
It does amazing things!
@@ -0,0 +1,7 @@
# My Amazing Library
[![]()]()
## Features
It does amazing things!
@@ -0,0 +1,7 @@
# My Amazing Library
[![npm version](https://img.shields.io/npm/v/vue.svg?style=flat)](https://www.npmjs.com/package/vue) [![Join the chat at https://gitter.im/myorg/myrepo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Features
It does amazing things!
@@ -0,0 +1,7 @@
# My Amazing Library
[![npm version](https://img.shields.io/npm/v/vue.svg?style=flat)](https://www.npmjs.com/package/vue)
## Features
It does amazing things!
@@ -0,0 +1,7 @@
# My Amazing Library
Inline [![npm version](https://img.shields.io/npm/v/vue.svg?style=flat)](https://www.npmjs.com/package/vue) [![some badge](https://badges.gitter.im/Join%20Chat.svg)](https://en.wikipedia.org/wiki/Saw_(disambiguation)) [![Join the chat at https://gitter.im/myorg/myrepo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) test
## Features
It does amazing things!
@@ -0,0 +1,7 @@
# My Amazing Library
Inline [![npm version](https://img.shields.io/npm/v/vue.svg?style=flat)](https://www.npmjs.com/package/vue) [![some badge](https://badges.gitter.im/Join%20Chat.svg)](https://en.wikipedia.org/wiki/Saw_(disambiguation)) test
## Features
It does amazing things!
@@ -0,0 +1,7 @@
# My Amazing Library
[![Some badge](badge.svg)](https://en.wikipedia.org/wiki/Saw_(disambiguation)) [![Join the chat at https://gitter.im/myorg/myrepo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Features
It does amazing things!
@@ -0,0 +1,7 @@
# My Amazing Library
[![Some badge](badge.svg)](https://en.wikipedia.org/wiki/Saw_(disambiguation))
## Features
It does amazing things!
@@ -0,0 +1,9 @@
# My Amazing Library
[![Join the chat at https://gitter.im/myorg/myrepo](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
My line-break is very expensive.
## Features
It does amazing things!
@@ -0,0 +1,6 @@
# My Amazing Library
My line-break is very expensive.
## Features
It does amazing things!
@@ -0,0 +1,7 @@
= My Amazing Library =
<a href="https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img src="https://badges.gitter.im/Join%20Chat.svg" alt="Join the chat at https://gitter.im/myorg/myrepo"/></a>
== Features ==
It does amazing things!
@@ -0,0 +1,5 @@
= My Amazing Library =
== Features ==
It does amazing things!
+7
View File
@@ -0,0 +1,7 @@
* My Awesome Library
#+ATTR_HTML: title="Join the chat at https://gitter.im/myorg/myrepo"
[[https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge][file:https://badges.gitter.im/Join%20Chat.svg]]
** Features
It does amazing things!
+4
View File
@@ -0,0 +1,4 @@
* My Awesome Library
** Features
It does amazing things!
+5
View File
@@ -0,0 +1,5 @@
My Library
I use some weird standard!
Join the chat at https://gitter.im/myorg/myrepo
+3
View File
@@ -0,0 +1,3 @@
My Library
I use some weird standard!
+11
View File
@@ -0,0 +1,11 @@
=head1 My Amazing Library
=begin HTML
<p><a href="https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img src="https://badges.gitter.im/Join%20Chat.svg" alt="Join the chat at https://gitter.im/myorg/myrepo"></a></p>
=end HTML
=head2 Features
It does amazing things!
+5
View File
@@ -0,0 +1,5 @@
=head1 My Amazing Library
=head2 Features
It does amazing things!
+7
View File
@@ -0,0 +1,7 @@
= My Amazing Library
{<img src="https://badges.gitter.im/Join%20Chat.svg" alt="Join the chat at https://gitter.im/myorg/myrepo">}[https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge]
== Features
It does amazing things!
+5
View File
@@ -0,0 +1,5 @@
= My Amazing Library
== Features
It does amazing things!
+7
View File
@@ -0,0 +1,7 @@
h1. My Amazing Library
!https://badges.gitter.im/Join%20Chat.svg(Join the chat at https://gitter.im/myorg/myrepo)!:https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
h2. Features
It does amazing things!
@@ -0,0 +1,5 @@
h1. My Amazing Library
h2. Features
It does amazing things!
+147
View File
@@ -0,0 +1,147 @@
/* jshint node:true, unused:strict */
/* global describe:true, it:true */
"use strict";
var assert = require('assert');
var fs = require('fs');
var badger = require('..');
describe('readme-badger', function() {
var imageUrl = 'https://badges.gitter.im/Join%20Chat.svg';
var linkUrl = 'https://gitter.im/myorg/myrepo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge';
var altText = 'Join the chat at https://gitter.im/myorg/myrepo';
it('inserts into markdown', function() {
var before = fs.readFileSync(__dirname + '/examples/markdown-before.md', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/markdown-after.md', { encoding: 'utf8' });
var result = badger.addBadge(before, 'md', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into markdown that already has a badge', function() {
var before = fs.readFileSync(__dirname + '/examples/markdown-hasbadge-before.md', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/markdown-hasbadge-after.md', { encoding: 'utf8' });
var result = badger.addBadge(before, 'md', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into markdown that already has a badge with parenthesis link', function() {
var before = fs.readFileSync(__dirname + '/examples/markdown-hasbadge-parenthesis-link-before.md', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/markdown-hasbadge-parenthesis-link-after.md', { encoding: 'utf8' });
var result = badger.addBadge(before, 'md', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into markdown that has empty badge', function() {
var before = fs.readFileSync(__dirname + '/examples/markdown-empty-badge-before.md', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/markdown-empty-badge-after.md', { encoding: 'utf8' });
var result = badger.addBadge(before, 'md', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into markdown that has inline badge', function() {
var before = fs.readFileSync(__dirname + '/examples/markdown-hasbadge-inline-before.md', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/markdown-hasbadge-inline-after.md', { encoding: 'utf8' });
var result = badger.addBadge(before, 'md', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into markdown that content follows the title without empty line', function() {
var before = fs.readFileSync(__dirname + '/examples/markdown-tense-title-before.md', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/markdown-tense-title-after.md', { encoding: 'utf8' });
var result = badger.addBadge(before, 'md', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into textile', function() {
var before = fs.readFileSync(__dirname + '/examples/textile-before.textile', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/textile-after.textile', { encoding: 'utf8' });
var result = badger.addBadge(before, 'textile', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into rdoc', function() {
var before = fs.readFileSync(__dirname + '/examples/rdoc-before.rdoc', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/rdoc-after.rdoc', { encoding: 'utf8' });
var result = badger.addBadge(before, 'rdoc', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into orgmode', function() {
var before = fs.readFileSync(__dirname + '/examples/orgmode-before.org', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/orgmode-after.org', { encoding: 'utf8' });
var result = badger.addBadge(before, 'org', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into mediawiki', function() {
var before = fs.readFileSync(__dirname + '/examples/mediawiki-before.mediawiki', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/mediawiki-after.mediawiki', { encoding: 'utf8' });
var result = badger.addBadge(before, 'mediawiki', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into asciidoc', function() {
var before = fs.readFileSync(__dirname + '/examples/asciidoc-before.asciidoc', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/asciidoc-after.asciidoc', { encoding: 'utf8' });
var result = badger.addBadge(before, 'asciidoc', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into pod', function() {
var before = fs.readFileSync(__dirname + '/examples/pod-before.pod', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/pod-after.pod', { encoding: 'utf8' });
var result = badger.addBadge(before, 'pod', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into plaintext', function() {
var before = fs.readFileSync(__dirname + '/examples/plaintext-before.txt', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/plaintext-after.txt', { encoding: 'utf8' });
var result = badger.addBadge(before, 'txt', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into unsupported filetypes', function() {
var before = fs.readFileSync(__dirname + '/examples/plaintext-before.txt', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/plaintext-after.txt', { encoding: 'utf8' });
var result = badger.addBadge(before, null, imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts into empty files', function () {
var before = fs.readFileSync(__dirname + '/examples/empty-before.md', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/examples/empty-after.md', { encoding: 'utf8' });
var result = badger.addBadge(before, 'md', imageUrl, linkUrl, altText);
assert.equal(result, after)
})
});
+12
View File
@@ -0,0 +1,12 @@
####################
My Amazing Library
####################
.. image:: https://badges.gitter.im/badge.svg
:alt: Badgers are great!
:target: https://gitter.im
Features
--------
It does amazing things!
+8
View File
@@ -0,0 +1,8 @@
####################
My Amazing Library
####################
Features
--------
It does amazing things!
+33
View File
@@ -0,0 +1,33 @@
/* jshint node:true, unused:strict */
/* global describe:true, it:true */
"use strict";
var assert = require('assert');
var fs = require('fs');
var badger = require('../..');
describe('reStructuredText', function() {
var imageUrl = 'https://badges.gitter.im/badge.svg';
var linkUrl = 'https://gitter.im';
var altText = 'Badgers are great!';
it('inserts below double hash header', function() {
var before = fs.readFileSync(__dirname + '/hash-header-before.rst', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/hash-header-after.rst', { encoding: 'utf8' });
var result = badger.addBadge(before, 'rst', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
it('inserts below double tilde header', function() {
var before = fs.readFileSync(__dirname + '/tilde-header-before.rst', { encoding: 'utf8' });
var after = fs.readFileSync(__dirname + '/tilde-header-after.rst', { encoding: 'utf8' });
var result = badger.addBadge(before, 'rst', imageUrl, linkUrl, altText);
assert.equal(result, after);
});
});
+12
View File
@@ -0,0 +1,12 @@
~~~~~~~~~~~~~~~~~~~~
My Amazing Library
~~~~~~~~~~~~~~~~~~~~
.. image:: https://badges.gitter.im/badge.svg
:alt: Badgers are great!
:target: https://gitter.im
Features
--------
It does amazing things!
+8
View File
@@ -0,0 +1,8 @@
~~~~~~~~~~~~~~~~~~~~
My Amazing Library
~~~~~~~~~~~~~~~~~~~~
Features
--------
It does amazing things!