module Dotenv::Substitutions::Variable

Substitute variables in a value.

HOST=example.com
URL="https://$HOST"

Constants

VARIABLE

Public Class Methods

call(value, env, is_load) click to toggle source
# File lib/dotenv/substitutions/variable.rb, line 21
def call(value, env, is_load)
  combined_env = if is_load
                   env.merge(ENV)
                 else
                   ENV.to_h.merge(env)
                 end
  value.gsub(VARIABLE) do |variable|
    match = $LAST_MATCH_INFO
    substitute(match, variable, combined_env)
  end
end

Private Class Methods

substitute(match, variable, env) click to toggle source
# File lib/dotenv/substitutions/variable.rb, line 35
def substitute(match, variable, env)
  if match[1] == '\\'
    variable[1..-1]
  elsif match[3]
    env.fetch(match[3], "")
  else
    variable
  end
end