Module: Tk::ValidateConfigure

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.__def_validcmd(scope, klass, keys = nil) ⇒ Object



8
9
10
11
12
13
14
15
# File 'ext/lib/tk/validation.rb', line 8

def self.__def_validcmd(scope, klass, keys=nil)
  keys = klass._config_keys unless keys
  keys.each{|key|
    eval("def #{key}(*args, &b)
             __validcmd_call(#{klass.name}, '#{key}', *args, &b)
          end", scope)
  }
end

Instance Method Details

#__conv_vcmd_on_hash_kv(keys) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'ext/lib/tk/validation.rb', line 46

def __conv_vcmd_on_hash_kv(keys)
  key2class = __get_validate_key2class

  keys = _symbolkey2str(keys)
  key2class.each{|key, klass|
    if keys[key].kind_of?(Array)
      cmd, *args = keys[key]
      #keys[key] = klass.new(cmd, args.join(' '))
      keys[key] = klass.new(cmd, *args)
    # elsif keys[key].kind_of?(Proc) ||  keys[key].kind_of?(Method)
    elsif TkComm._callback_entry?(keys[key])
      keys[key] = klass.new(keys[key])
    end
  }
  keys
end

#__get_validate_key2classObject



36
37
38
39
40
41
42
43
44
# File 'ext/lib/tk/validation.rb', line 36

def __get_validate_key2class
  k2c = {}
  __validation_class_list.each{|klass|
    klass._config_keys.each{|key|
      k2c[key.to_s] = klass
    }
  }
  k2c
end

#__validation_class_listObject



31
32
33
34
# File 'ext/lib/tk/validation.rb', line 31

def __validation_class_list
  # maybe need to override
  []
end

#__validcmd_call(klass, key, *args, &b) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'ext/lib/tk/validation.rb', line 17

def __validcmd_call(klass, key, *args, &b)
  return cget(key) if args.empty? && !b

  cmd = (b)? proc(&b) : args.shift

  if cmd.kind_of?(klass)
    configure(key, cmd)
  elsif !args.empty?
    configure(key, [cmd, args])
  else
    configure(key, cmd)
  end
end

#configure(slot, value = TkComm::None) ⇒ Object



68
69
70
71
72
73
74
75
# File 'ext/lib/tk/validation.rb', line 68

def configure(slot, value=TkComm::None)
  if slot.kind_of?(Hash)
    super(__conv_vcmd_on_hash_kv(slot))
  else
    super(__conv_vcmd_on_hash_kv(slot=>value))
  end
  self
end