Skip to content

Commit 844763d

Browse files
Merge pull request #81 from htmlacademy/feature/space-beetwen-comments
Added htmlacademy/space-between-comments
2 parents 696c2a7 + b42ab4d commit 844763d

File tree

4 files changed

+84
-1
lines changed

4 files changed

+84
-1
lines changed

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Changelog
22

3+
## 1.0.11
4+
Added [htmlacademy/space-between-comments](rules/space-between-comments/README.md)
5+
```js
6+
rules: {
7+
'htmlacademy/space-between-comments': [true, 'space' | 'no-space]
8+
}
9+
```
10+
11+
```html
12+
<!-- Comment --> // space
13+
<!--Comment--> // no-space
14+
```
15+
316
## 1.0.10
417
`attr-req-value` can now accept regex for ignore
518

docs/list-of-rules.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Список правил от HTML Academy
22

33
| Имя правила | Описания |
4-
|:------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------|
4+
|-------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
55
| [htmlacademy/a-target-rel](../rules/a-target-rel/README.md) | Проверяет наличие `rel="noopener noreferrer"` у `<a target="_blank"></a>` |
66
| [htmlacademy/aria-label-misuse](../rules/aria-label-misuse/README.md) | Требует использование `aria-label` на определённых элементах |
77
| [htmlacademy/attr-delimiter](../rules/attr-delimiter/README.md) | Требует удалить пробел между `=` для атрибутов |
@@ -24,5 +24,6 @@
2424
| [htmlacademy/req-meta-viewport](../rules/req-meta-viewport/README.md) | Проверяет наличие `<meta name="viewport" content="width=device-width,initial-scale=1">` в `<head>` |
2525
| [htmlacademy/req-single-styles](../rules/req-single-styles/README.md) | Разрешает не более одного `link rel="stylesheet"` в `<head>` |
2626
| [htmlacademy/section-has-heading](../rules/section-has-heading/README.md) | Требует добавление заголовка любого уровня в `<section>` |
27+
| [htmlacademy/space-between-comments](../rules/space-between-comments/README.md) | Проверят пробелы у комментария `<!-- Это комментарий -->`
2728
| [htmlacademy/tag-name-lowercase](../rules/tag-name-lowercase/README.md) | Имена тегов должны быть строчными |
2829
| [htmlacademy/tag-self-close](../rules/tag-self-close/README.md) | Одиночные элементы не должны быть закрыты, `<br>` вместо `<br/>` |
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# htmlacademy/space-between-comments
2+
3+
Это правило проверяет наличие пробелов в начале и в конце блока комментария.
4+
5+
## Опции
6+
7+
`string`: `"space"|"no-space"`
8+
9+
## Значение `space`
10+
Если у комментария есть пробелы как в начале, так и в конце блока комментария, то это соответствует требованиям.
11+
12+
Проблемными считаются следующие шаблоны:
13+
```html
14+
<!-- Это комментарий-->
15+
<!--Это комментарий -->
16+
<!--Это комментарий-->
17+
```
18+
19+
Следующие шаблоны **не** считаются проблемами:
20+
```html
21+
<!-- Это комментарий -->
22+
```
23+
24+
## Значение `no-space`
25+
Если у комментария **нет** пробелов как в начале, так и в конце блока комментария, то это соответствует требованиям.
26+
27+
Проблемными считаются следующие шаблоны:
28+
```html
29+
<!-- Это комментарий-->
30+
<!--Это комментарий -->
31+
<!-- Это комментарий -->
32+
```
33+
34+
Следующие шаблоны **не** считаются проблемами:
35+
```html
36+
<!--Это комментарий-->
37+
```

rules/space-between-comments/index.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
'use strict';
2+
const { is_comment_node } = require('@linthtml/dom-utils');
3+
4+
const rules = {
5+
'space': {
6+
check: (string) => string.startsWith(' ') && string.endsWith(' '),
7+
errorMessage: 'The comment should contain spaces at the beginning and end of the message.'
8+
},
9+
'no-space': {
10+
check: (string) => !string.startsWith(' ') && !string.endsWith(' '),
11+
errorMessage: 'The comment should not contain spaces at the beginning and end of the message.'
12+
}
13+
};
14+
15+
module.exports = {
16+
name: 'htmlacademy/space-between-comments',
17+
// eslint-disable-next-line camelcase
18+
lint(node, rule_config = 'space', { report }) {
19+
if (is_comment_node(node)) {
20+
const comment = node.data;
21+
// eslint-disable-next-line camelcase
22+
const { check, errorMessage } = rules[rule_config];
23+
24+
if (!check(comment)) {
25+
report({
26+
position: node.loc,
27+
message: errorMessage
28+
});
29+
}
30+
}
31+
}
32+
};

0 commit comments

Comments
 (0)