class Dotenv::Init::Assigner

Attributes

env[R]
lines[R]
string[R]

Public Class Methods

call(string, env) click to toggle source
# File lib/dotenv/init/assigner.rb, line 9
def call(string, env)
  new(string, env).call
end
new(string, env) click to toggle source
# File lib/dotenv/init/assigner.rb, line 14
def initialize(string, env)
  @string = string
  @lines = string.split(/[\n\r]/)
  @env = env
end

Public Instance Methods

call() click to toggle source
# File lib/dotenv/init/assigner.rb, line 20
def call
  parsed.each do |key, value|
    line_number, offset, default = value.values_at(:line_number, :offset, :default)

    replacement = lines[line_number]
    replacement[range(offset)] = env[key] || default

    lines[line_number] = replacement
  end

  lines.join("\n") + "\n"
end

Private Instance Methods

parsed() click to toggle source
# File lib/dotenv/init/assigner.rb, line 39
def parsed
  @parsed ||= CommentAwareParser.call(@string)
end
range(offset) click to toggle source
# File lib/dotenv/init/assigner.rb, line 35
def range(offset)
  offset[0]..(offset[1] - 1)
end