È possibile ottenere l'ASCIUTTO che si sta cercando creando una funzione "al curry" (ovvero: un Proc che restituisce un Proc) in cui la funzione interna contiene la stringa di base con le variabili per ogni parte che differisce.
Correggimi se ho torto, ma nel tuo codice dietro il tuo link commentato, l'unica differenza tra le due stringhe è un singolo carattere alla fine. (Anche se non lo è, puoi ancora usare questa tecnica per raggiungere lo stesso obiettivo.) Puoi creare un Proc che restituisca un Proc contenente la tua stringa, quindi chiamare il Proc esterno due volte per i tuoi due caratteri finali:
rails_root = "whatever" # Not variant for the string
rails_env_prompt = "whatever" #not variant for the string
spec = Proc.new { |tail_char|
Proc.new {|obj, nest_level, *|
"#{rails_root} #{rails_env_prompt} #{obj}:#{nest_level}#{tail_char} "
}
}
Pry.config.prompt = [ spec.call(">"), spec.call("*") ]
Pry.config.prompt[0].call("My obj", "My Nest Level")
# result: "whatever whatever My obj:My Nest Level> "
fonte
2013-04-02 18:18:20
A cosa serve? Sembra una cosa molto bizzarra da voler fare. –
Sì ... sono conosciuto per i miei bisogni bizzarri. È per queste due linee essere più DRY https://github.com/pjg/dotfiles/blob/5ae2e0c5a80be8b31d729d0739eb667fa99e5212/.pryrc#L46 –
Penso che qualcosa del genere esista in Ruby Facets. –