summaryrefslogtreecommitdiff
path: root/app/models/concerns/maskable.rb
blob: 2943872ffab693c656e9a3277778202ffef1e268 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# frozen_string_literal: true

module Maskable
  extend ActiveSupport::Concern

  # * Single line
  # * No escape characters
  # * No variables
  # * No spaces
  # * Minimal length of 8 characters
  # * Absolutely no fun is allowed
  REGEX = /\A\w{8,}\z/.freeze

  included do
    validates :masked, inclusion: { in: [true, false] }
    validates :value, format: { with: REGEX }, if: :masked?
  end

  def to_runner_variable
    super.merge(masked: masked?)
  end
end