Sha256: 18e2e668977ff4991ad1b5402a0711ca5e969c4379d1ccfbb293a138064fc2fb

Contents?: true

Size: 626 Bytes

Versions: 10

Compression:

Stored size: 626 Bytes

Contents

require 'ostruct'
require 'simnos/dsl/topic'

module Simnos
  class DSL
    class SNS
      include Simnos::TemplateHelper

      attr_reader :result

      def initialize(context, topics, &block)
        @context = context

        @result  = OpenStruct.new(
          topics: topics
        )
        @names = topics.map(&:name)
        instance_eval(&block)
      end

      private

      def topic(name, &block)
        if @names.include?(name)
          raise "#{name} is already defined"
        end

        @result.topics << Topic.new(@context, name, &block).result
        @names << name
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
simnos-0.1.3.beta1 lib/simnos/dsl/sns.rb
simnos-0.1.2 lib/simnos/dsl/sns.rb
simnos-0.1.1 lib/simnos/dsl/sns.rb
simnos-0.1.1.beta2 lib/simnos/dsl/sns.rb
simnos-0.1.1.beta1 lib/simnos/dsl/sns.rb
simnos-0.1.0 lib/simnos/dsl/sns.rb
simnos-0.1.0.beta4 lib/simnos/dsl/sns.rb
simnos-0.1.0.beta3 lib/simnos/dsl/sns.rb
simnos-0.1.0.beta2 lib/simnos/dsl/sns.rb
simnos-0.1.0.beta1 lib/simnos/dsl/sns.rb