lib/cfer/block.rb in cfer-0.4.2 vs lib/cfer/block.rb in cfer-0.5.0.pre.rc1

- old
+ new

@@ -10,18 +10,26 @@ Docile.dsl_eval(self, *args, &block) if block post_block self end + # Evaluates a DSL from a Ruby string + # @param args [Array<Object>] Extra arguments to be passed into the block + # @param str [String] The Cfer source template to evaluate + # @param file [File] The file that will be reported in any error messages + def build_from_string(*args, str, file) + build_from_block(*args) do + instance_eval str, file + end + self + end + # Evaluates a DSL from a Ruby script file # @param args [Array<Object>] (see: #build_from_block) # @param file [File] The Ruby script to evaluate def build_from_file(*args, file) - build_from_block(*args) do - instance_eval File.read(file), file - end - self + build_from_string File.read(file), file end # Executed just before the DSL is evaluated def pre_block end @@ -29,16 +37,26 @@ # Executed just after the DSL is evaluated def post_block end end + # BlockHash is a Block that responds to DSL-style properties. class BlockHash < Block - NON_PROXIED_METHODS = [:parameters, :options, :lookup_output] + NON_PROXIED_METHODS = [ + :parameters, + :options, + :lookup_output, + :lookup_outputs + ].freeze + # Directly sets raw properties in the underlying CloudFormation structure. + # @param keyvals [Hash] The properties to set on this object. def properties(keyvals = {}) self.merge!(keyvals) end + # Gets the current value of a given property + # @param key [String] The name of the property to fetch def get_property(key) self.fetch key end def respond_to?(method_sym)