Sha256: 8fa61e2f0ebf808010f7f23f5f31c71e379690f2366aeb70013fa28bf09a37db

Contents?: true

Size: 1.83 KB

Versions: 2

Compression:

Stored size: 1.83 KB

Contents

require 'dub/generator'
require 'erb'

module Dub
  module Lua
    class NamespaceGen < Dub::Generator
      def initialize
        @namespace_template = ::ERB.new(File.read(File.join(File.dirname(__FILE__), 'namespace.cpp.erb')))
      end

      def namespace(namespace)
        @namespace = namespace
        @namespace_template.result(binding)
      end

      def class_generator
        Lua.class_generator
      end

      def function_generator
        Lua.function_generator
      end

      def functions_registration(namespace = @namespace)
        (namespace.members || []).map do |method|
          "{%-32s, #{method.method_name(0)}}" % method.name.inspect
        end.join(",\n")
      end

      def constants_registration(namespace = @namespace)
        res = []
        if namespace.has_enums?
          res << namespace.enums.map do |name|
            "{%-32s, #{namespace.full_type}::#{name}}" % name.inspect
          end.join(",\n")
        end

        if namespace.has_defines?
          res << namespace.defines.map do |name|
            "{%-32s, #{name}}" % name.inspect
          end.join(",\n")
        end

        same = namespace.enums & namespace.defines
        unless same.empty?
          # Should never happen (not sure if it would compile ok in the first place)
          puts "Warning: the following are present both as enum and define: #{same.inspect}"
        end
        res.join(",\n\n")
      end

      def members_list(all_members)
        all_members
        #list = (all_members || []).map do |member_or_group|
        #  if member_or_group.kind_of?(Array)
        #    members_list(member_or_group)
        #  elsif ignore_member?(member_or_group)
        #    nil
        #  else
        #    member_or_group
        #  end
        #end
        #
        #list.compact!
        #list == [] ? nil : list
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dub-1.0.0 lib/dub/lua/namespace_gen.rb
dub-0.7.0 lib/dub/lua/namespace_gen.rb