diff --git a/README.md b/README.md
index 4d858ae..568384a 100644
--- a/README.md
+++ b/README.md
@@ -241,7 +241,7 @@ var defaultOptions = showdown.getDefaultOptions();
foo
```
- * **parseImgDimensions**: (boolean) [default false] Enable support for setting image dimensions from within markdown syntax.
+ * **parseImgDimensions**: (boolean) [default true] Enable support for setting image dimensions from within markdown syntax.
Examples:
```
![foo](foo.jpg =100x80) simple, assumes units are in px
diff --git a/docs/available-options.md b/docs/available-options.md
index 9cbc3c0..71ced37 100644
--- a/docs/available-options.md
+++ b/docs/available-options.md
@@ -475,7 +475,7 @@ Open links in new windows.
Set image dimensions from within Markdown syntax.
* type: `boolean`
-* default value: `false`
+* default value: `true`
* introduced in: `1.1.0`
=== "example"
diff --git a/src/options.js b/src/options.js
index 19deb66..addd830 100644
--- a/src/options.js
+++ b/src/options.js
@@ -42,7 +42,7 @@ function getDefaultOpts (simple) {
type: 'integer'
},
parseImgDimensions: {
- defaultValue: false,
+ defaultValue: true,
describe: 'Turn on/off image dimension parsing',
type: 'boolean'
},
diff --git a/src/subParsers/makehtml/images.js b/src/subParsers/makehtml/images.js
index e7fbbc1..d87b3a8 100644
--- a/src/subParsers/makehtml/images.js
+++ b/src/subParsers/makehtml/images.js
@@ -6,11 +6,25 @@ showdown.subParser('makehtml.images', function (text, options, globals) {
text = globals.converter._dispatch('makehtml.images.before', text, options, globals).getText();
- var inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g,
- crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g,
- base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g,
- referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g,
- refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g;
+ var inlineRegExp,
+ crazyRegExp,
+ base64RegExp,
+ referenceRegExp,
+ refShortcutRegExp;
+
+ if (options.parseImgDimensions) {
+ inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g;
+ crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g;
+ base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g;
+ referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g;
+ refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g;
+ } else {
+ inlineRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?([\S]+?(?:\([\S]*?\)[\S]*?)?)>?()()[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g;
+ crazyRegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>()()[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g;
+ base64RegExp = /!\[([^\]]*?)][ \t]*()\([ \t]?(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?()()[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g;
+ referenceRegExp = /!\[([^\]]*?)] ?(?:\n *)?\[([\s\S]*?)]()()()()()/g;
+ refShortcutRegExp = /!\[([^\[\]]+)]()()()()()/g;
+ }
function writeImageTagBase64 (wholeMatch, altText, linkId, url, width, height, m5, title) {
url = url.replace(/\s/g, '');
diff --git a/src/subParsers/makehtml/stripLinkDefinitions.js b/src/subParsers/makehtml/stripLinkDefinitions.js
index 894c8d9..4e09275 100644
--- a/src/subParsers/makehtml/stripLinkDefinitions.js
+++ b/src/subParsers/makehtml/stripLinkDefinitions.js
@@ -6,8 +6,16 @@
showdown.subParser('makehtml.stripLinkDefinitions', function (text, options, globals) {
'use strict';
- var regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm,
- base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm;
+ var regex,
+ base64Regex;
+
+ if (options.parseImgDimensions) {
+ regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*([^>\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm;
+ base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm;
+ } else {
+ regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*([^>\s]+)>?()()[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm;
+ base64Regex = /^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*(data:.+?\/.+?;base64,[A-Za-z0-9+/=\n]+?)>?()()[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm;
+ }
// attacklab: sentinel workarounds for lack of \A and \Z, safari\khtml bug
text += '¨0';
diff --git a/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.html b/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.html
new file mode 100644
index 0000000..ba26b50
--- /dev/null
+++ b/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.html
@@ -0,0 +1,3 @@
+![my image](./pic/pic1_50.png =100pxx20px)
+![my image2][1]
+[1]: ./pic/pic1_50.png =100pxx20px
diff --git a/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.md b/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.md
new file mode 100644
index 0000000..ecbd02f
--- /dev/null
+++ b/test/functional/makehtml/cases/features/#143.not.support-image-dimensions.md
@@ -0,0 +1,5 @@
+![my image](./pic/pic1_50.png =100pxx20px)
+
+![my image2][1]
+
+[1]: ./pic/pic1_50.png =100pxx20px
diff --git a/test/functional/makehtml/testsuite.features.js b/test/functional/makehtml/testsuite.features.js
index 2ef6c38..62d89bc 100644
--- a/test/functional/makehtml/testsuite.features.js
+++ b/test/functional/makehtml/testsuite.features.js
@@ -32,6 +32,8 @@ describe('makeHtml() features testsuite', function () {
var converter;
if (testsuite[i].name === '#143.support-image-dimensions') {
converter = new showdown.Converter({parseImgDimensions: true});
+ } else if (testsuite[i].name === '#143.not.support-image-dimensions') {
+ converter = new showdown.Converter({parseImgDimensions: false});
} else if (testsuite[i].name === '#69.header-level-start') {
converter = new showdown.Converter({headerLevelStart: 3});
} else if (testsuite[i].name === '#164.1.simple-autolink' || testsuite[i].name === '#204.certain-links-with-at-and-dot-break-url') {