-
Notifications
You must be signed in to change notification settings - Fork 3
/
textlint-rule-no-unmatched-pair-test.js
92 lines (85 loc) · 4.49 KB
/
textlint-rule-no-unmatched-pair-test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// MIT © 2018 azu
"use strict";
import TextLintTester from "textlint-tester";
const tester = new TextLintTester();
// rule
const rule = require("../src/textlint-rule-no-unmatched-pair.js");
// ruleName, rule, { valid, invalid }
tester.run("textlint-rule-no-unmatched-pair", rule, {
valid: [
`{"{ABC}"}`,
'test {"{ABC`{"{ABC}"}`}"} ok.',
"これは(秘密)です。",
`John said "Hello World!".`,
"`(` is ok.", "文字列リテラルには3種類ありますが、まずは`\"`(ダブルクオート)と`'`(シングルクオート)について見ていきます。",
`a is b.
\`"\`(ダブルクオート)と\`'\`(シングルクオート)に意味的な違いはありません。
この書籍では、\`"\`(ダブルクオート)を主に文字列リテラルとして利用します。`,
`そのため、Todoアイテムの状態を更新するには、HTML要素にTodoアイテムの情報(タイトルや識別子となるidなど)をすべて埋め込む必要があります。
しかし、HTML要素に対して文字列しか埋め込めないため、Todoアイテムのデータを文字列にしないといけないという制限が発生します。
また操作と表示が1対1で更新される場合、1つの操作に対して複数の箇所の表示が更新されることもあります。
今回のTodoアプリでもTodoリスト(\`#js-todo-list\`)とTodoアイテム数(\`#js-todo-count\`)の2箇所を更新する必要があることからも分かります。
`, `\`Object.assign\`メソッドは、\`target\`オブジェクトに対して、1つ以上の\`sources\`オブジェクトを指定します。
\`sources\`オブジェクト自身がもつ列挙可能なプロパティを第一引数の\`target\`オブジェクトに対してコピーします。
\`Object.assign\`メソッドの返り値は、\`target\`オブジェクトになります。`,
// 箇条書き
// FIXME: It will be failed
// https://github.com/textlint-rule/textlint-rule-no-unmatched-pair/issues/1
`
1) item 1
2) item 2
3) item 3
`
],
invalid: [
{
text: "これは(秘密)です。",
errors: [
{
index: 4,
message: `Not found pair character for (.
You should close this sentence with ).
This pair mark is called 丸括弧().`
}
]
},
{
text: `John said "Hello World!'.`,
errors: [
{
index: 11,
message: `Not found pair character for ".
You should close this sentence with ".
This pair mark is called double quote.`
}
]
},
{
text: "`src/App.js`にファイルを作成し、次のような内容のJavaScriptモジュールとします。\n"
+ "モジュールは、基本的には何かしらを外部に公開(`export`)します。",
errors: [
{
index: 74
}
]
}, {
text: `このように\`count\`変数が自動解放されずに保持できているのは「(\`increment\`)関数が外側のスコープにある(\`count\`)変数への参照を保持できる」ためです。このような性質のことをクロージャー(関数閉包)と呼びます。クロージャーは静的スコープと変数は参照され続けていればデータは保持されるという2つの性質によって成り立っています。`,
errors: [
{
line: 1,
column: 105,
index: 104
}
]
},{
text: `DUMMY DUUMY.
このように\`count\`変数が自動解放されずに保持できているのは「(\`increment\`)関数が外側のスコープにある(\`count\`)変数への参照を保持できる」ためです。このような性質のことをクロージャー(関数閉包)と呼びます。クロージャーは静的スコープと変数は参照され続けていればデータは保持されるという2つの性質によって成り立っています。`,
errors: [
{
line: 4,
column: 105
}
]
}
]
});