File: settings.rb

package info (click to toggle)
ruby-mina 0.3.7-1.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 444 kB
  • sloc: ruby: 1,630; makefile: 31
file content (32 lines) | stat: -rw-r--r-- 653 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
32
module Mina
  class Settings < Hash
    def method_missing(meth, *args, &blk)
      name = meth.to_s

      return evaluate(self[meth])  if name.size == 1

      # Ruby 1.8.7 doesn't let you do string[-1]
      key, suffix = name[0..-2].to_sym, name[-1..-1]

      case suffix
      when '='
        self[key] = args.first
      when '?'
        include? key
      when '!'
        raise Error, "Setting :#{key} is not set" unless include?(key)
        evaluate self[key]
      else
        evaluate self[meth]
      end
    end

    def evaluate(value)
      if value.is_a?(Proc)
        value.call
      else
        value
      end
    end
  end
end