Sha256: c3f5d3dc495dee0c4a6ad410a31c610e125c9462c9b9f3980953e1d1a0b27625
Contents?: true
Size: 1.17 KB
Versions: 11
Compression:
Stored size: 1.17 KB
Contents
#!/usr/bin/env ruby # # Copyright (c) 2007-2017 Minero Aoki, Kenshi Muto # 1999-2007 Minero Aoki # # This program is free software. # You can distribute or modify this program under the terms of # the GNU LGPL, Lesser General Public License version 2.1. # For details of the GNU LGPL, see the file "COPYING". # $LOAD_PATH.unshift(File.realpath('../lib', __dir__)) PREDEF_FILE = 'PREDEF'.freeze def main @provided = parse_predefined @unprovided = {} ARGF.each do |line| case line when /\A\#@require\((.*)\)/ kw = $1 unless @provided.key?(kw) puts "#{location}: not provided: #{kw}" @unprovided[kw] = location end when /\A\#@provide\((.*)\)/ provide($1) else line.scan(/@<kw>\{(.*?)[,}]/) { provide($1) } end end end def provide(kw) @provided[kw] ||= location if @unprovided[kw] reqpos = @unprovided.delete(kw) puts "#{location}: provided now: #{kw} (#{reqpos})" end end def parse_predefined result = {} File.foreach(PREDEF_FILE) { |line| result[line.strip] = '(predefined)' } result rescue Errno::ENOENT return {} end def location "#{ARGF.filename}:#{ARGF.file.lineno}" end main
Version data entries
11 entries across 11 versions & 1 rubygems