mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-01 05:50:35 +03:00
Removing typography extension
issue #2312 - The typography extension is still interfering in HTML blocks, reference style links and other bits and pieces it probably shouldn't be :( - We'll add it back when it's ready.
This commit is contained in:
parent
39957a7a1d
commit
d8f724d94d
@ -461,7 +461,6 @@ var path = require('path'),
|
||||
'bower_components/validator-js/validator.js',
|
||||
|
||||
'core/client/assets/lib/showdown/extensions/ghostdown.js',
|
||||
'core/shared/lib/showdown/extensions/typography.js',
|
||||
'core/shared/lib/showdown/extensions/github.js',
|
||||
|
||||
// ToDo: Remove or replace
|
||||
@ -524,7 +523,6 @@ var path = require('path'),
|
||||
'bower_components/validator-js/validator.js',
|
||||
|
||||
'core/client/assets/lib/showdown/extensions/ghostdown.js',
|
||||
'core/shared/lib/showdown/extensions/typography.js',
|
||||
'core/shared/lib/showdown/extensions/github.js',
|
||||
|
||||
// ToDo: Remove or replace
|
||||
|
@ -9,7 +9,7 @@
|
||||
'use strict';
|
||||
|
||||
var HTMLPreview = function (markdown, uploadMgr) {
|
||||
var converter = new Showdown.converter({extensions: ['typography', 'ghostdown', 'github']}),
|
||||
var converter = new Showdown.converter({extensions: ['ghostdown', 'github']}),
|
||||
preview = document.getElementsByClassName('rendered-markdown')[0],
|
||||
update;
|
||||
|
||||
|
@ -4,8 +4,7 @@ var _ = require('lodash'),
|
||||
errors = require('../errorHandling'),
|
||||
Showdown = require('showdown'),
|
||||
github = require('../../shared/lib/showdown/extensions/github'),
|
||||
typography = require('../../shared/lib/showdown/extensions/typography'),
|
||||
converter = new Showdown.converter({extensions: [typography, github]}),
|
||||
converter = new Showdown.converter({extensions: [github]}),
|
||||
User = require('./user').User,
|
||||
Tag = require('./tag').Tag,
|
||||
Tags = require('./tag').Tags,
|
||||
|
@ -1,114 +0,0 @@
|
||||
/*global module */
|
||||
//
|
||||
// Replaces straight quotes with curly ones, -- and --- with en dash and em
|
||||
// dash respectively, and ... with horizontal ellipses.
|
||||
//
|
||||
|
||||
(function () {
|
||||
var typography = function () {
|
||||
return [
|
||||
{
|
||||
type: "lang",
|
||||
filter: function (text) {
|
||||
var fCodeblocks = {}, nCodeblocks = {}, iCodeblocks = {},
|
||||
e = {
|
||||
endash: '\u2009\u2013\u2009', // U+2009 = thin space
|
||||
emdash: '\u2014',
|
||||
lsquo: '\u2018',
|
||||
rsquo: '\u2019',
|
||||
ldquo: '\u201c',
|
||||
rdquo: '\u201d',
|
||||
hellip: '\u2026'
|
||||
},
|
||||
|
||||
i;
|
||||
|
||||
// Extract fenced code blocks.
|
||||
i = -1;
|
||||
text = text.replace(/```((?:.|\n)+?)```/g,
|
||||
function (match, code) {
|
||||
i += 1;
|
||||
fCodeblocks[i] = "```" + code + "```";
|
||||
return "{typog-fcb-" + i + "}";
|
||||
});
|
||||
|
||||
// Extract indented code blocks.
|
||||
i = -1;
|
||||
text = text.replace(/((\n+([ ]{4}|\t).+)+)/g,
|
||||
function (match, code) {
|
||||
i += 1;
|
||||
nCodeblocks[i] = " " + code;
|
||||
return "{typog-ncb-" + i + "}";
|
||||
});
|
||||
|
||||
// Extract inline code blocks
|
||||
i = -1;
|
||||
text = text.replace(/`(.+)`/g, function (match, code) {
|
||||
i += 1;
|
||||
iCodeblocks[i] = "`" + code + "`";
|
||||
return "{typog-icb-" + i + "}";
|
||||
});
|
||||
|
||||
// Perform typographic symbol replacement.
|
||||
|
||||
// Double quotes. There might be a reason this doesn't use
|
||||
// the same \b matching style as the single quotes, but I
|
||||
// can't remember what it is :(
|
||||
text = text.
|
||||
// Opening quotes
|
||||
replace(/"([\w'])/g, e.ldquo + "$1").
|
||||
// All the rest
|
||||
replace(/"/g, e.rdquo);
|
||||
|
||||
// Single quotes/apostrophes
|
||||
text = text.
|
||||
// Apostrophes first
|
||||
replace(/\b'\b/g, e.rsquo).
|
||||
// Opening quotes
|
||||
replace(/'\b/g, e.lsquo).
|
||||
// All the rest
|
||||
replace(/'/g, e.rsquo);
|
||||
|
||||
// Dashes
|
||||
text = text.
|
||||
// Don't replace lines containing only hyphens
|
||||
replace(/^-+$/gm, "{typog-hr}").
|
||||
replace(/---/g, e.emdash).
|
||||
replace(/ -- /g, e.endash).
|
||||
replace(/{typog-hr}/g, "----");
|
||||
|
||||
// Ellipses.
|
||||
text = text.replace(/\.{3}/g, e.hellip);
|
||||
|
||||
|
||||
// Restore fenced code blocks.
|
||||
text = text.replace(/{typog-fcb-([0-9]+)}/g, function (x, y) {
|
||||
return fCodeblocks[y];
|
||||
});
|
||||
|
||||
// Restore indented code blocks.
|
||||
text = text.replace(/{typog-ncb-([0-9]+)}/g, function (x, y) {
|
||||
return nCodeblocks[y];
|
||||
});
|
||||
|
||||
// Restore inline code blocks.
|
||||
text = text.replace(/{typog-icb-([0-9]+)}/g, function (x, y) {
|
||||
return iCodeblocks[y];
|
||||
});
|
||||
|
||||
return text;
|
||||
}
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
// Client-side export
|
||||
if (typeof window !== 'undefined' && window.Showdown && window.Showdown.extensions) {
|
||||
window.Showdown.extensions.typography = typography;
|
||||
}
|
||||
// Server-side export
|
||||
if (typeof module !== 'undefined') {
|
||||
module.exports = typography;
|
||||
}
|
||||
}());
|
||||
|
@ -10,7 +10,7 @@ CasperTest.begin('Ensure that RSS is available', 11, function suite(test) {
|
||||
siteDescription = '<description><![CDATA[Just a blogging platform.]]></description>',
|
||||
siteUrl = '<link>http://127.0.0.1:2369/</link>',
|
||||
postTitle = '<![CDATA[Welcome to Ghost]]>',
|
||||
postStart = '<description><![CDATA[<p>You’re live!',
|
||||
postStart = '<description><![CDATA[<p>You\'re live!',
|
||||
postEnd = 'you think :)</p>]]></description>',
|
||||
postLink = '<link>http://127.0.0.1:2369/welcome-to-ghost/</link>',
|
||||
postCreator = '<dc:creator><![CDATA[Test User]]>';
|
||||
@ -29,17 +29,17 @@ CasperTest.begin('Ensure that RSS is available', 11, function suite(test) {
|
||||
});
|
||||
}, false);
|
||||
|
||||
CasperTest.begin('Ensure that author element is not included. Only dc:creator', 3, function suite(test) {
|
||||
CasperTest.begin('Ensure that author element is not included. Only dc:creator', 3, function suite(test) {
|
||||
CasperTest.Routines.togglePermalinks.run('off');
|
||||
casper.thenOpen(url + 'rss/', function (response) {
|
||||
casper.thenOpen(url + 'rss/', function (response) {
|
||||
var content = this.getPageContent(),
|
||||
author = '<author>',
|
||||
postCreator = '<dc:creator><![CDATA[Test User]]>';
|
||||
|
||||
test.assertEqual(response.status, 200, 'Response status should be 200.');
|
||||
test.assert(content.indexOf(author) < 0, 'Author element should not be included');
|
||||
test.assert(content.indexOf(postCreator) >= 0, 'Welcome post should have Test User as the creator.');
|
||||
});
|
||||
test.assert(content.indexOf(postCreator) >= 0, 'Welcome post should have Test User as the creator.');
|
||||
});
|
||||
}, false);
|
||||
|
||||
CasperTest.begin('Ensures dated permalinks works with RSS', 2, function suite(test) {
|
||||
|
@ -478,4 +478,19 @@ describe("Showdown client side converter", function () {
|
||||
processedMarkup.should.match(testPhrase.output);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Waiting for showdown typography to be updated
|
||||
// it("should correctly convert quotes to curly quotes", function () {
|
||||
// var testPhrases = [
|
||||
// {
|
||||
// input: "Hello world\nIt's a fine day\nout",
|
||||
// output: /^<p>Hello world <br \/>\nIt’s a fine day <br \/>\nout<\/p>$/}
|
||||
// ];
|
||||
//
|
||||
// testPhrases.forEach(function (testPhrase) {
|
||||
// processedMarkup = converter.makeHtml(testPhrase.input);
|
||||
// processedMarkup.should.match(testPhrase.output);
|
||||
// });
|
||||
// })
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user