diff --git a/lib/linguist/generated.rb b/lib/linguist/generated.rb index d53f501b..edd3b37a 100644 --- a/lib/linguist/generated.rb +++ b/lib/linguist/generated.rb @@ -70,6 +70,7 @@ module Linguist compiled_cython_file? || generated_go? || generated_protocol_buffer? || + generated_javascript_protocol_buffer? || generated_apache_thrift? || generated_jni_header? || vcr_cassette? || @@ -277,6 +278,17 @@ module Linguist return lines[0].include?("Generated by the protocol buffer compiler. DO NOT EDIT!") end + # Internal: Is the blob a Javascript source file generated by the + # Protocol Buffer compiler? + # + # Returns true of false. + def generated_javascript_protocol_buffer? + return false unless extname == ".js" + return false unless lines.count > 6 + + return lines[5].include?("GENERATED CODE -- DO NOT EDIT!") + end + APACHE_THRIFT_EXTENSIONS = ['.rb', '.py', '.go', '.js', '.m', '.java', '.h', '.cc', '.cpp', '.php'] # Internal: Is the blob generated by Apache Thrift compiler? @@ -435,7 +447,7 @@ module Linguist return false unless lines.count > 1 return lines[0].start_with?("// This is a generated file. Not intended for manual editing.") end - + # Internal: Is this a roxygen2-generated file? # # A roxygen2-generated file typically contain: @@ -449,7 +461,7 @@ module Linguist return lines[0].include?("% Generated by roxygen2: do not edit by hand") end - + # Internal: Is this a Jison-generated file? # # Jison-generated parsers typically contain: @@ -465,7 +477,7 @@ module Linguist return false unless extname == '.js' return false unless lines.count > 1 return lines[0].start_with?("/* parser generated by jison ") || - lines[0].start_with?("/* generated by jison-lex ") + lines[0].start_with?("/* generated by jison-lex ") end end end diff --git a/samples/JavaScript/proto.js b/samples/JavaScript/proto.js new file mode 100644 index 00000000..ff7c0669 --- /dev/null +++ b/samples/JavaScript/proto.js @@ -0,0 +1,31 @@ +/** + * @fileoverview + * @enhanceable + * @public + */ +// GENERATED CODE -- DO NOT EDIT! + +goog.provide('proto.google.protobuf.Timestamp'); + +goog.require('jspb.Message'); + +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.google.protobuf.Timestamp = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.google.protobuf.Timestamp, jspb.Message); +if (goog.DEBUG && !COMPILED) { + proto.google.protobuf.Timestamp.displayName = 'proto.google.protobuf.Timestamp'; +} + + +// Remainder elided \ No newline at end of file diff --git a/test/test_blob.rb b/test/test_blob.rb index b441fe41..1f640916 100644 --- a/test/test_blob.rb +++ b/test/test_blob.rb @@ -197,6 +197,7 @@ class TestBlob < Minitest::Test assert sample_blob_memory("Python/protocol_buffer_pb2.py").generated? assert sample_blob_memory("Go/api.pb.go").generated? assert sample_blob_memory("Go/embedded.go").generated? + assert sample_blob_memory("JavaScript/proto.js").generated? # Apache Thrift generated code assert sample_blob_memory("Python/gen-py-linguist-thrift.py").generated?