Open brandonkal opened 4 years ago
Looking at the code, I see that lines that have no indentation are ignored. It is not explicitly mentioned in the readme but I guess it makes sense, otherwise dedent
would do nothing in those cases and there would be no point in using it.
I've created a fix and PR. I'm using this internal to a yaml template tag function. Naturally YAML is very indent focused but the function doesn't know ahead of time if a dedent needs to occur before parsing the string to a JavaScript object.
Looking at the code, I see that lines that have no indentation are ignored. It is not explicitly mentioned in the readme but I guess it makes sense, otherwise
dedent
would do nothing in those cases and there would be no point in using it.
Should dedent
really be useful in this situation? I think consistent behaviour here has more advantages. Here are a few:
dedent
becomes an idempotent operation if this quirk is removeddedent
is used for the purpose of making code more readable (I would speculate this is the most common use case), indentation is lost when a string happens to start from all the way at the leftdedent-js
could provide a flag to explicitly remove indentation up to a specified depth, if that's what's desired, covering more use cases overall while making behaviour more consistentAlso Github reports that there are over 18 thousand repositories using this package. It is irresponsible to leave this awful quirk in the code.
A possible workaround is to add a space at the begging of each line
dedent(text.replace(/(^[^\n]|\n)/g, '$1 '))
I think the issue here is you might be using dedent-js
on something where you don't know the final tabbing. Because of that, it makes sense for dedent
to do nothing. I'm also for this change.
becomes