ponkotsu-md-editor 0.1.32 → 0.1.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20516b4cf7de7bf33b5db048a4a440ac8610cd6beb8c0f1467e4285aff2f5c01
4
- data.tar.gz: ffe60497f34d0a334893df718e780dc1185520702050404de42cd58438d7f475
3
+ metadata.gz: 7eecce4eaa3fa335351b001fa799cce67dd9e4e0af7ec5f0ea71a30faa6aab3b
4
+ data.tar.gz: a6c888c21cb85a1a9dbc38757549f333488d269fd9e908777056de1eef64eaa4
5
5
  SHA512:
6
- metadata.gz: 71e0526ff22119d58f15996cfc5eaeda4670efc11d2cba467dcfea8a6ec73799aef89e82112ea8e03c1562142dce004bd13fa1707cc945b430e8cadc93645836
7
- data.tar.gz: dcbd053ab758b2f967f9454542a165f35e919f15ce8918a845011f8bae8ff2a153767fe150d52f7ef3d414dc869ce7b4081a9ea11164fbc1bab6890df81d8a34
6
+ metadata.gz: f2f6e162c7a2a0a9e5824b0d6b629723e47a361a892e31ab86a9ed4178377c1d587fdd5165348cf26a38ab558c35ca7f4ebd79e9d4ede7dd8d04a5083bbf7b69
7
+ data.tar.gz: 2a8afd5b6c514318d5f2059742aadb5771d40e46d67d1490bc6c7fa4d2f2edb24464995300ddb7960a929b32d6f2fffb0a72c22f4c9924ce1ead5fdb68c2a898
@@ -283,36 +283,71 @@
283
283
  selectedText = textarea.value.substring(start, end);
284
284
  }
285
285
 
286
+ // fullTextの定義をここで行う
287
+ const fullText = isContentEditable ?
288
+ (textarea.innerText || textarea.textContent || '') :
289
+ textarea.value;
290
+
286
291
  // Bold(**)の場合のみ、選択範囲の両端に余分な空白・改行があれば除外
287
292
  if (before === '**' && after === '**' && selectedText.length > 0) {
288
293
  let left = 0;
289
294
  let right = selectedText.length;
290
- // 先頭が「\n 」ならスペース除去
291
- if (selectedText.startsWith('\n ')) {
292
- left += 2;
293
- } else if (selectedText[0] === ' ' && (start > 0 && fullText[start-1] === '\n')) {
294
- left += 1;
295
+ // 先頭: 連続する「改行+スペース」をすべて除去
296
+ while (true) {
297
+ if (selectedText.startsWith('\n ')) {
298
+ left += 2;
299
+ selectedText = selectedText.substring(2);
300
+ } else if (selectedText.startsWith('\n')) {
301
+ left += 1;
302
+ selectedText = selectedText.substring(1);
303
+ } else if (selectedText.startsWith(' ')) {
304
+ // 直前が改行なら除去
305
+ if (start + left > 0 && fullText[start + left - 1] === '\n') {
306
+ left += 1;
307
+ selectedText = selectedText.substring(1);
308
+ } else {
309
+ break;
310
+ }
311
+ } else {
312
+ break;
313
+ }
295
314
  }
296
- // 末尾が「 \n」ならスペース除去
297
- if (selectedText.endsWith(' \n')) {
298
- right -= 2;
299
- } else if (selectedText[selectedText.length-1] === ' ' && (end < fullText.length && fullText[end] === '\n')) {
300
- right -= 1;
315
+ // 末尾: 連続する「スペース+改行」をすべて除去
316
+ while (true) {
317
+ if (selectedText.endsWith(' \n')) {
318
+ right -= 2;
319
+ selectedText = selectedText.substring(0, selectedText.length - 2);
320
+ } else if (selectedText.endsWith('\n')) {
321
+ right -= 1;
322
+ selectedText = selectedText.substring(0, selectedText.length - 1);
323
+ } else if (selectedText.endsWith(' ')) {
324
+ // 直後が改行なら除去
325
+ if (end - (selectedText.length - right) < fullText.length && fullText[end - (selectedText.length - right)] === '\n') {
326
+ right -= 1;
327
+ selectedText = selectedText.substring(0, selectedText.length - 1);
328
+ } else {
329
+ break;
330
+ }
331
+ } else {
332
+ break;
333
+ }
301
334
  }
302
335
  // 既存の両端trimも併用(ただしスペース・改行のみ)
303
- while (left < right && /[\s\n]/.test(selectedText[left])) left++;
304
- while (right > left && /[\s\n]/.test(selectedText[right-1])) right--;
336
+ while (left < right && /[\s\n]/.test(selectedText[0])) {
337
+ left++;
338
+ selectedText = selectedText.substring(1);
339
+ }
340
+ while (right > left && /[\s\n]/.test(selectedText[selectedText.length-1])) {
341
+ right--;
342
+ selectedText = selectedText.substring(0, selectedText.length-1);
343
+ }
305
344
  if (left !== 0 || right !== selectedText.length) {
306
345
  start += left;
307
346
  end -= (selectedText.length - right);
308
- selectedText = selectedText.substring(left, right);
347
+ // selectedTextはすでにtrim済み
309
348
  }
310
349
  }
311
350
 
312
- const fullText = isContentEditable ?
313
- (textarea.innerText || textarea.textContent || '') :
314
- textarea.value;
315
-
316
351
  const beforeText = fullText.substring(0, start);
317
352
  const afterText = fullText.substring(end);
318
353
  const newText = before + selectedText + after;
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PonkotsuMdEditor
4
- VERSION = "0.1.32"
4
+ VERSION = "0.1.34"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ponkotsu-md-editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.32
4
+ version: 0.1.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - dhq_boiler