Sha256: 4d414002b28c9f59a8cf8e027ad0e43b0f8ec2ecdbea508704b85dab7d176b40
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
require "English" module Dotenv module Substitutions # Substitute variables in a value. # # HOST=example.com # URL="https://$HOST" # module Variable class << self VARIABLE = / (\\)? # is it escaped with a backslash? (\$) # literal $ (?!\() # shouldnt be followed by paranthesis \{? # allow brace wrapping ([A-Z0-9_]+)? # optional alpha nums \}? # closing brace /xi def call(value, env, is_load) combined_env = is_load ? env.merge(ENV) : ENV.to_h.merge(env) value.gsub(VARIABLE) do |variable| match = $LAST_MATCH_INFO substitute(match, variable, combined_env) end end private def substitute(match, variable, env) if match[1] == "\\" variable[1..] elsif match[3] env.fetch(match[3], "") else variable end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dotenv-2.8.0 | lib/dotenv/substitutions/variable.rb |