Sha256: 6eeac85d55d0a2c90c79383a23ac69ac2f1dff84fa9468d191548eb40afc5889

Contents?: true

Size: 905 Bytes

Versions: 52

Compression:

Stored size: 905 Bytes

Contents

require 'singleton'

module JsDuck
  module Util

    # A more convenient Singleton implementation.
    #
    # With the standard ruby Singleton you need to call the methods of
    # your singleton instance as follows:
    #
    #     MyClass.instance.my_method()
    #
    # But with JsDuck::Util::Singleton you can skip the .instance. part:
    #
    #     MyClass.my_method()
    #
    # This also conveniently hides from the calling code the fact that
    # a class is implemented as Singleton - it could just as well only
    # have static methods.
    #
    module Singleton
      def self.included(base)
        base.class_eval do
          include ::Singleton

          # Redirect calls from MyClass.method to MyClass.instance.method
          def self.method_missing(meth, *args, &block)
            self.instance.send(meth, *args, &block)
          end
        end
      end
    end

  end
end

Version data entries

52 entries across 52 versions & 3 rubygems

Version Path
solvas-jsduck-6.0.0.30539 lib/jsduck/util/singleton.rb
solvas-jsduck-6.0.0.9571 lib/jsduck/util/singleton.rb
solvas-jsduck-6.0.0.6154 lib/jsduck/util/singleton.rb
solvas-jsduck-6.0.0.4021 lib/jsduck/util/singleton.rb
solvas-jsduck-6.0.0.2554 lib/jsduck/util/singleton.rb
solvas-jsduck-6.0.0.1891 lib/jsduck/util/singleton.rb
solvas-jsduck-6.0.0.beta.1888 lib/jsduck/util/singleton.rb
jsduck-troopjs-0.0.10 lib/jsduck/util/singleton.rb
jsduck-troopjs-0.0.9 lib/jsduck/util/singleton.rb
jsduck-troopjs-0.0.8 lib/jsduck/util/singleton.rb
jsduck-troopjs-0.0.7 lib/jsduck/util/singleton.rb
jsduck-troopjs-0.0.5 lib/jsduck/util/singleton.rb
jsduck-troopjs-0.0.4 lib/jsduck/util/singleton.rb
jsduck-troopjs-0.0.3 lib/jsduck/util/singleton.rb
jsduck-troopjs-0.0.1 lib/jsduck/util/singleton.rb
jsduck-6.0.0beta lib/jsduck/util/singleton.rb
jsduck-5.3.4 lib/jsduck/util/singleton.rb
jsduck-5.3.3 lib/jsduck/util/singleton.rb
jsduck-5.3.2 lib/jsduck/util/singleton.rb
jsduck-5.3.1 lib/jsduck/util/singleton.rb