aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorache <ache@ache.one>2018-02-04 04:49:32 +0100
committerache <ache@ache.one>2018-02-04 04:49:32 +0100
commit5ef5b666c2caa7961523f5566d0f480d564dd7fb (patch)
treee0ed1baf734f86ccc67613244147debbc09eda30
parentXO fix (diff)
Work on the style guideline
-rw-r--r--.eslintrc.json188
-rw-r--r--app.js98
-rw-r--r--package.json8
-rw-r--r--public/js/qcm.js12
-rw-r--r--public/js/script.js8
5 files changed, 266 insertions, 48 deletions
diff --git a/.eslintrc.json b/.eslintrc.json
new file mode 100644
index 0000000..147e056
--- /dev/null
+++ b/.eslintrc.json
@@ -0,0 +1,188 @@
+{
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module"
+ },
+
+ "env": {
+ "es6": true,
+ "node": true,
+ "mocha": true
+ },
+
+ "plugins": [],
+
+ "globals": {
+ "document": false,
+ "navigator": false,
+ "window": false,
+ "expect": true
+ },
+
+ "rules": {
+ "accessor-pairs": 2,
+ "array-bracket-spacing": [1, "never"],
+ "arrow-spacing": [2, {"before": true, "after": true}],
+ "block-spacing": [2, "always"],
+ "brace-style": [2, "1tbs", {"allowSingleLine": true}],
+ "camelcase": [2, {"properties": "never"}],
+ "comma-dangle": [1, "always-multiline"],
+ "comma-spacing": [2, {"before": false, "after": true}],
+ "comma-style": [2, "last"],
+ "computed-property-spacing": [2, "never"],
+ "constructor-super": 2,
+ "curly": [2, "multi-line"],
+ "dot-location": [2, "property"],
+ "eol-last": [2, "always"],
+ "eqeqeq": [2, "allow-null"],
+ "func-call-spacing": [2, "never"],
+ "callback-return": [1, ["callback", "cb", "done"]],
+ "handle-callback-err": [2, "^(err|error)$"],
+ "indent": [2, 2, {
+ "SwitchCase": 1,
+ "VariableDeclarator": 1,
+ "outerIIFEBody": 1,
+ "FunctionDeclaration": {
+ "parameters": 1,
+ "body": 1
+ },
+ "FunctionExpression": {
+ "parameters": 1,
+ "body": 1
+ }
+ }],
+ "key-spacing": [2, {"beforeColon": false, "afterColon": true}],
+ "keyword-spacing": [2, {"before": true, "after": true}],
+ "linebreak-style": [2, "unix"],
+ "max-len": ["error", {
+ "code": 100,
+ "ignoreRegExpLiterals": true,
+ "ignorePattern": "^\\s*const\\s.+=\\s*require\\s*\\("
+ }],
+ "new-cap": [2, {"newIsCap": true, "capIsNew": false}],
+ "new-parens": 2,
+ "newline-per-chained-call": [2, {"ignoreChainWithDepth": 4}],
+ "no-array-constructor": 2,
+ "no-caller": 2,
+ "no-class-assign": 2,
+ "no-cond-assign": 2,
+ "no-console": [1, {"allow": ["error"]}],
+ "no-const-assign": 2,
+ "no-constant-condition": [2, {"checkLoops": false}],
+ "no-control-regex": 2,
+ "no-debugger": 2,
+ "no-delete-var": 2,
+ "no-dupe-args": 2,
+ "no-dupe-class-members": 2,
+ "no-dupe-keys": 2,
+ "no-duplicate-case": 2,
+ "no-duplicate-imports": 2,
+ "no-empty-character-class": 2,
+ "no-empty-pattern": 2,
+ "no-eval": 2,
+ "no-ex-assign": 2,
+ "no-extend-native": 2,
+ "no-extra-bind": 2,
+ "no-extra-boolean-cast": 2,
+ "no-extra-parens": [2, "functions"],
+ "no-fallthrough": 2,
+ "no-floating-decimal": 2,
+ "no-func-assign": 2,
+ "no-global-assign": 2,
+ "no-implied-eval": 2,
+ "no-inner-declarations": [2, "functions"],
+ "no-invalid-regexp": 2,
+ "no-irregular-whitespace": 2,
+ "no-iterator": 2,
+ "no-label-var": 2,
+ "no-labels": [2, {"allowLoop": false, "allowSwitch": false}],
+ "no-lone-blocks": 2,
+ "no-lonely-if": 2,
+ "no-mixed-operators": [2, {
+ "groups": [
+ ["+", "-", "*", "/", "%", "**"],
+ ["&", "|", "^", "~", "<<", ">>", ">>>"],
+ ["==", "!=", "===", "!==", ">", ">=", "<", "<="],
+ ["&&", "||"],
+ ["in", "instanceof"]
+ ],
+ "allowSamePrecedence": false
+ }],
+ "no-mixed-spaces-and-tabs": 2,
+ "no-multi-spaces": 2,
+ "no-multi-str": 2,
+ "no-multiple-empty-lines": [2, {"max": 2}],
+ "no-native-reassign": 2,
+ "no-negated-in-lhs": 2,
+ "no-nested-ternary": 2,
+ "no-new": 2,
+ "no-new-func": 2,
+ "no-new-object": 2,
+ "no-new-require": 2,
+ "no-new-symbol": 2,
+ "no-new-wrappers": 2,
+ "no-obj-calls": 2,
+ "no-octal": 2,
+ "no-octal-escape": 2,
+ "no-path-concat": 2,
+ "no-proto": 2,
+ "no-redeclare": 2,
+ "no-regex-spaces": 2,
+ "no-return-assign": [2, "except-parens"],
+ "no-self-assign": 2,
+ "no-self-compare": 2,
+ "no-sequences": 2,
+ "no-shadow-restricted-names": 2,
+ "no-sparse-arrays": 2,
+ "no-tabs": 2,
+ "no-template-curly-in-string": 2,
+ "no-this-before-super": 2,
+ "no-throw-literal": 2,
+ "no-trailing-spaces": 2,
+ "no-undef": 2,
+ "no-undef-init": 2,
+ "no-unexpected-multiline": 2,
+ "no-unmodified-loop-condition": 2,
+ "no-unneeded-ternary": [2, {"defaultAssignment": false}],
+ "no-unreachable": 2,
+ "no-unsafe-finally": 2,
+ "no-unsafe-negation": 2,
+ "no-unused-vars": [2, {"vars": "all", "args": "none"}],
+ "no-useless-call": 2,
+ "no-useless-computed-key": 2,
+ "no-useless-constructor": 2,
+ "no-useless-escape": 2,
+ "no-useless-rename": 2,
+ "no-var": 2,
+ "no-whitespace-before-property": 2,
+ "no-with": 2,
+ "object-curly-spacing": [1, "never"],
+ "object-property-newline": [2, {"allowMultiplePropertiesPerLine": true}],
+ "one-var": [2, {"initialized": "never"}],
+ "operator-linebreak": [2, "after", {"overrides": {"?": "before", ":": "before"}}],
+ "padded-blocks": [0, "never"],
+ "prefer-template": 2,
+ "prefer-const": [2, {"destructuring": "any", "ignoreReadBeforeAssign": true}],
+ "quotes": [2, "single", {"avoidEscape": true, "allowTemplateLiterals": true}],
+ "rest-spread-spacing": [2, "never"],
+ "space-before-blocks": [2, "always"],
+ "space-before-function-paren": ["error", {
+ "anonymous": "always",
+ "named": "never",
+ "asyncArrow": "always"
+ }],
+ "space-in-parens": [2, "never"],
+ "space-infix-ops": 2,
+ "space-unary-ops": [2, {"words": true, "nonwords": false}],
+ "spaced-comment": [2, "always",
+ {"line": {"markers": ["*package", "!", ","]}, "block": {"balanced": true, "markers": ["*package", "!", ","], "exceptions": ["*"]}}
+ ],
+ "template-curly-spacing": [2, "never"],
+ "unicode-bom": [2, "never"],
+ "use-isnan": 2,
+ "valid-typeof": 2,
+ "wrap-iife": [2, "any", {"functionPrototypeMethods": true}],
+ "yield-star-spacing": [2, "both"],
+ "yoda": [2, "never"]
+ }
+}
diff --git a/app.js b/app.js
index eb95838..85687e0 100644
--- a/app.js
+++ b/app.js
@@ -8,7 +8,7 @@ const path = 'md';
const app = express();
process.on('uncaughtException', err => {
- console.error('[' + new Date() + '] > Error - ' + err);
+ console.error(`[${new Date()}] > Error - ${err}`);
});
const report = require('vfile-reporter');
@@ -37,42 +37,46 @@ const rawButton = '<button class="raw_button" ><div><div>Raw</div></div></button
function toHTML(data, fnc) {
unified()
- .use(remark)
- .use(lineInput)
- .use(textInput)
- .use(select)
- .use(multiChoice)
- .use(math)
- .use(kbd)
- .use(sb)
- .use(highlight)
- .use(html, {allowDangerousHTML: true})
- .use(rehypeKatex)
- .use(raw)
- .use(rehypeStringify)
-
- .process(data, fnc);
+ .use(remark)
+ .use(lineInput)
+ .use(textInput)
+ .use(select)
+ .use(multiChoice)
+ .use(math)
+ .use(kbd)
+ .use(sb)
+ .use(highlight)
+ .use(html, {allowDangerousHTML: true})
+ .use(rehypeKatex)
+ .use(raw)
+ .use(rehypeStringify)
+
+ .process(data, fnc);
}
app.use(express.static('public'));
-app.get('/' + path + '/*', (req, res) => {
+app.get(`/${path}/*`, (req, res) => {
const url = decodeURI(req._parsedUrl.pathname);
const query = req.query;
- console.log('[' + new Date() + '] > ' + 200 + ' - ' + url);
+ console.log(`[${new Date()}] > ${200} - ${url}`);
if (query && query.raw === 'true') {
- res.sendFile(url, {root: '.',
+ res.sendFile(url, {
+ root: '.',
dotfiles: 'deny',
headers: {
'x-timestamp': Date.now(),
- 'x-sent': true}}, err => {
- if (err) {
- console.log('Error : ', err);
- } else {
- console.log('Sent : ', url);
- }
- });
+ 'x-sent': true,
+ },
+ }, err => {
+ if (err) {
+ console.log('Error : ', err);
+ } else {
+ console.log('Sent : ', url);
+ }
+ }
+ );
return;
}
fs.readFile(url.substr(1), 'utf8', (err, data) => {
@@ -80,8 +84,8 @@ app.get('/' + path + '/*', (req, res) => {
return console.log(err);
}
-// Remark()
- /* Debbug comment
+ // Remark()
+ /* Debbug comment
const a = unified()
.use(remark)
.use(lineInput)
@@ -93,20 +97,20 @@ app.get('/' + path + '/*', (req, res) => {
*/
toHTML(data, (err, file) => {
- res.send(String(file) + useLandScript +
- '<a href="' + url + '?raw=true" class="no-style">' + rawButton + '</a>');
+ res.send(`${String(file) + useLandScript
+ }<a href="${url}?raw=true" class="no-style">${rawButton}</a>`);
console.error(report(err || file));
});
});
});
app.get('/data', (req, res) => {
- console.log('[' + new Date() + '] > ' + 200 + ' - ' + req.url);
+ console.log(`[${new Date()}] > ${200} - ${req.url}`);
res.send(dirTree(path, {extensions: /\.md/}));
});
app.get('/img/*', (req, res) => {
- console.log('[' + new Date() + '] > ' + 200 + ' - ' + req.url);
+ console.log(`[${new Date()}] > ${200} - ${req.url}`);
if (path === '/img/ic_info_black_48px.svg' ||
path === '/imr/ic_error_black_48px.svg' ||
path === '/imr/ic_good_black_48px.svg' ||
@@ -124,7 +128,7 @@ app.get('/img/*', (req, res) => {
});
app.get('/', (req, res) => {
- console.log('[' + new Date() + '] > ' + 200 + ' - ' + req.url);
+ console.log(`[${new Date()}] > ${200} - ${req.url}`);
fs.readFile('public/index.html', 'utf8', (err, data) => {
if (err) {
return console.log(err);
@@ -134,18 +138,38 @@ app.get('/', (req, res) => {
});
app.get('*', (req, res) => {
- console.error('[' + new Date() + '] > ' + 404 + ' - ' + req.url);
+ console.error(`[${new Date()}] > ${404} - ${req.url}`);
fs.readFile('public/404.md', 'utf8', (err, data) => {
if (err) {
return console.log(err);
}
fs.readFile('public/css/style.css', 'utf8', (err, style) => {
+ if (err) {
+ let html = '<html>';
+ html += '<body>';
+ html += '<h1>500 - Internal Server Error</h1>';
+ html += `Debug : ${err}`;
+ html += '</body>';
+ html += '</html>';
+ res.status(500).send(html);
+ return;
+ }
toHTML(data, (err, file) => {
+ if (err) {
+ let html = '<html>';
+ html += '<body>';
+ html += '<h1>500 - Internal Server Error</h1>';
+ html += 'Debug : 404 page can\'t be converted to HTML<br>';
+ html += `Debug : ${err}`;
+ html += '</body>';
+ html += '</html>';
+ res.status(404).send(html);
+ }
let html = '<html>';
html += '<head>';
- html += '<style>' + style + '</style>';
+ html += `<style>${style}</style>`;
html += '</head>';
- html += '<body class=\'markdown-preview\' data-use-github-style>';
+ html += '<body class=\'markdown-preview\'>';
html += String(file);
html += '</body>';
html += '</html>';
@@ -158,5 +182,5 @@ app.get('*', (req, res) => {
const server = app.listen(8090, () => {
const host = server.address().address;
const port = server.address().port;
- console.log('[' + new Date() + '] > App listening at http://%s:%s', host, port);
+ console.log(`[${new Date()}] > App listening at http://%s:%s`, host, port);
});
diff --git a/package.json b/package.json
index 675e828..0a1283b 100644
--- a/package.json
+++ b/package.json
@@ -37,6 +37,12 @@
"xo": "^0.18.2"
},
"xo": {
- "space": true
+ "space": true,
+ "rules": {
+ "comma-dangle": [
+ "error",
+ "always-multiline"
+ ]
+ }
}
}
diff --git a/public/js/qcm.js b/public/js/qcm.js
index 3ce5724..6a09aa6 100644
--- a/public/js/qcm.js
+++ b/public/js/qcm.js
@@ -8,7 +8,7 @@
*
*/
-const check = (id => {
+const check = id => {
const fieldQCM = document.getElementById(id);
Array.from(fieldQCM.getElementsByTagName('INPUT')).forEach(input => {
@@ -16,11 +16,11 @@ const check = (id => {
return;
}
- const label = document.querySelector('label[for=\'' + input.id + '\']');
+ const label = document.querySelector(`label[for='${input.id}']`);
if (input.checked) {
- Array.from(label.getElementsByClassName('hiden_block_quote')).forEach((child => {
+ Array.from(label.getElementsByClassName('hiden_block_quote')).forEach(child => {
child.classList.remove('hiden_block_quote');
- }));
+ });
}
switch (input.className) {
case '!':
@@ -36,7 +36,7 @@ const check = (id => {
// Empty
}
});
-});
+};
function shuffle(array) {
let currentIndex = array.length;
@@ -63,7 +63,7 @@ document.addEventListener('DOMContentLoaded', () => {
listQCM.forEach(field => {
let listInput = [];
Array.from(field.getElementsByTagName('INPUT')).forEach(input => {
- const label = document.querySelector('label[for=\'' + input.id + '\']');
+ const label = document.querySelector(`label[for='${input.id}']`);
listInput.push({input, label});
field.removeChild(input);
field.removeChild(label);
diff --git a/public/js/script.js b/public/js/script.js
index e90198c..1bcb250 100644
--- a/public/js/script.js
+++ b/public/js/script.js
@@ -12,7 +12,7 @@ document.addEventListener('DOMContentLoaded', () => {
document.getElementById('tree').appendChild(addDirectory(data));
Array.from(document.getElementsByTagName('a')).forEach(a => {
- a.onclick = (function (e) {
+ a.onclick = function (e) {
e.preventDefault();
e.stopPropagation();
const setMd = new XMLHttpRequest();
@@ -23,19 +23,19 @@ document.addEventListener('DOMContentLoaded', () => {
};
setMd.open('GET', a.href);
setMd.send();
- });
+ };
});
Array.from(document.getElementsByClassName('directory')).forEach(dir => {
dir.querySelectorAll('ul').forEach(ul => {
ul.style.display = 'none';
});
- dir.onclick = (e => {
+ dir.onclick = e => {
e.stopPropagation();
dir.querySelectorAll('ul').forEach(ul => {
ul.style.display = ul.style.display === 'none' ? 'block' : 'none';
});
- });
+ };
});
}
};