Skip to content

Instantly share code, notes, and snippets.

@jiahut
Created November 13, 2020 16:24
Show Gist options
  • Save jiahut/3bd20a29650784619504103825a19924 to your computer and use it in GitHub Desktop.
Save jiahut/3bd20a29650784619504103825a19924 to your computer and use it in GitHub Desktop.
find duplication emacs-mode
#!/bin/ruby
# ls_1 = `ls -1`
# all = []
# ls_1.each do | mode |
# mode =~ /((\w|-)+?)-((\d+|\.)+)/
# end
# ls -1 | ruby -ne ' BEGIN { all = {} } ; if all[$1] = $3 if $_ =~ /((\w|-)+?)-((\d+|\.)+)/ ; END { all.each { | k, v | puts k + "> " + v } } '
# class EmacsMode
# def initialize(name, need)
# @name = name
# @need = need
# end
# end
EmacsMode = Struct.new(:name,:version, :need) do
def to_s()
"#{name}-#{version}"
end
end
modes = {}
all_emacs_mode = []
Dir.glob("*").select { File.directory?(_1) }.each do | mode |
if mode =~ /((\w|-)+?)-((\d+|\.)+)/
obj = EmacsMode.new($1, $3, false)
all_emacs_mode << obj
modes[$1] = [] if modes[$1].nil?
modes[$1] << obj
end
end
modes.select { _2.size == 1 }.each do | name, emacs_modes |
emacs_modes.each do | mode |
mode.need = true
end
end
modes.select { _1.size > 1 }.each do | name, emacs_modes |
emacs_modes.sort_by(&:version).reverse.first.need = true
end
puts all_emacs_mode.filter { _1.need == false }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment