# frozen_string_literal: true

class WatchedWordListSerializer < ApplicationSerializer
  attributes :actions, :words, :compiled_regular_expressions

  def actions
    if SiteSetting.tagging_enabled
      WatchedWord.actions.keys
    else
      WatchedWord.actions.keys.filter { |k| k != :tag }
    end
  end

  def words
    object.map { |word| WatchedWordSerializer.new(word, root: false) }
  end

  def compiled_regular_expressions
    expressions = {}
    actions.each do |action|
      expressions[action] = WordWatcher.serializable_word_matcher_regexp(action)
    end
    expressions
  end
end
