File: tk/package.rb

Overview
Module Structure
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TkPackage#6
extends
  TkPackage   
includes
  TkCore   
has properties
constant: TkCommandNames #10
method: add_path / 1 #12
method: forget / 1 #16
method: if_needed / 4 #21
method: names #51
method: provide / 2 #55
method: present / 2 #66
method: present_exact / 2 #74
method: require / 2 #82
method: require_exact / 2 #90
method: unknown_proc / 2 #98
method: versions / 1 #128
method: vcompare / 2 #132
method: vsatisfies / 2 #136
method: prefer / 1 #140

Code

   1  #
   2  # tk/package.rb : package command
   3  #
   4  require 'tk'
   5 
   6  module TkPackage
   7    include TkCore
   8    extend TkPackage
   9 
  10    TkCommandNames = ['package'.freeze].freeze
  11 
  12    def add_path(path)
  13      Tk::AUTO_PATH.value = Tk::AUTO_PATH.to_a << path
  14    end
  15 
  16    def forget(package)
  17      tk_call('package', 'forget', package)
  18      nil
  19    end
  20 
  21    def if_needed(pkg, ver, *arg, &b)
  22      size = arg.size
  23 
  24      if size==0 && !b
  25        # proc info
  26        procedure(tk_call('package', 'ifneeded', pkg, ver))
  27 
  28      elsif size==0 && b
  29        # set proc
  30        cmd = proc(&b)
  31        tk_call('package', 'ifneeded', pkg, ver, cmd)
  32        cmd
  33 
  34      elsif size==1 && !b
  35        # set proc
  36        cmd = arg[0]
  37        if cmd
  38          tk_call('package', 'ifneeded', pkg, ver, cmd)
  39          cmd
  40        else
  41          # remove proc
  42          tk_call('package', 'ifneeded', pkg, ver, '')
  43          nil
  44        end
  45 
  46      else
  47        fail ArgumentError, 'too many arguments'
  48      end
  49    end
  50 
  51    def names
  52      tk_split_simplelist(tk_call('package', 'names'))
  53    end
  54 
  55    def provide(package, version=nil)
  56      if version
  57        tk_call('package', 'provide', package, version)
  58      end
  59      if (ret = tk_call('package', 'provide', package)) == ''
  60        nil
  61      else
  62        ret
  63      end
  64    end
  65 
  66    def present(package, version=None)
  67      begin
  68        tk_call('package', 'present', package, version)
  69      rescue => e
  70        fail e.class, 'TkPackage ' << e.message
  71      end
  72    end
  73 
  74    def present_exact(package, version)
  75      begin
  76        tk_call('package', 'present', '-exact', package, version)
  77      rescue => e
  78        fail e.class, 'TkPackage ' << e.message
  79      end
  80    end
  81 
  82    def require(package, version=None)
  83      begin
  84        tk_call('package', 'require', package, version)
  85      rescue => e
  86        fail e.class, 'TkPackage ' << e.message
  87      end
  88    end
  89 
  90    def require_exact(package, version)
  91      begin
  92        tk_call('package', 'require', '-exact', package, version)
  93      rescue => e
  94        fail e.class, 'TkPackage ' << e.message
  95      end
  96    end
  97 
  98    def unknown_proc(*arg, &b)
  99      size = arg.size
 100 
 101      if size==0 && !b
 102        # proc info
 103        procedure(tk_call('package', 'unknown'))
 104 
 105      elsif size==0 && b
 106        # set proc
 107        cmd = proc(&b)
 108        tk_call('package', 'unknown', cmd)
 109        cmd
 110 
 111      elsif size==1 && !b
 112        # set proc
 113        cmd = arg[0]
 114        if cmd
 115          tk_call('package', 'unknown', cmd)
 116          cmd
 117        else
 118          # remove proc
 119          tk_call('package', 'unknown', '')
 120          nil
 121        end
 122 
 123      else
 124        fail ArgumentError, 'too many arguments'
 125      end
 126    end
 127 
 128    def versions(package)
 129      tk_split_simplelist(tk_call('package', 'versions', package))
 130    end
 131 
 132    def vcompare(version1, version2)
 133      number(tk_call('package', 'vcompare', version1, version2))
 134    end
 135 
 136    def vsatisfies(version1, version2)
 137      bool(tk_call('package', 'vsatisfies', version1, version2))
 138    end
 139 
 140    def prefer(setting = None)
 141      tk_call('package', 'prefer', setting)
 142    end
 143  end