Sha256: f44103dd5293b0fc7ad31858069e743de0527375683df3a35f9fc1a4da90bfa0

Contents?: true

Size: 1.32 KB

Versions: 10

Compression:

Stored size: 1.32 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 elements [Hash<Object,Hash>] elements of enum from YAML
      # @return [Enum]
      def new_enum(name, base_type, elements)
        Enum.new(name, base_type, elements).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

10 entries across 10 versions & 1 rubygems

Version Path
goon_model_gen-0.4.3 lib/goon_model_gen/source/file.rb
goon_model_gen-0.4.2 lib/goon_model_gen/source/file.rb
goon_model_gen-0.4.1 lib/goon_model_gen/source/file.rb
goon_model_gen-0.4.0 lib/goon_model_gen/source/file.rb
goon_model_gen-0.3.1 lib/goon_model_gen/source/file.rb
goon_model_gen-0.3.0 lib/goon_model_gen/source/file.rb
goon_model_gen-0.2.5 lib/goon_model_gen/source/file.rb
goon_model_gen-0.2.4 lib/goon_model_gen/source/file.rb
goon_model_gen-0.2.3 lib/goon_model_gen/source/file.rb
goon_model_gen-0.2.2 lib/goon_model_gen/source/file.rb