diff options
Diffstat (limited to 'lib/forwardable')
| -rw-r--r-- | lib/forwardable/forwardable.gemspec | 26 | ||||
| -rw-r--r-- | lib/forwardable/impl.rb | 16 |
2 files changed, 42 insertions, 0 deletions
diff --git a/lib/forwardable/forwardable.gemspec b/lib/forwardable/forwardable.gemspec new file mode 100644 index 0000000000..9ad59c5f8a --- /dev/null +++ b/lib/forwardable/forwardable.gemspec @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +name = File.basename(__FILE__, ".gemspec") +version = ["lib", Array.new(name.count("-")+1, "..").join("/")].find do |dir| + break File.foreach(File.join(__dir__, dir, "#{name.tr('-', '/')}.rb")) do |line| + /^\s*VERSION\s*=\s*"(.*)"/ =~ line and break $1 + end rescue nil +end + +Gem::Specification.new do |spec| + spec.name = name + spec.version = version + spec.authors = ["Keiju ISHITSUKA"] + spec.email = ["keiju@ruby-lang.org"] + + spec.summary = %q{Provides delegation of specified methods to a designated object.} + spec.description = %q{Provides delegation of specified methods to a designated object.} + spec.homepage = "https://github.com/ruby/forwardable" + spec.licenses = ["Ruby", "BSD-2-Clause"] + + spec.required_ruby_version = '>= 2.4.0' + spec.files = ["forwardable.gemspec", "lib/forwardable.rb", "lib/forwardable/impl.rb"] + spec.bindir = "exe" + spec.executables = [] + spec.require_paths = ["lib"] +end diff --git a/lib/forwardable/impl.rb b/lib/forwardable/impl.rb new file mode 100644 index 0000000000..58a9dfb69c --- /dev/null +++ b/lib/forwardable/impl.rb @@ -0,0 +1,16 @@ +# :stopdoc: +module Forwardable + def self._valid_method?(method) + catch {|tag| + eval("BEGIN{throw tag}; ().#{method}", binding, __FILE__, __LINE__) + } + rescue SyntaxError + false + else + true + end + + def self._compile_method(src, file, line) + eval(src, nil, file, line) + end +end |
