mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
erb: set variables from the command line
* bin/erb (ARGV.switch, ERB::Main#run): allow variables to be set from the command line. [ruby-core:65772] [Feature #10395] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48786 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e82f4195d4
commit
9e52416cd3
4 changed files with 38 additions and 5 deletions
21
bin/erb
21
bin/erb
|
@ -25,6 +25,8 @@ class ERB
|
|||
@maybe_arg = nil
|
||||
end
|
||||
"-#{$1}"
|
||||
when /\A(\w+)=/
|
||||
arg
|
||||
else
|
||||
self.unshift arg
|
||||
nil
|
||||
|
@ -55,6 +57,7 @@ class ERB
|
|||
def run(factory=ERB)
|
||||
trim_mode = 0
|
||||
disable_percent = false
|
||||
variables = {}
|
||||
begin
|
||||
while switch = ARGV.switch
|
||||
case switch
|
||||
|
@ -92,14 +95,17 @@ class ERB
|
|||
disable_percent = true
|
||||
when '--help'
|
||||
raise "print this help"
|
||||
else
|
||||
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] [inputfile]"
|
||||
" [switches] [var=value...] [inputfile]"
|
||||
STDERR.puts <<EOU
|
||||
-x print ruby script
|
||||
-n print ruby script with line number
|
||||
|
@ -111,6 +117,7 @@ class ERB
|
|||
-U set default encoding to UTF-8.
|
||||
-T trim_mode specify trim_mode (0..2, -)
|
||||
-P ignore lines which start with "%"
|
||||
var=value set variable
|
||||
EOU
|
||||
exit 1
|
||||
end
|
||||
|
@ -131,7 +138,15 @@ EOU
|
|||
puts erb.src
|
||||
end
|
||||
else
|
||||
erb.run(TOPLEVEL_BINDING.taint)
|
||||
bind = TOPLEVEL_BINDING.taint
|
||||
if variables
|
||||
enc = erb.encoding
|
||||
variables.each do |var, val|
|
||||
val = val.encode(enc) if val
|
||||
bind.local_variable_set(var, val)
|
||||
end
|
||||
end
|
||||
erb.run(bind)
|
||||
end
|
||||
end
|
||||
module_function :run
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue