Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tabs within code block are converted to 4 spaces? #644

Closed
reggi opened this issue Aug 14, 2015 · 5 comments
Closed

Tabs within code block are converted to 4 spaces? #644

reggi opened this issue Aug 14, 2015 · 5 comments

Comments

@reggi
Copy link

reggi commented Aug 14, 2015

You can see I have to code blocks one with a two space indentation and one with a tab. The tab is oddly converted to 4 spaces.

var marked = require('marked')
var Promise = require('bluebird')
var markedAsync = Promise.promisify(marked)
var markdown = [
  '```js',
  'if (true) {',
  '   console.log(\'word spaces\')',
  '}',
  '```',
  '```js',
  'if (true) {',
  ' console.log(\'word tabs\')',
  '}',
  '```'
].join('\n')
console.log(JSON.stringify(markdown))
markedAsync(markdown)
.then(function (html) {
  console.log(JSON.stringify(html))
})
"```js\nif (true) {\n  console.log('word spaces')\n}\n```\n```js\nif (true) {\n\tconsole.log('word tabs')\n}\n```"
"<pre><code class=\"lang-js\">if (true) {\n  console.log(&#39;word spaces&#39;)\n}\n</code></pre>\n<pre><code class=\"lang-js\">if (true) {\n    console.log(&#39;word tabs&#39;)\n}\n</code></pre>\n"
@mbovel
Copy link

mbovel commented Mar 18, 2016

Same problem here. I think this is definitely a bug: code blocks should not be modified in any way. That's the behaviour promoted by CommonMark.

Discount and Pandoc, however, also seem to convert tabs to spaces.

@joshbruce
Copy link
Member

#983

@Feder1co5oave
Copy link
Contributor

Feder1co5oave commented Jan 10, 2018

You're right, commonmark says that. However, marked heavily relies on the fact that everything is indented with spaces. Code blocks, list, blockquotes...
I don't think this can be changed without a massive review of the source code.

@vixalien
Copy link

If it is not possible to let tabs remain the same, atleast allow the user the select the number of spaces they want.

@UziTech
Copy link
Member

UziTech commented Dec 18, 2021

@vixalien you can convert them before you send the markdown to marked.

// tab is 2 spaces
marked.parse(markdown.replace(/\t/g, '  '))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants