Changeset 32b8775b009de9d239164d3cc6d90cb12be2a4c5
- Timestamp:
- 07/08/2008 06:29:37 PM (1 month ago)
- git-parent:
- Files:
-
- bin/ohcount (modified) (4 diffs)
- ext/ohcount_native/ruby_binding.c (modified) (1 diff)
- lib/licenses/license.rb (added)
- lib/licenses/license_map.rb (added)
- lib/licenses/license_sniffer.rb (added)
- lib/ohcount.rb (modified) (1 diff)
- lib/ohcount/diff.rb (modified) (1 diff)
- lib/ohcount/parser.rb (modified) (3 diffs)
- test/expected_licenses/academic_t1 (added)
- test/expected_licenses/adaptive_t1 (added)
- test/expected_licenses/apache_2_t1 (added)
- test/expected_licenses/apache_2_t2 (added)
- test/expected_licenses/apache_ish_t1 (added)
- test/expected_licenses/apache_ish_t2 (added)
- test/expected_licenses/apache_t1 (added)
- test/expected_licenses/apache_t2 (added)
- test/expected_licenses/apache_t3 (added)
- test/expected_licenses/apple_open_source_t1 (added)
- test/expected_licenses/artistic_t1 (added)
- test/expected_licenses/attribution_assurance_t1 (added)
- test/expected_licenses/bsd_2clause_ish_t1 (added)
- test/expected_licenses/bsd_ish_t1 (added)
- test/expected_licenses/bsd_ish_t2 (added)
- test/expected_licenses/bsd_ish_t3 (added)
- test/expected_licenses/bsd_t1 (added)
- test/expected_licenses/common_development_and_distribution_t1 (added)
- test/expected_licenses/common_public_t1 (added)
- test/expected_licenses/computer_associates_trusted_t1 (added)
- test/expected_licenses/cua_office_t1 (added)
- test/expected_licenses/eclipse_t1 (added)
- test/expected_licenses/educational_t1 (added)
- test/expected_licenses/eiffel_2_t1 (added)
- test/expected_licenses/eiffel_t1 (added)
- test/expected_licenses/entessa_t1 (added)
- test/expected_licenses/eu_datagrid_t1 (added)
- test/expected_licenses/fair_t1 (added)
- test/expected_licenses/frameworx_t1 (added)
- test/expected_licenses/gpl3_or_later_t1 (added)
- test/expected_licenses/gpl3_or_later_t2 (added)
- test/expected_licenses/gpl3_t1 (added)
- test/expected_licenses/gpl_t1 (added)
- test/expected_licenses/gpl_t2 (added)
- test/expected_licenses/gpl_t3 (added)
- test/expected_licenses/gpl_t4 (added)
- test/expected_licenses/historical_t1 (added)
- test/expected_licenses/ibm_public_t1 (added)
- test/expected_licenses/intel_open_source_t1 (added)
- test/expected_licenses/jabber_open_source_t1 (added)
- test/expected_licenses/lgpl_t1 (added)
- test/expected_licenses/lgpl_t2 (added)
- test/expected_licenses/lgpl_t3 (added)
- test/expected_licenses/lgpl_t4 (added)
- test/expected_licenses/lgpl_t5 (added)
- test/expected_licenses/lucent_plan9_t1 (added)
- test/expected_licenses/lucent_public_t1 (added)
- test/expected_licenses/mit_t1 (added)
- test/expected_licenses/mit_t2 (added)
- test/expected_licenses/mitre_t1 (added)
- test/expected_licenses/motosoto_t1 (added)
- test/expected_licenses/mozilla_public_1_1_t1 (added)
- test/expected_licenses/mozilla_public_1_t1 (added)
- test/expected_licenses/nasa_open_t1 (added)
- test/expected_licenses/naumen_t1 (added)
- test/expected_licenses/nethack_t1 (added)
- test/expected_licenses/nokia_open_source_t1 (added)
- test/expected_licenses/oclc_research_t1 (added)
- test/expected_licenses/open_group_test_t1 (added)
- test/expected_licenses/open_software_t1 (added)
- test/expected_licenses/php_license_t1 (added)
- test/expected_licenses/python_license_t1 (added)
- test/expected_licenses/python_software_foundation_t1 (added)
- test/expected_licenses/qt_public_t1 (added)
- test/expected_licenses/realnetworks_public_source_t1 (added)
- test/expected_licenses/reciprocal_public_t1 (added)
- test/expected_licenses/ricoh_source_t1 (added)
- test/expected_licenses/sleepycat_t1 (added)
- test/expected_licenses/sugarcrm_1_1_3_t1 (added)
- test/expected_licenses/sun_industry_standards_t1 (added)
- test/expected_licenses/sun_public_t1 (added)
- test/expected_licenses/sybase_open_watcom_t1 (added)
- test/expected_licenses/u_of_i_ncsa_t1 (added)
- test/expected_licenses/vovida_software_t1 (added)
- test/expected_licenses/w3c_t1 (added)
- test/expected_licenses/wx_windows_t1 (added)
- test/expected_licenses/x_net_t1 (added)
- test/expected_licenses/zlib_libpng_t1 (added)
- test/expected_licenses/zope_t1 (added)
- test/src_licenses/academic_t1.c (added)
- test/src_licenses/adaptive_t1.rb (added)
- test/src_licenses/apache_2_t1.cpp (added)
- test/src_licenses/apache_2_t2.rb (added)
- test/src_licenses/apache_ish_t1.sql (added)
- test/src_licenses/apache_ish_t2.sql (added)
- test/src_licenses/apache_t1.c (added)
- test/src_licenses/apache_t2.rb (added)
- test/src_licenses/apache_t3.rb (added)
- test/src_licenses/apple_open_source_t1.rb (added)
- test/src_licenses/artistic_t1.d (added)
- test/src_licenses/attribution_assurance_t1.c (added)
- test/src_licenses/bsd_2clause_ish_t1.c (added)
- test/src_licenses/bsd_ish_t1.c (added)
- test/src_licenses/bsd_ish_t2.c (added)
- test/src_licenses/bsd_ish_t3.c (added)
- test/src_licenses/bsd_t1.rb (added)
- test/src_licenses/common_development_and_distribution_t1.c (added)
- test/src_licenses/common_public_t1.c (added)
- test/src_licenses/computer_associates_trusted_t1.c (added)
- test/src_licenses/cua_office_t1.c (added)
- test/src_licenses/eclipse_t1.java (added)
- test/src_licenses/educational_t1.c (added)
- test/src_licenses/eiffel_2_t1.c (added)
- test/src_licenses/eiffel_t1.c (added)
- test/src_licenses/entessa_t1.c (added)
- test/src_licenses/eu_datagrid_t1.c (added)
- test/src_licenses/fair_t1.c (added)
- test/src_licenses/frameworx_t1.c (added)
- test/src_licenses/gpl3_or_later_t1.cs (added)
- test/src_licenses/gpl3_or_later_t2.c (added)
- test/src_licenses/gpl3_t1.c (added)
- test/src_licenses/gpl_t1.c (added)
- test/src_licenses/gpl_t2.c (added)
- test/src_licenses/gpl_t3.c (added)
- test/src_licenses/gpl_t4.c (added)
- test/src_licenses/historical_t1.c (added)
- test/src_licenses/ibm_public_t1.c (added)
- test/src_licenses/intel_open_source_t1.c (added)
- test/src_licenses/jabber_open_source_t1.c (added)
- test/src_licenses/lgpl_t1.c (added)
- test/src_licenses/lgpl_t2.c (added)
- test/src_licenses/lgpl_t3.c (added)
- test/src_licenses/lgpl_t4.c (added)
- test/src_licenses/lgpl_t5.c (added)
- test/src_licenses/lucent_plan9_t1.c (added)
- test/src_licenses/lucent_public_t1.c (added)
- test/src_licenses/mit_t1.c (added)
- test/src_licenses/mit_t2.c (added)
- test/src_licenses/mitre_t1.c (added)
- test/src_licenses/motosoto_t1.c (added)
- test/src_licenses/mozilla_public_1_1_t1.c (added)
- test/src_licenses/mozilla_public_1_t1.c (added)
- test/src_licenses/nasa_open_t1.c (added)
- test/src_licenses/naumen_t1.c (added)
- test/src_licenses/nethack_t1.c (added)
- test/src_licenses/nokia_open_source_t1.c (added)
- test/src_licenses/oclc_research_t1.c (added)
- test/src_licenses/open_group_test_t1.c (added)
- test/src_licenses/open_software_t1.c (added)
- test/src_licenses/php_license_t1.php (added)
- test/src_licenses/python_license_t1.py (added)
- test/src_licenses/python_software_foundation_t1.py (added)
- test/src_licenses/qt_public_t1.c (added)
- test/src_licenses/realnetworks_public_source_t1.c (added)
- test/src_licenses/reciprocal_public_t1.c (added)
- test/src_licenses/ricoh_source_t1.c (added)
- test/src_licenses/sleepycat_t1.c (added)
- test/src_licenses/sugarcrm_1_1_3_t1.c (added)
- test/src_licenses/sun_industry_standards_t1.c (added)
- test/src_licenses/sun_public_t1.c (added)
- test/src_licenses/sybase_open_watcom_t1.c (added)
- test/src_licenses/u_of_i_ncsa_t1.c (added)
- test/src_licenses/vovida_software_t1.c (added)
- test/src_licenses/w3c_t1.c (added)
- test/src_licenses/wx_windows_t1.c (added)
- test/src_licenses/x_net_t1.c (added)
- test/src_licenses/zlib_libpng_t1.c (added)
- test/src_licenses/zope_t1.c (added)
- test/unit/license_sniffer_test.rb (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
bin/ohcount
r1fabcc0 r32b8775 90 90 end 91 91 92 # Licenses 93 def licenses 94 STDOUT.write "Examining #{files.size} file(s)" 95 96 puts 97 puts "File License Info" 98 puts "-----------------" 99 100 files.each do |file| 101 sfc = Ohcount::SimpleFileContext.new(file, files) 102 polyglot = Ohcount::Detector.detect(sfc) || next 103 comments = '' 104 Ohcount::parse(sfc.contents, polyglot) do |language, semantic, line| 105 comments << line if semantic == :comment 106 end 107 licenses = LicenseSniffer.sniff(comments) 108 if licenses.any? 109 license_names = licenses.collect { |l| LicenseSniffer::LicenseMap.instance.map[l].nice_name }.join(",") 110 puts "#{license_names} found in #{file}" 111 end 112 end 113 end 114 92 115 def raw_entities 93 116 files.each do |file| … … 134 157 Prints the number of entities found for each language parsed. 135 158 136 -re137 138 Prints raw entity information to the screen (mainly for debugging).139 140 159 -h, --help Display this message 141 160 … … 145 164 emit a report of the lines of code, comments, and blanks in each 146 165 language per file. 166 167 -l, --license 168 169 Displays detected licensing information contained in each source 170 code file. 171 172 -re 173 174 Prints raw entity information to the screen (mainly for debugging). 147 175 148 176 -s, --summary Count lines of code (default) … … 288 316 when '-i', '--individual' 289 317 self.subcommand = :individual 318 when '-l', '--licenses' 319 self.subcommand = :licenses 290 320 when '-e', '--entities' 291 321 self.subcommand = :entities ext/ohcount_native/ruby_binding.c
radfc63c r32b8775 123 123 static VALUE _ohcount_parse(VALUE self, VALUE buffer, VALUE polyglot_name_value) { 124 124 ParseResult pr; 125 126 if (NIL_P(polyglot_name_value)) { 127 rb_raise(rb_eStandardError, "Polyglot name required."); 128 } 125 129 126 130 char *polyglot_name = RSTRING(polyglot_name_value)->ptr; lib/ohcount.rb
rb4f9575 r32b8775 4 4 require 'rbconfig' 5 5 6 OHCOUNT_ROOT = File.dirname(__FILE__) + "/.." 7 6 8 begin 7 9 require 'ohcount_native' 8 10 rescue LoadError 9 require "#{Config::CONFIG['arch']}/ohcount_native"11 require OHCOUNT_ROOT + "/lib/#{Config::CONFIG['arch']}/ohcount_native" 10 12 end 11 13 12 require "ohcount/detector" 13 require "ohcount/parser" 14 require "ohcount/language_breakdown" 15 require "ohcount/sloc_info" 16 require "ohcount/scratch_dir" 17 require "ohcount/diff" 18 require "ohcount/simple_file_context" 14 require OHCOUNT_ROOT + "/lib/ohcount/detector" 15 require OHCOUNT_ROOT + "/lib/ohcount/parser" 16 require OHCOUNT_ROOT + "/lib/ohcount/language_breakdown" 17 require OHCOUNT_ROOT + "/lib/ohcount/sloc_info" 18 require OHCOUNT_ROOT + "/lib/ohcount/scratch_dir" 19 require OHCOUNT_ROOT + "/lib/ohcount/diff" 20 require OHCOUNT_ROOT + "/lib/ohcount/simple_file_context" 21 22 require OHCOUNT_ROOT + "/lib/licenses/license_sniffer" lib/ohcount/diff.rb
r101d05d r32b8775 47 47 langs = {} 48 48 Dir.foreach(dir) do |l| 49 next unless File.directory?(dir + "/" + l) 49 50 next if [".", ".."].include?(l) 50 51 langs[l] ||= {} lib/ohcount/parser.rb
rb4f9575 r32b8775 1 require 'yaml' 2 1 3 class Ohcount::Parser 2 4 # Parses a file, and store the results in files on disk. … … 12 14 # file contains a count of the number of blank lines in the file. 13 15 def self.parse_to_dir(args) 14 arg_keys = [16 required_arg_keys = [ 15 17 :dir, # directory to parse to 16 18 :buffer, # buffer contents of the what we're parsing 17 19 :polyglot # the polyglot name of what we're parsing 18 20 ] 19 raise ArgumentError.new('Missing required args') unless ( arg_keys - args.keys).empty?21 raise ArgumentError.new('Missing required args') unless (required_arg_keys - args.keys).empty? 20 22 21 23 polyglot = args[:polyglot].to_s 22 24 dir = args[:dir] 23 25 buffer = args[:buffer].to_s 26 find_licenses = args[:find_licenses].to_s 24 27 25 language_breakdowns = Ohcount::parse(buffer, polyglot) 26 language_breakdowns.each do |lb|28 licenses = [] 29 Ohcount::parse(buffer, polyglot).each do |lb| 27 30 lb_dest_dir = dir + "/" + lb.name 28 31 Dir.mkdir(lb_dest_dir) … … 40 43 io.write "\n" unless (comment.size == 0 || comment[-1,1] == "\n") 41 44 end 45 46 # find licenses if required 47 licenses += LicenseSniffer.sniff(lb.comment) if find_licenses 42 48 end 43 49 File.open(lb_dest_dir + "/blanks", "w") do |io| 44 50 io.write lb.blanks.to_s 45 51 end 46 end 47 end 52 end 53 54 if licenses.any? 55 licenses.uniq! 56 File.open(dir + "/licenses.yaml", "w") do |io| 57 io.write licenses.to_yaml 58 end 59 end 60 61 end 48 62 end