babel / babel/website

REPL: Add support for elastic tabstops

Open
#1,404 0 comments 0 reactions 0 assignees View on GitHub
repl
Dominant language
TypeScript
Stars
777
Forks
1.4k
Avg merge
16h 45m
Merged PRs (30d)
3

Description

[Elastic tabstops](http://nickgravgaard.com/elastic-tabstops/) allow for better code alignment using tabs.

There is already a [JavaScript library](https://github.com/hax/etab) for this, but I would recommend using [my fork](https://github.com/ExE-Boss/etab/tree/fix/docs-and-tab-alignment), because it [has support for JSDoc and fixes some issues](https://github.com/hax/etab/compare/master...ExE-Boss:fix/docs-and-tab-alignment#diff-1fdf421c05c1140f6d71444ea2b27638) with the original implementation.

## Example:

A code written like so:

```javascript
const languageData = {
en: {
appTitle: { "message": "Some app" },
description: { "message": "This application does things" },

options: { "message": "Options" },
options_theme: { "message": "Theme:" },
options_theme_default: { "message": "Default Theme" },
options_theme_colorful: { "message": "Colorful Theme" }
},

en_GB: {
options_theme_colorful: { "message": "Colourful Theme" }
}
}

export const translateMessage = (message) => {
const navLang = navigator.language.split("-");
let translated = undefined;
let prevLang = undefined;

for (let i = 0; i < navLang.length; i++) {
let stuff = navLang[i];
if (prevLang) {
stuff = `${prevLang}_${stuff}`;
}
translated = languageData[stuff][message] || translated;
}

return translated;
}
```

Would render like so:

```javascript
const languageData = {
en: {
appTitle: { "message": "Some app" },
description: { "message": "This application does things" },

options: { "message": "Options" },
options_theme: { "message": "Theme:" },
options_theme_default: { "message": "Default Theme" },
options_theme_colorful: { "message": "Colorful Theme" }
},

en_GB: {
options_theme_colorful: { "message": "Colourful Theme" }
}
}

export const translateMessage = (message) => {
const navLang = navigator.language.split("-");
let translated = undefined;
let prevLang = undefined;

for (let i = 0; i < navLang.length; i++) {
let stuff = navLang[i];
if (prevLang) {
stuff = `${prevLang}_${stuff}`;
}
translated = languageData[stuff][message] || translated;
}

return translated;
}
```

(If this gets implemented then space indented code might finally die once and for all, because space indented code is much bigger than tab indented code (4 bytes (4 spaces) vs 1 byte (1 tab)).)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.