File: binary.rb

package info (click to toggle)
ruby-icalendar 2.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 492 kB
  • sloc: ruby: 2,868; makefile: 5
file content (31 lines) | stat: -rw-r--r-- 533 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
require 'base64'

module Icalendar
  module Values

    class Binary < Value

      def params_ical
        ical_param :value, 'BINARY'
        ical_param :encoding, 'BASE64'
        super
      end

      def value_ical
        if base64?
          value
        else
          Base64.strict_encode64 value
        end
      end

      private

      def base64?
        value.is_a?(String) &&
            value =~ /\A(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{4}|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==)\z/
      end
    end

  end
end