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.



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

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.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def goal
  @goal
end

#idObject

Returns the value of attribute id.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def id
  @id
end

#initObject

Returns the value of attribute init.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def init
  @init
end

#is_finalObject

Returns the value of attribute is_final.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def is_final
  @is_final
end

#is_primitiveObject (readonly)

Returns the value of attribute is_primitive.



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

def is_primitive
  @is_primitive
end

#issetObject

Returns the value of attribute isset.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def isset
  @isset
end

#layerObject

Returns the value of attribute layer.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def layer
  @layer
end

#mutableObject

Returns the value of attribute mutable.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def mutable
  @mutable
end

#nameObject

Returns the value of attribute name.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def name
  @name
end

#typeObject

Returns the value of attribute type.



1858
1859
1860
# File 'lib/sfp/sas_translator.rb', line 1858

def type
  @type
end

Instance Method Details

#dump(stream, root) ⇒ Object



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

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



1909
1910
1911
# File 'lib/sfp/sas_translator.rb', line 1909

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

#to_sObject



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

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



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

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