Allow construction variable expansion on _true_ and _false_ literals

This commit is contained in:
michael.metivier 2018-11-02 00:03:54 -04:00
parent 5cf77f1f58
commit f92dd62ebd
2 changed files with 12 additions and 2 deletions

View File

@ -86,12 +86,12 @@ module Rscons
# Replace "$!{var}" variable references in varref with the expanded
# variables' values, recursively.
#
# @param varref [nil, String, Array, Proc]
# @param varref [nil, String, Array, Proc, Symbol, TrueClass, FalseClass]
# Value containing references to variables.
# @param lambda_args [Array]
# Arguments to pass to any lambda variable values to be expanded.
#
# @return [nil, String, Array]
# @return [nil, String, Array, Symbol, TrueClass, FalseClass]
# Expanded value with "$!{var}" variable references replaced.
def expand_varref(varref, lambda_args)
if varref.is_a?(String)
@ -118,6 +118,10 @@ module Rscons
nil
elsif varref.is_a?(Symbol)
varref
elsif varref.is_a?(TrueClass)
varref
elsif varref.is_a?(FalseClass)
varref
else
raise "Unknown varref type: #{varref.class} (#{varref.inspect})"
end

View File

@ -159,6 +159,12 @@ module Rscons
it "calls a lambda with the given lambda arguments" do
expect(v.expand_varref("${lambda}", [v: "fez"])).to eq("fez--12")
end
it "returns true when passed true" do
expect(v.expand_varref(true, :lambda_args)).to eq(true)
end
it "returns false when passed false" do
expect(v.expand_varref(false, :lambda_args)).to eq(false)
end
it "raises an error when given an invalid argument" do
expect { v.expand_varref({a: :b}, :lambda_args) }.to raise_error /Unknown varref type: Hash/
end