[DRE-commits] [ruby-forwardable-extended] 01/03: Import Upstream version 2.6.0
Youhei SASAKI
uwabami-guest at moszumanska.debian.org
Sun Sep 3 06:43:10 UTC 2017
This is an automated email from the git hooks/post-receive script.
uwabami-guest pushed a commit to branch master
in repository ruby-forwardable-extended.
commit 6ea0a08d7713602d57619948c6847385f330aade
Author: Youhei SASAKI <uwabami at gfd-dennou.org>
Date: Thu Aug 31 12:12:43 2017 +0900
Import Upstream version 2.6.0
---
Gemfile | 24 +++++
LICENSE | 19 ++++
Rakefile | 13 +++
forwardable-extended.gemspec | 22 ++++
lib/forwardable/extended.rb | 202 ++++++++++++++++++++++++++++++++++++
lib/forwardable/extended/version.rb | 9 ++
6 files changed, 289 insertions(+)
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..ea587c7
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,24 @@
+# ----------------------------------------------------------------------------
+# Frozen-string-literal: true
+# Copyright: 2015-2016 Jordon Bedwell - MIT License
+# Encoding: utf-8
+# ----------------------------------------------------------------------------
+
+source "https://rubygems.org"
+gem "rake", :require => false
+gemspec
+
+group :test do
+ gem "rspec-helpers", :require => false
+ gem "codeclimate-test-reporter", :require => false
+ gem "luna-rspec-formatters", :require => false
+ gem "rspec", :require => false
+end
+
+group :development do
+ gem "luna-rubocop-formatters", :require => false
+ gem "rubocop", :github => "bbatsov/rubocop", :require => false
+ gem "pry", {
+ :require => false
+ }
+end
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..e603a78
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-2016 Jordon Bedwell
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Rakefile b/Rakefile
new file mode 100644
index 0000000..1c929e5
--- /dev/null
+++ b/Rakefile
@@ -0,0 +1,13 @@
+# ----------------------------------------------------------------------------
+# Frozen-string-literal: true
+# Copyright: 2015-2016 Jordon Bedwell - MIT License
+# Encoding: utf-8
+# ----------------------------------------------------------------------------
+
+$LOAD_PATH.unshift(File.expand_path("../lib", __FILE__))
+require "luna/rubocop/rake/task"
+require "rspec/core/rake_task"
+
+task :default => [:spec]
+RSpec::Core::RakeTask.new :spec
+task :test => :spec
diff --git a/forwardable-extended.gemspec b/forwardable-extended.gemspec
new file mode 100644
index 0000000..cd5dabc
--- /dev/null
+++ b/forwardable-extended.gemspec
@@ -0,0 +1,22 @@
+#########################################################
+# This file has been automatically generated by gem2tgz #
+#########################################################
+# -*- encoding: utf-8 -*-
+# stub: forwardable-extended 2.6.0 ruby lib
+
+Gem::Specification.new do |s|
+ s.name = "forwardable-extended".freeze
+ s.version = "2.6.0"
+
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
+ s.require_paths = ["lib".freeze]
+ s.authors = ["Jordon Bedwell".freeze]
+ s.date = "2016-04-06"
+ s.description = "Forwardable with hash, and instance variable extensions.".freeze
+ s.email = ["jordon at envygeeks.io".freeze]
+ s.files = ["Gemfile".freeze, "LICENSE".freeze, "Rakefile".freeze, "lib/forwardable/extended.rb".freeze, "lib/forwardable/extended/version.rb".freeze]
+ s.homepage = "http://github.com/envygeeks/forwardable-extended".freeze
+ s.licenses = ["MIT".freeze]
+ s.rubygems_version = "2.5.2".freeze
+ s.summary = "Forwardable with hash, and instance variable extensions.".freeze
+end
diff --git a/lib/forwardable/extended.rb b/lib/forwardable/extended.rb
new file mode 100644
index 0000000..fc694cf
--- /dev/null
+++ b/lib/forwardable/extended.rb
@@ -0,0 +1,202 @@
+# ----------------------------------------------------------------------------
+# Frozen-string-literal: true
+# Copyright: 2015-2016 Jordon Bedwell - MIT License
+# Encoding: utf-8
+# ----------------------------------------------------------------------------
+
+require "forwardable/extended/version"
+require "forwardable"
+
+module Forwardable
+ module Extended
+
+ # ------------------------------------------------------------------------
+ # Make our methods private on the class, there is no reason for public.
+ # ------------------------------------------------------------------------
+
+ def self.extended(klass)
+ instance_methods.each do |method|
+ klass.private_class_method(
+ method
+ )
+ end
+ end
+
+ # ------------------------------------------------------------------------
+ # Delegate using a Rails-like interface.
+ # ------------------------------------------------------------------------
+
+ def rb_delegate(method, to: nil, alias_of: method, **kwd)
+ raise ArgumentError, "to must be provided" unless to
+ def_delegator(
+ to, alias_of, method, **kwd
+ )
+ end
+
+ # ------------------------------------------------------------------------
+ # Delegate a method to a hash and key.
+ # ------------------------------------------------------------------------
+
+ def def_hash_delegator(hash, method, key: method, **kwd)
+ prefix, suffix, wrap = prepare_delegate(**kwd)
+
+ if suffix
+ method = method.to_s.gsub(
+ /\?$/, ""
+ )
+ end
+
+ class_eval delegate_debug(<<-STR), __FILE__, __LINE__ - 9
+ def #{method}#{suffix}(*args)
+ #{wrap}(
+ #{prefix}#{hash}[#{key.inspect}]
+ )
+
+ rescue Exception
+ if !Forwardable.debug && $@ && $@.respond_to?(:delete_if)
+ $@.delete_if do |source|
+ source =~ %r"#{Regexp.escape(__FILE__)}"o
+ end
+ end
+
+ raise
+ end
+ STR
+ end
+
+ # ------------------------------------------------------------------------
+ # Delegate a method to an instance variable.
+ # ------------------------------------------------------------------------
+
+ def def_ivar_delegator(ivar, alias_ = ivar, **kwd)
+ prefix, suffix, wrap = prepare_delegate(**kwd)
+
+ if suffix
+ alias_ = alias_.to_s.gsub(
+ /\?$/, ""
+ )
+ end
+
+ class_eval delegate_debug(<<-STR), __FILE__, __LINE__ - 9
+ def #{alias_.to_s.gsub(/\A@/, "")}#{suffix}
+ #{wrap}(
+ #{prefix}#{ivar}
+ )
+
+ rescue Exception
+ if !Forwardable.debug && $@ && $@.respond_to?(:delete_if)
+ $@.delete_if do |source|
+ source =~ %r"#{Regexp.escape(__FILE__)}"o
+ end
+ end
+
+ raise
+ end
+ STR
+ end
+
+ # ------------------------------------------------------------------------
+ # Like def_delegator but allows you to send args and do other stuff.
+ # ------------------------------------------------------------------------
+
+ def def_modern_delegator(accessor, method, alias_ = method, args: \
+ { :before => [], :after => [] }, **kwd)
+
+ prefix, suffix, wrap = prepare_delegate(**kwd)
+ args = { :before => args } unless args.is_a?(Hash)
+ b = [args[:before]].flatten.compact.map(&:to_s).join(", ")
+ a = [args[ :after]].flatten.compact.map(&:to_s).join(", ")
+ b = b + ", " unless args[:before].nil? || args[:before].empty?
+ a = ", " + a unless args[ :after].nil? || args[ :after].empty?
+ alias_ = alias_.to_s.gsub(/\?$/, "") if suffix
+
+ class_eval delegate_debug(<<-STR), __FILE__, __LINE__ - 10
+ def #{alias_}#{suffix}(*args, &block)
+ #{wrap}(#{prefix}#{accessor}.send(
+ #{method.inspect}, #{b}*args#{a}, &block
+ ))
+
+ rescue Exception
+ if !Forwardable.debug && $@ && $@.respond_to?(:delete_if)
+ $@.delete_if do |source|
+ source =~ %r"#{Regexp.escape(__FILE__)}"o
+ end
+ end
+
+ raise
+ end
+ STR
+ end
+
+ # ------------------------------------------------------------------------
+ # Wraps around traditional delegation and modern delegation.
+ # ------------------------------------------------------------------------
+
+ def def_delegator(accessor, method, alias_ = method, **kwd)
+ kwd, alias_ = alias_, method if alias_.is_a?(Hash) && !kwd.any?
+
+ if alias_.is_a?(Hash) || !kwd.any?
+ Forwardable.instance_method(:def_delegator).bind(self) \
+ .call(accessor, method, alias_)
+
+ elsif !kwd[:type]
+ def_modern_delegator(
+ accessor, method, alias_, **kwd
+ )
+
+ else
+ raise ArgumentError, "Alias not supported." if alias_ != method
+ send("def_#{kwd[:type]}_delegator", accessor, method, **kwd.tap do |obj|
+ obj.delete(:type)
+ end)
+ end
+ end
+
+ # ------------------------------------------------------------------------
+ # Create multiple delegates at once.
+ # ------------------------------------------------------------------------
+
+ def def_delegators(accessor, *methods)
+ kwd = methods.shift if methods.first.is_a?(Hash)
+ kwd = methods.pop if methods. last.is_a?(Hash)
+ kwd = {} unless kwd
+
+ methods.each do |method|
+ def_delegator accessor, method, **kwd
+ end
+ end
+
+ # ------------------------------------------------------------------------
+ # Prepares a delegate and it's few arguments.
+ # ------------------------------------------------------------------------
+
+ private
+ def prepare_delegate(wrap: nil, bool: false)
+ prefix = (bool == :reverse ? "!!!" : "!!") if bool
+ wrap = "self.class.new" if wrap.is_a?(TrueClass)
+ suffix = "?" if bool
+
+ return [
+ prefix, suffix, wrap
+ ]
+ end
+
+ # ------------------------------------------------------------------------
+
+ private
+ def delegate_debug(str)
+ if Forwardable.debug && !Forwardable.debug.is_a?(TrueClass)
+ then Forwardable.debug.debug(
+ str
+ )
+
+ elsif Forwardable.debug
+ $stdout.puts(
+ "\n# ------\n\n", str
+ )
+ end
+
+ str
+ end
+ end
+end
diff --git a/lib/forwardable/extended/version.rb b/lib/forwardable/extended/version.rb
new file mode 100644
index 0000000..0639375
--- /dev/null
+++ b/lib/forwardable/extended/version.rb
@@ -0,0 +1,9 @@
+# Frozen-string-literal: true
+# Copyright: 2015-2016 Jordon Bedwell - MIT License
+# Encoding: utf-8
+
+module Forwardable
+ module Extended
+ VERSION = "2.6.0"
+ end
+end
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/ruby-forwardable-extended.git
More information about the Pkg-ruby-extras-commits
mailing list