class DR::Formatter
Attributes
meta[RW]
opts[RW]
Public Class Methods
new(meta={}, **opts)
click to toggle source
# File lib/dr/formatter/simple_formatter.rb, line 45 def initialize(meta={}, **opts) @meta=meta @opts=opts end
Public Instance Methods
expand(msg, **opts) { |msg, **opts| ... }
click to toggle source
# File lib/dr/formatter/simple_formatter.rb, line 95 def expand(msg, **opts) recursive=opts[:recursive] #if recursive is :first, then we only expand once ore if recursive.is_a?(Integer) opts[:recursive]=recursive-1 recursive=false if recursive <= 0 end case msg when Hash Array(opts[:merge]).each do |key| if msg.key?(key) msg=msg.merge(msg[key]) msg.delete(key) end end # we localize after merging potential out types localize(msg, **opts) do |lmsg| # localization do not count as a recursive step return expand(lmsg, **opts) end if recursive msg_exp={} msg.each do |k,v| msg_exp[k]=expand(v,**opts) end #expand may have introduced nil values clean_nil=opts.fetch(:clean_nil,true) msg_exp.delete_if {|_k,v| v==nil} if clean_nil msg_exp else msg end when Symbol opts[:symbol]||=:never msg=metainfo_from_symbol(msg,**opts) recursive ? expand(msg, **opts) : msg when Array msg=msg.map {|i| expand(i,**opts)} if recursive opts[:join] ? join(msg, **opts) : msg when String (nmsg=try_get_symbol(msg,**opts)) and return nmsg if block_given? yield(msg, **opts) else msg end when nil nil else if block_given? yield(msg, **opts) else #expand(msg.to_s,**opts) msg end end end
join(*args, **opts)
click to toggle source
# File lib/dr/formatter/simple_formatter.rb, line 54 def join(*args, **opts) opts=@opts.merge(opts) args=Array(args).map {|i| try_expand_symbol(i,**opts)} self.class.localize(*args, **opts) end
localize(msg, **opts)
click to toggle source
# File lib/dr/formatter/simple_formatter.rb, line 50 def localize(msg, **opts) self.class.localize(msg, **@opts.merge(opts)) end
Private Instance Methods
get_symbol(sym)
click to toggle source
# File lib/dr/formatter/simple_formatter.rb, line 78 def get_symbol(sym) case sym when Symbol return sym when String return sym[1...sym.length].to_sym if sym[0] == ':' end nil end
metainfo_from_symbol(sym, meta: @meta, **opts) { |content, **opts| ... }
click to toggle source
# File lib/dr/formatter/simple_formatter.rb, line 60 def metainfo_from_symbol(sym, meta: @meta, **opts) return sym if opts[:meta_symbol]==:never content=case meta when Hash warn "#{sym} not found in #{meta}" unless meta.key?(sym) meta[sym] when Proc meta.call(sym, **opts) else sym end if block_given? yield content, **opts else content end end
try_get_symbol(sym,**opts)
click to toggle source
# File lib/dr/formatter/simple_formatter.rb, line 87 def try_get_symbol(sym,**opts) if (key=get_symbol(sym)) expand_symbol(key,**opts) else sym end end