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.



1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
# File 'lib/sfp/sas_translator.rb', line 1863

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.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def goal
  @goal
end

#idObject

Returns the value of attribute id.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def id
  @id
end

#initObject

Returns the value of attribute init.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def init
  @init
end

#is_finalObject

Returns the value of attribute is_final.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def is_final
  @is_final
end

#is_primitiveObject (readonly)

Returns the value of attribute is_primitive.



1861
1862
1863
# File 'lib/sfp/sas_translator.rb', line 1861

def is_primitive
  @is_primitive
end

#issetObject

Returns the value of attribute isset.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def isset
  @isset
end

#layerObject

Returns the value of attribute layer.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def layer
  @layer
end

#mutableObject

Returns the value of attribute mutable.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def mutable
  @mutable
end

#nameObject

Returns the value of attribute name.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def name
  @name
end

#typeObject

Returns the value of attribute type.



1860
1861
1862
# File 'lib/sfp/sas_translator.rb', line 1860

def type
  @type
end

Instance Method Details

#dump(stream, root) ⇒ Object



1901
1902
1903
1904
1905
1906
1907
1908
1909
# File 'lib/sfp/sas_translator.rb', line 1901

def dump(stream, root)
  stream.write "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)
    stream.write (v.is_a?(Hash) ? (v.isnull ? "null\n" : "#{v.ref}\n") : "#{v}\n")
  }
  stream.write "end_variable\n"
end

#not(x) ⇒ Object



1911
1912
1913
# File 'lib/sfp/sas_translator.rb', line 1911

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

#to_sObject



1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
# File 'lib/sfp/sas_translator.rb', line 1874

def to_s
  s = @name.to_s + '|' + @type.to_s
  s << '|'
  s << (@init == nil ? '-' : (@init.is_a?(Hash) ? @init.tostring : @init.to_s))
  s << '|'
  s << (@goal == nil ? '-' : (@goal.is_a?(Hash) ? @goal.tostring : @goal.to_s))
  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)
  s << "]"
end

#to_sas(root) ⇒ Object

return variable representation in SAS+ format



1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
# File 'lib/sfp/sas_translator.rb', line 1889

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