Skip to content

Commit 47105c1

Browse files
committed
feat: ポップアップに前後のハイライト数を表示
次のようにすることでハイライトのポップアップとして前後のハイライト数(↑前の数↓後の数)を表示するようにした。 * o_custom_rangeのプロパティn_counterにハイライトが重なる場合も含むハイライトの初期連番を割り振る。 * ハイライト済の文字列に重なる文字列でハイライトをしたときハイライトしない場合があることを関数count_highlightsで調整してo_custom_range_valuesのプロパティn_counter2にハイライトの最終連番を割り振る。 閉じるボタンをクリックしたときに関数start_re_highlightを呼んでハイライトを更新するようにした。 ダブルクリックしたときキーワード全体を選択するようにした。 webpackとMakeBookmarklet.jsなどを使ってFirefoxをサポートするようにした。 VSCodeの型チェック機能を有効にして修正した。 ハイライト色を3つ追加。 リファクタリング、スタイルとコメントとREADME更新。
1 parent a1f9f1a commit 47105c1

11 files changed

+486
-225
lines changed

.eslintrc.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ module.exports = {
106106
"max-lines": "off",
107107
"max-lines-per-function": "off",
108108
"max-nested-callbacks": "error",
109-
"max-params": ["error", 4],
109+
"max-params": ["error", 5],
110110
"max-statements": "off",
111111
"max-statements-per-line": "off",
112112
"multiline-comment-style": "off",
@@ -240,7 +240,12 @@ module.exports = {
240240
"padding-line-between-statements": "error",
241241
"prefer-arrow-callback": "off",
242242
"prefer-const": "error",
243-
"prefer-destructuring": "off",
243+
"prefer-destructuring": [
244+
"error", {
245+
"object": true,
246+
"array": false
247+
}
248+
],
244249
"prefer-numeric-literals": "error",
245250
"prefer-object-spread": "error",
246251
"prefer-promise-reject-errors": "error",

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Web/
2+
package-lock.json

MakeBookmarklet.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
const fs = require('fs');
2+
3+
class MakeBookmarklet {
4+
static o_defaultOptions = {
5+
"f_encodeURIComponent": false
6+
};
7+
8+
constructor(o_options) {
9+
this.o_options = {
10+
...MakeBookmarklet.o_defaultOptions,
11+
...o_options
12+
};
13+
}
14+
15+
apply(compiler) {
16+
const s_pluginName = MakeBookmarklet.name;
17+
18+
compiler.hooks.assetEmitted.tap(s_pluginName, (s_filename, o_info) => {
19+
const s_targetPath = o_info.targetPath;
20+
if (!s_targetPath.match(/\.js$/u)) {
21+
console.log(`${s_filename} は.jsではありません。`);
22+
return;
23+
}
24+
25+
const s_content = o_info.content.toString('utf8');
26+
27+
if (!s_content.match(/^\(\(\)=>\{.*\}\)\(\);$/u)) {
28+
console.log(`${s_filename} の中身が予期されない形をしています。`);
29+
return;
30+
}
31+
32+
const s_content2
33+
= this.o_options.f_encodeURIComponent
34+
? `javascript:${encodeURIComponent(s_content)}`
35+
: `javascript:${s_content}`;
36+
37+
fs.stat(s_targetPath, (err, stats) => {
38+
if (err) { throw err; }
39+
if (!stats.isFile()) {
40+
console.log(`${s_filename} はファイルではありません。`);
41+
return;
42+
}
43+
44+
fs.unlink(s_targetPath, (err2) => {
45+
if (err2) { throw err2; }
46+
47+
fs.writeFile(s_targetPath, s_content2, 'utf8', (err3) => {
48+
if (err3) { throw err3; }
49+
console.log(`${s_filename} をbookmarkletにしました。`);
50+
});
51+
});
52+
});
53+
});
54+
}
55+
}
56+
57+
module.exports = MakeBookmarklet;

README.md

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,45 @@
11
# Highlight Selection
22

3-
HTMLタグを超えて、選択範囲をキーワードとして、ウェブページをハイライトするブックマークレット及び拡張機能です
3+
HTMLタグを超えて、選択範囲をキーワードとしてハイライトするブックマークレット及び拡張機能です
44

55
## 機能
66

7-
- 選択範囲をキーワードとして、複数の出現箇所をハイライトします。その際、HTMLタグを超えて選択範囲を選択できます。
8-
- マウスホバーで×アイコンが出てハイライトを削除できます。
9-
- 30種類以上のハイライトを順番に使用できます。
7+
- 選択範囲をキーワードとして複数の出現箇所をハイライトします。その際、HTMLタグを超えて選択範囲を選択できます。
8+
- ハイライトのマウスホバーで現れる×アイコンをクリックすることでハイライトを削除できます。
9+
- 30種類以上のハイライトを使用できます。
10+
- ハイライトしたキーワードの出現数や前後の数(↑前の数↓後の数)をキーワードのポップアップで表示します。
1011

1112
## ブックマークレット版と拡張機能版の違い
1213

1314
ブックマークレット版は、拡張機能が動作しないChromeウェブストア上でも動作します。
1415

15-
拡張機能版は、選択範囲がフレーム内であっても動作します。拡張機能版は、選択範囲の右クリックメニューに選択項目を追加します。
16+
拡張機能版は、選択範囲がフレーム内であっても動作します。
1617

1718
## インストール方法
19+
### Google Chrome
20+
ブックマークレット版は、ブックマークのURL欄に[JavaScript](https://raw.githubusercontent.com/querykuma/HighlightSelection/main/highlight_selection_bookmark_min.js)の中身を貼り付けてください。
1821

19-
ブックマークレット版は、ブックマークのURL欄に[JavaScript](https://raw.githubusercontent.com/querykuma/HighlightSelection/main/highlight_selection_bookmark.js)を貼り付けてください。
22+
拡張機能版は、「その他のツール」から「拡張機能」(chrome://extensions/)を開き、デベロッパーモードにして、「パッケージ化されていない拡張機能を読み込む」を押して、フォルダーを選択してください。
23+
24+
### Firefox
25+
ブックマークレット版は、ブックマークのURL欄に[JavaScript](https://raw.githubusercontent.com/querykuma/HighlightSelection/main/highlight_selection_bookmark_min.js)の中身を貼り付けてください。Firefoxではサイズ制限に引っかかるので、webpackなどでサイズ縮小する必要がありました。
26+
27+
拡張機能版は、次のようにしてください。
28+
29+
1. manifest.jsonの中身をmanifest_firefox.jsonで置き換える。
30+
1. アドオンマネージャー(about:addons)で「アドオンをデバッグ」を選ぶ。
31+
1. 「一時的なアドオンを読み込む」でmanifest.jsonを選ぶ。
2032

21-
拡張機能版は、「その他のツール」から「拡張機能」を開き(chrome://extensions/)、デベロッパーモードにして、「パッケージ化されていない拡張機能を読み込む」を押下して、フォルダーを選択してください。
2233

2334
## 使い方
2435

25-
ブックマークレット版は、選択範囲を選択して、ブックマークレットを開くことで起動します
36+
ブックマークレット版は、選択範囲を選択してからブックマークレットを開くことで起動します
2637

27-
拡張機能版は、選択範囲を右クリックしてから、ショートカットキーHで選択項目が選択されて、起動します
38+
拡張機能版は、選択範囲を右クリックしてから「選択範囲のキーワードをハイライト」(ショートカットキーのH)を選ぶことで起動します
2839

2940
## 動作環境
3041

3142
- Google Chrome
43+
- Firefox
3244

3345

0 commit comments

Comments
 (0)