Sha256: 9df02d68581a948b8fd34152671e6467435e5c6f3ecb7a4a9eb52a8232ee8d5c

Contents?: true

Size: 1.3 KB

Versions: 4

Compression:

Stored size: 1.3 KB

Contents

require "goon_model_gen"

require "goon_model_gen/source/contextual"
require "goon_model_gen/source/struct"
require "goon_model_gen/source/enum"
require "goon_model_gen/source/named_slice"

module GoonModelGen
  module Source
    class File
      include Contextual

      attr_reader :path
      attr_reader :types

      # @param path [string]
      def initialize(path)
        @path = path
        @types = []
      end

      def basename
        ::File.basename(path, '.*')
      end

      # @param name [string]
      # @return [Struct]
      def new_struct(name)
        Struct.new(name).tap do |s|
          s.context = self.context
          s.file = self
          types.push(s)
        end
      end

      # @param name [string]
      # @param base_type [String]
      # @param map [Hash<Object,Hash>] elements of enum from YAML
      # @return [Enum]
      def new_enum(name, base_type, map)
        Enum.new(name, base_type, map).tap do |t|
          t.context = self.context
          types.push(t)
        end
      end

      # @param name [string]
      # @param base_type_name [string]
      # @return [Slice]
      def new_named_slice(name, base_type_name)
        NamedSlice.new(name, base_type_name).tap do |s|
          s.context = self.context
          types.push(s)
        end
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
goon_model_gen-0.2.1 lib/goon_model_gen/source/file.rb
goon_model_gen-0.2.0 lib/goon_model_gen/source/file.rb
goon_model_gen-0.1.3 lib/goon_model_gen/source/file.rb
goon_model_gen-0.1.2 lib/goon_model_gen/source/file.rb