osunyorg/admin

View on GitHub
app/services/osuny/notes.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Osuny
  class Notes
    attr_reader :index

    def initialize
      @index = 1
    end

    def prepare(text)
      @text = text
      @parts = @text.split('<note>')
      @text_with_notes = ''
      replace_notes! if @parts.any?
      @text_with_notes.html_safe
    end

    protected

    def replace_notes!
      # Take what's before the first, even if it's empty
      @text_with_notes = @parts.shift
      # For each note, replace <note> and </note>
      @parts.each do |part|
        @text_with_notes += build_note(part)
        @index += 1
      end
    end

    # Part peut ressembler à ça :
    # Cf. Shoshana Zuboff, The Age of Surveillance Capitalism. The Fight for a Human Future at the New Frontier of Power, New York, Public Affairs, 2019.</note>. L’appétit de ces entreprises pour les données a aussi fait naître des craintes plus générales quant à leur pouvoir économique et politique. Les développements récents des intelligences artificielles (IA) dites « génératives » n’a fait qu’accentuer ces préoccupations : l’accès à des bases de données pléthoriques constitue, avec la capacité à déployer de colossales infrastructures de calcul, le fondement de la domination exercée par les <i>Big Tech </i>dans ce champ, vu comme stratégique pour les décennies à venir
    def build_note(part)
      note, text_after_note = part.split('</note>')
      label = I18n.t('notes.label', index: @index)
      html = '<span class="note" role="note">'
      html += "<span class=\"note__call\" role=\"button\" tabindex=\"0\" aria-expanded=\"false\" aria-label=\"#{label}\">#{@index}</span>"
      html += "<span class=\"note__content\" aria-hidden=\"true\" aria-live=\"polite\">#{note}</span>"
      html += "</span>"
      html += text_after_note.to_s
      html
    end
  end
end