Class: FSymbol
  
  
  
  
    
    
  
  
    
  
    
  
  
  
          
    
- Defined in
 
    - lib/kyanite/fsymbol.rb
 
         
   
  
    
CallerUtils
 - Usage
 - 
require ‘kyanite/fsymbol’
   
A FSymbol (“focusable Symbol”) is  a comparable Symbol within a
hierarchy. You can use it for classifications. In its values, it is
limited to the values,  which are defined in the hierarchy.  FSymbols are
comparable with <= >= <=>. A more specific FSymbol is larger
than a more general FSymbol  (because the specific FSymbol contains more
information) E.g. if you define a hierarchy if animal species, you can say:
:insect.to_f_symbol <= :bee.to_f_symbol
FSymbols are equal to Symbols with the same name.
   
 
  
  Instance Attribute Summary (collapse)
  
  
    
      Instance Method Summary
      (collapse)
    
    
  
  Constant Summary
  
    
      
            
      
            
      
    
  
  Constructor Details
  
    
  
  
    - (FSymbol) initialize(value, def_tree = nil) 
  
  
  
  
    
A new instance of FSymbol
   
 
  
    
      
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 29
def initialize( value, def_tree=nil)
  raise ArgumentError, 'First parameter (value) must not be nil!'       if value.nil?    
  @value = value    
  
  if @@instance_cache[value]
    @childs = @@instance_cache[value].childs 
    return @@instance_cache[value] 
  end
  
  if def_tree.nil?
    def_tree = @@def_tree_cache
  else
    @@def_tree_cache = def_tree
  end
  raise ArgumentError, "FSymbol could not be created. No def_tree."                                 if def_tree.nil?     
  tree = def_tree.find(value) || nil
  raise ArgumentError, "FSymbol could not be created. Did not found value :#{value} in def_tree."   if tree.nil? 
  
  @childs = tree.all_child_keys    
  @@instance_cache[value] = self
  self
end
     | 
  
 
  
 
  
    Instance Attribute Details
    
      
      
      
  
  
    
Returns the value of attribute childs
   
 
  
  
    
      
16
17
18 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 16
def childs
  @childs
end 
     | 
  
 
    
      
      
      
  
  
    
Returns the value of attribute value
   
 
  
  
    
      
15
16
17 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 15
def value
  @value
end 
     | 
  
 
    
   
  
    Instance Method Details
    
      
  
  
    - (Object) <=(other) 
  
  
  
  
    
      
83
84
85
86
87
88
89
90
91 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 83
def <=(other)
  return nil       if other.nil?
  begin
    c = (self <=> other)
    (c == -1 || c == 0)
  rescue
    nil
  end
end
     | 
  
 
    
      
  
  
    - (Object) <=>(other) 
  
  
  
  
    
      
63
64
65
66
67
68
69
70 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 63
def <=>(other)
  return nil       if other.nil?
  other = other.to_fsymbol  unless other.class == FSymbol
  return 0   if @value == other.value    
  return -1  if @childs.include?(other.value)
  return 1   if other.childs.include?(@value) 
  return nil
end 
     | 
  
 
    
      
  
  
    - (Object) ==(other) 
  
  
  
  
    
      
73
74
75
76
77
78
79
80 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 73
def ==(other)
  return nil       if other.nil?
  begin
    (self <=> other) == 0
  rescue
    nil
  end
end
     | 
  
 
    
      
  
  
    - (Object) >=(other) 
  
  
  
  
    
      
94
95
96
97
98
99
100
101
102 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 94
def >=(other)
  return nil       if other.nil?
  begin
    c = (self <=> other)
    (c == 1 || c == 0)
  rescue
    nil
  end
end
     | 
  
 
    
      
  
  
    
      
58
59
60 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 58
def inspect
  @value.inspect
end 
     | 
  
 
    
      
  
  
    - (Boolean) nil? 
  
  
  
  
    
      
105
106
107
108 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 105
def nil?
  return true if @value.nil?
  false
end 
     | 
  
 
    
      
  
  
    
      
53
54
55 
     | 
    
      # File 'lib/kyanite/fsymbol.rb', line 53
def to_s
  @value.to_s
end 
     |