Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions frontend/scenarios/edit_content.feature
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,17 @@ Scénario: de la glose dont on est l'auteur
Et une session active avec mon compte
Quand j'essaie de remplacer le contenu de la glose par :
"""
Nous traduisons ici "shape" par "ombre" et non "forme" car dans un autre
poème du recueil, les "shapes" sont clairement ce qui apparaît en allumant
une lampe dans les ténèbres.
Corinne : Voilà donc heu on utilise leurs produits et puis comme on avait
visité heuu ils font aussi de très bons produits.

Mathilde : Et vous la produisez avec quelle machine ?

Corinne : La farine ?
"""
Alors la glose contient "Nous traduisons ici"
Alors la glose contient "Corinne : Voilà donc heu"
Et "Corinne" est en gras
Et "Mathilde" est en gras


Scénario: de la glose dont on n'est pas l'auteur

Expand Down
13 changes: 12 additions & 1 deletion frontend/src/components/EditableText.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@ import PictureUploadAction from '../menu-items/PictureUploadAction';
import {v4 as uuid} from 'uuid';
import { OverlayTrigger, Tooltip } from 'react-bootstrap';

function boldSpeakerNames(text) {
return text.split('\n').map(line => {
const match = line.match(/^([\p{Lu}][\p{L}'\- ]+?)\s*:/u);
if (match) {
const name = match[1];
return line.replace(name, `**${name}**`);
}
return line;
}).join('\n');
}

function EditableText({id, text, rubric, isPartOf, links, fragment, setFragment, setHighlightedText, setSelectedText, rawEditMode, setRawEditMode, backend, setLastUpdate}) {
const [beingEdited, setBeingEdited] = useState(false);
const [editedDocument, setEditedDocument] = useState();
Expand Down Expand Up @@ -110,7 +121,7 @@ function EditableText({id, text, rubric, isPartOf, links, fragment, setFragment,
>
<div className="formatted-text" onClick={handleClick}>
<FormattedText {...{setHighlightedText, setSelectedText}}>
{text || '&nbsp;'}
{boldSpeakerNames(text || '&nbsp;')}
</FormattedText>
</div>
</OverlayTrigger>
Expand Down
8 changes: 8 additions & 0 deletions frontend/tests/outcome.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ Alors("{string} est la glose ouverte", (title) => {
cy.get('.runningHead .scholium').should('contain', title);
});

Alors("{string} est en gras", (texte) => {
cy.get(".scholium").eq(1).find("strong")
.should(($strong) => {
const strongText = $strong.map((i, el) => Cypress.$(el).text().trim()).get();
expect(strongText).to.include(texte);
});
});

Alors("je peux lire {string}", (text) => {
cy.get('body').should('contain', text);
});
Expand Down