class Dpl::Support::Gems::Parse
Public Instance Methods
gems()
click to toggle source
# File lib/dpl/support/gems.rb, line 29 def gems return [] unless sexp walk(*sexp).flatten.each_slice(3).to_a end
sexp()
click to toggle source
# File lib/dpl/support/gems.rb, line 67 def sexp Ripper.sexp(code) end
walk(key, *nodes)
click to toggle source
# File lib/dpl/support/gems.rb, line 34 def walk(key, *nodes) case key when :program nodes[0].map { |node| walk(*node) }.compact when :module walk(*nodes[1]) when :class walk(*nodes[2]) when :bodystmt nodes[0].map { |node| walk(*node) }.compact when :command walk(*nodes[1]) if nodes[0][1] == 'gem' when :args_add_block args = nodes[0].map { |node| walk(*node) } opts = args.last.is_a?(Hash) ? args.pop : {} name, version = *args [name, version, opts] when :bare_assoc_hash walk(*nodes[0][0]) when :assoc_new [nodes.map { |node| walk(*node) }].to_h when :@label nodes.first.sub(':', '').to_sym when :string_literal walk(*nodes[0]) when :string_content nodes[0][1] # when :void_stmt # else # raise key.to_s end end