Wyjątek podczas cytowania wielolinikowych inline'owych fragmentów kodu

1

Po kliknięciu w przycisk cytowania, w konsoli pojawia się błąd, a poza tym nic w formularzu edycji się nie dzieje.

Error: Ranges must be added sorted by from position and startSide

1
somekind napisał(a):

Po kliknięciu w przycisk cytowania, w konsoli pojawia się błąd, a poza tym nic w formularzu edycji się nie dzieje.

Error: Ranges must be added sorted by from position and startSide

U mnie działa. FF 99.0.1

0

Na GównoChromie też coś nie bangla, nie da się w ogóle edytować zacytowanej treści.
Co tu się znowu dzieje?

1
somekind napisał(a):

Na GównoChromie też coś nie bangla, nie da się w ogóle edytować zacytowanej treści.
Co tu się znowu dzieje?

Mobilny FF działa jakby to kogoś interesowało. Na PC też mi dzisiaj działało, ale było to kilka godzin temu.

0
somekind napisał(a):

Po kliknięciu w przycisk cytowania, w konsoli pojawia się błąd, a poza tym nic w formularzu edycji się nie dzieje.

Error: Ranges must be added sorted by from position and startSide

Jak koledzy pisali wyżej - FF 99.0.1 na Linux Mint i efekt zgodny z oczekiwaniami.

0
somekind napisał(a):

Po kliknięciu w przycisk cytowania, w konsoli pojawia się błąd, a poza tym nic w formularzu edycji się nie dzieje.

Error: Ranges must be added sorted by from position and startSide

działa

1

Konkretnie nie działa cytowanie tego posta: Nowy regulamin dla 4programmers.net

0

Na edge też (Version 100.0.1185.50 (Official build) (64-bit)).

1
wielki_bebzon napisał(a):

Na edge też (Version 100.0.1185.50 (Official build) (64-bit)).

Ta sama wersja Edge, ale u mnie działa normalnie — jak widać po tym poście. Post, który próbował zacytować @somekind też normalnie dodaje się do pola edycyjnego, ale formatowanie się krzaczy:

screenshot-20220428040641.png

Znowu problemy z tym cholernym edytorem… :D

0

Ja sprawdziłem i nie tylko nie działa cytowanie tego posta, który prosiaczek wstawił, ale nie jestem w stanie cytować niczego z tamtego wątku :/

Jak to wygląda u Was?

0

@TomRiddle - jakiś pomysł?

5

To jest chyba ten sam błąd co jakiś czas temu @Silv znalazł, i ma tą samą przyczynę.

Już wyjaśniam o co chodzi w bugu: parsowanie kodu inline `inline` (oraz innych elementów inline) ma swój algorytm, a parsowanie elementów blokowych swój (np do cytatu lub dużych fragmentów kodu), jeśli nie wchodzą sobie w drogę to jest git. Ale da się zrobić tak że sobie wejdą, np jak się najdą na siebie elementy blokowe i inlinowe, normalnie to się nie dzieje, bo inlineowe zawsze są w ramach jednej linijki, a blokowe zawsze są na całą linijkę lub więcej.

Ale! Gdyby ktoś zrobił kod inline na więcej niż jedną linijkę, np:

i kto ma określić która interpretacja jest `strongest plausible
`? Jak stwierdzić

i potem ktoś doda element blokowy, np cytat, to się stanie tak że linijka cytatu się "przekroi" z linijkami kodu inline. Już podmieniłem w tym Nowy regulamin dla 4programmers.net.

Jako tymczasowy środek zaradczy zalecam moderatorom podmienić w poście kod

one two `three
` four

na

one two `three` four

Podczas gdy ja będę fixował edytor.

2

Unit test już napisany, teraz wystarczy fixnąć. Heheheh

screenshot-20220428113524.png

2

Napisałem drzewo binarne żeby fixnąć buga, co by nie robić sortowania, chce ktoś zerknąć czy się nie walnąłem gdzieś? Nie wiem kto tu się na 4p najbardziej zna na kolekcjach i algorytmach.

