class StructCore::SpecBuilderDsl
Attributes
project_base_dir[RW]
Public Class Methods
new(spec_file, file_dsls = [])
click to toggle source
# File lib/spec/builder/spec_builder_dsl.rb, line 7 def initialize(spec_file, file_dsls = []) @spec_file = spec_file @file_dsls = file_dsls @project_base_dir = nil @current_scope = nil register_defaults if @file_dsls.empty? end
Public Instance Methods
__build()
click to toggle source
# File lib/spec/builder/spec_builder_dsl.rb, line 34 def __build @spec_file end
method_missing(method, *args, &block)
click to toggle source
# File lib/spec/builder/spec_builder_dsl.rb, line 64 def method_missing(method, *args, &block) if @current_scope.nil? && method == :build send('__build', *args, &block) else @current_scope.send(method, *args, &block) end end
register(dsl)
click to toggle source
# File lib/spec/builder/spec_builder_dsl.rb, line 18 def register(dsl) if dsl.respond_to?(:supports_version) @file_dsls << dsl return end raise StandardError.new 'Unsupported DSL object. DSL object must support :supports_version' end
register_defaults()
click to toggle source
# File lib/spec/builder/spec_builder_dsl.rb, line 27 def register_defaults @file_dsls.unshift( StructCore::SpecFileDSL20X.new, StructCore::SpecFileDSL30X.new ) end
respond_to_missing?(_, _)
click to toggle source
# File lib/spec/builder/spec_builder_dsl.rb, line 60 def respond_to_missing?(_, _) !@current_scope.nil? end
spec(version, &block)
click to toggle source
# File lib/spec/builder/spec_builder_dsl.rb, line 38 def spec(version, &block) begin spec_version = Semantic::Version.new version rescue StandardError => _ raise StandardError.new 'Error: Invalid spec file. Project version is invalid.' end dsl = @file_dsls.find { |dsl| dsl.supports_version(spec_version) } raise StandardError.new "Error: Invalid spec file. Project version #{version} is unsupported by this version of struct." if dsl.nil? @spec_file.version = spec_version dsl.spec_file = @spec_file dsl.project_base_dir = @project_base_dir @current_scope = dsl block.call @current_scope = nil end