ruby-changes:62671
From: Hiroshi <ko1@a...>
Date: Fri, 21 Aug 2020 20:19:02 +0900 (JST)
Subject: [ruby-changes:62671] 8c97883b73 (master): Promote erb to default gems
https://git.ruby-lang.org/ruby.git/commit/?id=8c97883b73 From 8c97883b738ad9749848d9a10fce87df0f9b1bf3 Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA <hsbt@r...> Date: Fri, 21 Aug 2020 20:18:44 +0900 Subject: Promote erb to default gems diff --git a/bin/erb b/bin/erb index 2435224..89d74fc 100755 --- a/bin/erb +++ b/bin/erb @@ -1,176 +1,27 @@ https://github.com/ruby/ruby/blob/trunk/bin/erb#L1 #!/usr/bin/env ruby -# Tiny eRuby --- ERB2 -# Copyright (c) 1999-2000,2002 Masatoshi SEKI -# You can redistribute it and/or modify it under the same terms as Ruby. - -require 'erb' - -class ERB - module Main - def ARGV.switch - return nil if self.empty? - arg = self.shift - return nil if arg == '--' - case arg - when /\A-(.)(.*)/ - if $1 == '-' - arg, @maybe_arg = arg.split(/=/, 2) - return arg - end - raise 'unknown switch "-"' if $2[0] == ?- and $1 != 'T' - if $2.size > 0 - self.unshift "-#{$2}" - @maybe_arg = $2 - else - @maybe_arg = nil - end - "-#{$1}" - when /\A(\w+)=/ - arg - else - self.unshift arg - nil - end - end - - def ARGV.req_arg - (@maybe_arg || self.shift || raise('missing argument')).tap { - @maybe_arg = nil - } - end - - def trim_mode_opt(trim_mode, disable_percent) - return trim_mode if disable_percent - case trim_mode - when 0 - return '%' - when 1 - return '%>' - when 2 - return '%<>' - when '-' - return '%-' - end - end - module_function :trim_mode_opt - - def run(factory=ERB) - trim_mode = 0 - disable_percent = false - variables = {} - begin - while switch = ARGV.switch - case switch - when '-x' # ruby source - output = true - when '-n' # line number - number = true - when '-v' # verbose - $VERBOSE = true - when '--version' # version - STDERR.puts factory.version - exit - when '-d', '--debug' # debug - $DEBUG = true - when '-r' # require - require ARGV.req_arg - when '-S' # security level - warn 'warning: -S option of erb command is deprecated. Please do not use this.' - arg = ARGV.req_arg - raise "invalid safe_level #{arg.dump}" unless arg =~ /\A[0-1]\z/ - safe_level = arg.to_i - when '-T' # trim mode - arg = ARGV.req_arg - if arg == '-' - trim_mode = arg - next - end - raise "invalid trim mode #{arg.dump}" unless arg =~ /\A[0-2]\z/ - trim_mode = arg.to_i - when '-E', '--encoding' - arg = ARGV.req_arg - set_encoding(*arg.split(/:/, 2)) - when '-U' - set_encoding(Encoding::UTF_8, Encoding::UTF_8) - when '-P' - disable_percent = true - when '--help' - raise "print this help" - when /\A-/ - raise "unknown switch #{switch.dump}" - else - var, val = *switch.split('=', 2) - (variables ||= {})[var] = val - end - end - rescue # usage - STDERR.puts $!.to_s - STDERR.puts File.basename($0) + - " [switches] [var=value...] [inputfile]" - STDERR.puts <<EOU - -x print ruby script - -n print ruby script with line number - -v enable verbose mode - -d set $DEBUG to true - -r library load a library - -E ex[:in] set default external/internal encodings - -U set default encoding to UTF-8 - -T trim_mode specify trim_mode (0..2, -) - -P disable ruby code evaluation for lines beginning with % - var=value set variable -EOU - exit 1 - end - - $<.set_encoding(Encoding::UTF_8, nil) - src = $<.read - filename = $FILENAME - exit 2 unless src - trim = trim_mode_opt(trim_mode, disable_percent) - if safe_level.nil? - erb = factory.new(src, trim_mode: trim) - else - # [deprecated] This will be removed at Ruby 2.7. - erb = factory.new(src, safe_level, trim_mode: trim) - end - erb.filename = filename - if output - if number - erb.src.each_line.with_index do |line, l| - puts "%3d %s"%[l+1, line] - end - else - puts erb.src - end - else - bind = TOPLEVEL_BINDING - if variables - enc = erb.encoding - for var, val in variables do - val = val.encode(enc) if val - bind.local_variable_set(var, val) - end - end - erb.run(bind) - end - end - module_function :run - - def set_encoding(extern, intern = nil) - verbose, $VERBOSE = $VERBOSE, nil - Encoding.default_external = extern unless extern.nil? || extern == "" - Encoding.default_internal = intern unless intern.nil? || intern == "" - [$stdin, $stdout, $stderr].each do |io| - io.set_encoding(extern, intern) - end - ensure - $VERBOSE = verbose - end - module_function :set_encoding - class << self; private :set_encoding; end +# +# This file was generated by RubyGems. +# +# The application 'erb' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +require 'rubygems' + +version = ">= 0.a" + +str = ARGV.first +if str + str = str.b[/\A_(.*)_\z/, 1] + if str and Gem::Version.correct?(str) + version = str + ARGV.shift end end -if __FILE__ == $0 - ERB::Main.run +if Gem.respond_to?(:activate_bin_path) +load Gem.activate_bin_path('erb', 'erb', version) +else +gem "erb", version +load Gem.bin_path("erb", "erb", version) end diff --git a/doc/maintainers.rdoc b/doc/maintainers.rdoc index c0d47b5..b5934b7 100644 --- a/doc/maintainers.rdoc +++ b/doc/maintainers.rdoc @@ -46,8 +46,6 @@ Zachary Scott (zzak) https://github.com/ruby/ruby/blob/trunk/doc/maintainers.rdoc#L46 Masatoshi SEKI (seki) [lib/debug.rb] _unmaintained_ -[lib/erb.rb] - Masatoshi SEKI (seki), Takashi Kokubun (k0kubun) [lib/mkmf.rb] _unmaintained_ [lib/open-uri.rb] @@ -138,6 +136,9 @@ Zachary Scott (zzak) https://github.com/ruby/ruby/blob/trunk/doc/maintainers.rdoc#L136 [lib/did_you_mean.rb] Yuki Nishijima (yuki24) https://github.com/ruby/did_you_mean +[lib/erb.rb] + Masatoshi SEKI (seki), Takashi Kokubun (k0kubun) + https://github.com/ruby/erb [lib/fileutils.rb] _unmaintained_ https://github.com/ruby/fileutils diff --git a/doc/standard_library.rdoc b/doc/standard_library.rdoc index 2ec088c..2f65c0b 100644 --- a/doc/standard_library.rdoc +++ b/doc/standard_library.rdoc @@ -12,7 +12,6 @@ Abbrev:: Calculates a set of unique abbreviations for a given set of strings https://github.com/ruby/ruby/blob/trunk/doc/standard_library.rdoc#L12 Base64:: Support for encoding and decoding binary data using a Base64 representation DEBUGGER__:: Debugging functionality for Ruby DRb:: Distributed object system for Ruby -ERB:: An easy to use but powerful templating system for Ruby MakeMakefile:: Module used to generate a Makefile for C extensions OpenURI:: An easy-to-use wrapper for Net::HTTP, Net::HTTPS and Net::FTP PP:: Provides a PrettyPrinter for Ruby objects @@ -52,6 +51,7 @@ CSV:: Provides an interface to read and write CSV files and data https://github.com/ruby/ruby/blob/trunk/doc/standard_library.rdoc#L51 Delegator:: Provides three abilities to delegate method calls to an object DidYouMean:: "Did you mean?" experience in Ruby English.rb:: Require 'English.rb' to reference global variables with less cryptic names +ERB:: An easy to use but powerful templating system for Ruby FileUtils:: Several file utility methods for copying, moving, removing, etc Find:: This module supports top-down traversal of a set of file paths Forwardable:: Provides delegation of specified methods to a designated object diff --git a/lib/erb.gemspec b/lib/erb.gemspec new file mode 100644 index 0000000..f58f61b --- /dev/null +++ b/lib/erb.gemspec @@ -0,0 +1,22 @@ https://github.com/ruby/ruby/blob/trunk/lib/erb.gemspec#L1 +Gem::Specification.new do |spec| + spec.name = "erb" + spec.version = "2.2.0" + spec.authors = ["Masatoshi SEKI"] + spec.email = ["seki@r..."] + + spec.summary = %q{An easy to use but powerful templating system for Ruby.} + spec.description = %q{An easy to use but powerful templating system for Ruby.} + spec.homepage = "https://github.com/ruby/erb" + spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0") + spec.licenses = ["Ruby", "BSD-2-Clause"] + + spec.metadata["homepage_uri"] = spec.homepage + spec.metadata["source_code_uri"] = spec.homepage + + spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do + `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } + end + spec.bindir = "exe" + spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } + spec.require_paths = ["lib"] +end diff --git a/libexec/erb b/libexec/erb new file mode 100755 index 0000000..2435224 --- /dev/null +++ b/libexec/erb @@ -0,0 +1,176 @@ https://github.com/ruby/ruby/blob/trunk/libexec/erb#L1 +#!/usr/bin/env ruby +# Tiny eRuby --- ERB2 +# Copyright (c) 1999-2000,2002 Masatoshi SEKI +# You can redistribute it and/or modify it under the same terms as Ruby. + +require 'erb' + +class ERB + module Main + def ARGV.switch + return nil if self.empty? + arg = self.shift + return nil if arg == '--' + case arg + when /\A-(.)(.*)/ + if $1 == '-' + (... truncated) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/