import BinaryTree from "../../../src/decoration/binaryTree.js";

test('empty tree', () => {
  // given
  const tree = new BinaryTree();
  // when, then
  expect(tree.inOrder()).toStrictEqual([]);
});

test('single item', () => {
  // given
  const tree = new BinaryTree();
  // when
  tree.insert(12, 'twelve');
  // then
  expect(tree.inOrder()).toStrictEqual(['twelve']);
});

test('small, big', () => {
  // given
  const tree = new BinaryTree();
  // when
  tree.insert(12, 'twelve');
  tree.insert(13, 'thirteen');
  // then
  expect(tree.inOrder()).toStrictEqual(['twelve', 'thirteen']);
});

test('big, small', () => {
  // given
  const tree = new BinaryTree();
  // when
  tree.insert(13, 'thirteen');
  tree.insert(12, 'twelve');
  // then
  expect(tree.inOrder()).toStrictEqual(['twelve', 'thirteen']);
});

test('two equal', () => {
  // given
  const tree = new BinaryTree();
  // when
  tree.insert(12, 'twelve');
  tree.insert(12, 'twelve');
  // then
  expect(tree.inOrder()).toStrictEqual(['twelve', 'twelve']);
});

test('three equal', () => {
  // given
  const tree = new BinaryTree();
  // when
  tree.insert(12, 'twelve');
  tree.insert(12, 'twelve');
  tree.insert(12, 'twelve');
  // then
  expect(tree.inOrder()).toStrictEqual(['twelve', 'twelve', 'twelve']);
});

test('small, big, small', () => {
  // given
  const tree = new BinaryTree();
  // when
  tree.insert(12, 'twelve');
  tree.insert(13, 'thirteen');
  tree.insert(12, 'twelve');
  // then
  expect(tree.inOrder()).toStrictEqual(['twelve', 'twelve', 'thirteen']);
});

test('small, big, smaller', () => {
  // given
  const tree = new BinaryTree();
  // when
  tree.insert(12, 'twelve');
  tree.insert(13, 'thirteen');
  tree.insert(11, 'eleven');
  // then
  expect(tree.inOrder()).toStrictEqual(['eleven', 'twelve', 'thirteen']);
});

test('small, big, medium', () => {
  // given
  const tree = new BinaryTree();
  // when
  tree.insert(12, 'twelve');
  tree.insert(14, 'fourteen');
  tree.insert(13, 'thirteen');
  // then
  expect(tree.inOrder()).toStrictEqual(['twelve', 'thirteen', 'fourteen']);
});

Impl

export default class BinaryTree {
  constructor() {
    this.root = null;
  }

  insert(key, value) {
    if (this.root === null) {
      this.root = new Node(key, value);
    } else {
      let node = this.root;
      let trailingNode = null;
      while (node != null) {
        trailingNode = node;
        node = key < node.key ? node.left : node.right;
      }
      if (trailingNode == null) {
        return;
      }
      if (key < trailingNode.key) {
        trailingNode.left = new Node(key, value);
      } else {
        trailingNode.right = new Node(key, value);
      }
    }
  }

  inOrder() {
    function iterateNext(root, call) {
      if (root != null) {
        iterateNext(root.left, call);
        call(root.value);
        iterateNext(root.right, call);
      }
    }

    const values = [];
    iterateNext(this.root, value => values.push(value));
    return values;
  }
}

class Node {
  constructor(key, value) {
    this.key = key;
    this.value = value;
    this.left = null;
    this.right = null;
  }
}
4

Wrzuciłem wersję 1.11.7 na 4programmers.dev, dodałem też post z kopią feralnego tekstu: https://4programmers.dev/Forum/Newbie/72-lorem_ipsum_lorem_ipsumlorem_ipsum_lorem_ipsum#id309

Wygląda ze cytowanie już działa spoko.

Zaraz wrzucam na 4programmers.net

PS: Wrzucona. Feralny post powinien się teraz dać móc cytować normalnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1