Class: Sfp::Variable

Inherits:
Array
  • Object
show all
Defined in:
lib/sfp/sas_translator.rb

Overview

SAS Variable is a finite-domain variable It has a finite set of possible values

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, type, layer = -1,, init = nil, goal = nil, is_final = false) ⇒ Variable

Returns a new instance of Variable.



1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
# File 'lib/sfp/sas_translator.rb', line 1800

def initialize(name, type, layer=-1, init=nil, goal=nil, is_final=false)
  @name = name
  @type = type
  @layer = layer
  @init = init
  @goal = goal
  @is_final = is_final
  @is_primitive = (type == '$.String' or type == '$.Integer' or type == '$.Boolean')
  @mutable = true
end

Instance Attribute Details

#goalObject

Returns the value of attribute goal.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def goal
  @goal
end

#idObject

Returns the value of attribute id.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def id
  @id
end

#initObject

Returns the value of attribute init.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def init
  @init
end

#is_finalObject

Returns the value of attribute is_final.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def is_final
  @is_final
end

#is_primitiveObject (readonly)

Returns the value of attribute is_primitive.



1798
1799
1800
# File 'lib/sfp/sas_translator.rb', line 1798

def is_primitive
  @is_primitive
end

#issetObject

Returns the value of attribute isset.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def isset
  @isset
end

#layerObject

Returns the value of attribute layer.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def layer
  @layer
end

#mutableObject

Returns the value of attribute mutable.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def mutable
  @mutable
end

#nameObject

Returns the value of attribute name.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def name
  @name
end

#typeObject

Returns the value of attribute type.



1797
1798
1799
# File 'lib/sfp/sas_translator.rb', line 1797

def type
  @type
end

Instance Method Details

#not(x) ⇒ Object



1833
1834
1835
# File 'lib/sfp/sas_translator.rb', line 1833

def not(x)
  self.select { |y| y != x }
end

#to_sObject



1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
# File 'lib/sfp/sas_translator.rb', line 1811

def to_s
  s = @name.to_s + '|' + @type.to_s
  s += '|' + (@init == nil ? '-' : (@init.is_a?(Hash) ? @init.tostring : @init.to_s))
  s += '|' + (@goal == nil ? '-' : (@goal.is_a?(Hash) ? @goal.tostring : @goal.to_s))
  s += '|' + (@is_final ? 'final' : 'notfinal') + "\n"
  s += "\t["
  self.each { |v| s += (v.is_a?(Hash) ? v.tostring : v.to_s) + ',' }
  s = (self.length > 0 ? s.chop : s) + "]"
  return s
end

#to_sas(root) ⇒ Object

return variable representation in SAS+ format



1823
1824
1825
1826
1827
1828
1829
1830
1831
# File 'lib/sfp/sas_translator.rb', line 1823

def to_sas(root)
  sas = "begin_variable\nvar_#{@id}#{@name}\n#{@layer}\n#{self.length}\n"
  self.each { |v|
    v = root.at?(v) if v.is_a?(String) and v.isref
    v = '"' + v + '"' if v.is_a?(String)
    sas += (v.is_a?(Hash) ? (v.isnull ? "null\n" : "#{v.ref}\n") : "#{v}\n")
  }
  return sas += "end_variable"
end