Sha256: 1c70ca2b7f24a197876390f4571df0ad8f3640899dcd3fa63ea96f902335c6ab

Contents?: true

Size: 1.3 KB

Versions: 14

Compression:

Stored size: 1.3 KB

Contents

# frozen_string_literal: true

require "json"

module Gitlab
  module Dangerfiles
    class EmojiChecker
      DIGESTS = File.expand_path("../../../fixtures/emojis/digests.json", __dir__)
      ALIASES = File.expand_path("../../../fixtures/emojis/aliases.json", __dir__)

      # A regex that indicates a piece of text _might_ include an Emoji. The regex
      # alone is not enough, as we'd match `:foo:bar:baz`. Instead, we use this
      # regex to save us from having to check for all possible emoji names when we
      # know one definitely is not included.
      LIKELY_EMOJI = /:[\+a-z0-9_\-]+:/.freeze

      UNICODE_EMOJI_REGEX = %r{(
        [\u{1F300}-\u{1F5FF}] |
        [\u{1F1E6}-\u{1F1FF}] |
        [\u{2700}-\u{27BF}] |
        [\u{1F900}-\u{1F9FF}] |
        [\u{1F600}-\u{1F64F}] |
        [\u{1F680}-\u{1F6FF}] |
        [\u{2600}-\u{26FF}]
      )}x.freeze

      def initialize
        names = JSON.parse(File.read(DIGESTS)).keys +
                JSON.parse(File.read(ALIASES)).keys

        @emoji = names.map { |name| ":#{name}:" }
      end

      def includes_text_emoji?(text)
        return false unless text.match?(LIKELY_EMOJI)

        @emoji.any? { |emoji| text.include?(emoji) }
      end

      def includes_unicode_emoji?(text)
        text.match?(UNICODE_EMOJI_REGEX)
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
gitlab-dangerfiles-1.1.1 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-1.1.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-1.0.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.9.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.8.1 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.8.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.7.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.6.1 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.6.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.5.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.4.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.3.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.2.0 lib/gitlab/dangerfiles/emoji_checker.rb
gitlab-dangerfiles-0.1.0 lib/gitlab/dangerfiles/emoji_checker.rb