Class: CfnDsl::JSONable

Inherits:
Object
  • Object
show all
Extended by:
Functions
Includes:
Functions, RefCheck
Defined in:
lib/cfndsl/JSONable.rb

Instance Method Summary collapse

Methods included from Functions

FnAnd, FnBase64, FnEquals, FnFindInMap, FnFormat, FnGetAZs, FnGetAtt, FnIf, FnJoin, FnNot, FnOr, FnSelect, Ref

Methods included from RefCheck

#references

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args, &block) ⇒ Object



179
180
181
182
183
184
185
186
# File 'lib/cfndsl/JSONable.rb', line 179

def method_missing(meth,*args,&block)
  if(args) then
    arg = "(" + args.inspect[1..-2] + ")"
  else
    arg = ""
  end
  CfnDsl::Errors.error( "Undefined symbol: #{meth}#{arg}", 1 )
end

Instance Method Details

#declare(&block) ⇒ Object



175
176
177
# File 'lib/cfndsl/JSONable.rb', line 175

def declare(&block)
  self.instance_eval &block if block_given?
end

#ref_childrenObject



171
172
173
# File 'lib/cfndsl/JSONable.rb', line 171

def ref_children
  return self.instance_variables.map { |var| self.instance_variable_get var }
end

#to_json(*a) ⇒ Object



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# File 'lib/cfndsl/JSONable.rb', line 148

def to_json(*a)
  ##
  # Use instance variables to build a json object. Instance
  # variables that begin with a single underscore are elided.
  # Instance variables that begin with two underscores have one of
  # them removed.
  hash = {}
  self.instance_variables.each do |var|
    name = var[1..-1]

    if( name =~ /^__/ ) then
      # if a variable starts with double underscore, strip one off
      name = name[1..-1]
    elsif( name =~ /^_/ ) then
      # Hide variables that start with single underscore
      name = nil
    end

    hash[name] = self.instance_variable_get var if name
  end
  hash.to_json(*a)
end