Add support for Thrift-generated PHP code. (#3329)

This commit is contained in:
Kyle Smith
2016-11-29 10:49:41 -05:00
committed by Brandon Black
parent 1d2ec4dbc3
commit d46a529b6a
3 changed files with 96 additions and 4 deletions

View File

@@ -275,16 +275,14 @@ module Linguist
return lines[0].include?("Generated by the protocol buffer compiler. DO NOT EDIT!") return lines[0].include?("Generated by the protocol buffer compiler. DO NOT EDIT!")
end end
APACHE_THRIFT_EXTENSIONS = ['.rb', '.py', '.go', '.js', '.m', '.java', '.h', '.cc', '.cpp'] APACHE_THRIFT_EXTENSIONS = ['.rb', '.py', '.go', '.js', '.m', '.java', '.h', '.cc', '.cpp', '.php']
# Internal: Is the blob generated by Apache Thrift compiler? # Internal: Is the blob generated by Apache Thrift compiler?
# #
# Returns true or false # Returns true or false
def generated_apache_thrift? def generated_apache_thrift?
return false unless APACHE_THRIFT_EXTENSIONS.include?(extname) return false unless APACHE_THRIFT_EXTENSIONS.include?(extname)
return false unless lines.count > 1 return lines.first(6).any? { |l| l.include?("Autogenerated by Thrift Compiler") }
return lines[0].include?("Autogenerated by Thrift Compiler") || lines[1].include?("Autogenerated by Thrift Compiler")
end end
# Internal: Is the blob a C/C++ header generated by the Java JNI tool javah? # Internal: Is the blob a C/C++ header generated by the Java JNI tool javah?

View File

@@ -0,0 +1,93 @@
<?php
namespace github\com;
/**
* Autogenerated by Thrift Compiler (0.9.3)
*
* DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
* @generated
*/
use Thrift\Base\TBase;
use Thrift\Type\TType;
use Thrift\Type\TMessageType;
use Thrift\Exception\TException;
use Thrift\Exception\TProtocolException;
use Thrift\Protocol\TProtocol;
use Thrift\Protocol\TBinaryProtocolAccelerated;
use Thrift\Exception\TApplicationException;
class PullRequest {
static $_TSPEC;
/**
* @var string
*/
public $title = null;
public function __construct($vals=null) {
if (!isset(self::$_TSPEC)) {
self::$_TSPEC = array(
1 => array(
'var' => 'title',
'type' => TType::STRING,
),
);
}
if (is_array($vals)) {
if (isset($vals['title'])) {
$this->title = $vals['title'];
}
}
}
public function getName() {
return 'PullRequest';
}
public function read($input)
{
$xfer = 0;
$fname = null;
$ftype = 0;
$fid = 0;
$xfer += $input->readStructBegin($fname);
while (true)
{
$xfer += $input->readFieldBegin($fname, $ftype, $fid);
if ($ftype == TType::STOP) {
break;
}
switch ($fid)
{
case 1:
if ($ftype == TType::STRING) {
$xfer += $input->readString($this->title);
} else {
$xfer += $input->skip($ftype);
}
break;
default:
$xfer += $input->skip($ftype);
break;
}
$xfer += $input->readFieldEnd();
}
$xfer += $input->readStructEnd();
return $xfer;
}
public function write($output) {
$xfer = 0;
$xfer += $output->writeStructBegin('PullRequest');
if ($this->title !== null) {
$xfer += $output->writeFieldBegin('title', TType::STRING, 1);
$xfer += $output->writeString($this->title);
$xfer += $output->writeFieldEnd();
}
$xfer += $output->writeFieldStop();
$xfer += $output->writeStructEnd();
return $xfer;
}
}

View File

@@ -202,6 +202,7 @@ class TestBlob < Minitest::Test
assert sample_blob_memory("JavaScript/gen-js-linguist-thrift.js").generated? assert sample_blob_memory("JavaScript/gen-js-linguist-thrift.js").generated?
assert sample_blob_memory("Ruby/gen-rb-linguist-thrift.rb").generated? assert sample_blob_memory("Ruby/gen-rb-linguist-thrift.rb").generated?
assert sample_blob_memory("Objective-C/gen-cocoa-linguist-thrift.m").generated? assert sample_blob_memory("Objective-C/gen-cocoa-linguist-thrift.m").generated?
assert sample_blob_memory("PHP/ThriftGenerated.php").generated?
# Generated JNI # Generated JNI
assert sample_blob_memory("C/jni_layer.h").generated? assert sample_blob_memory("C/jni_layer.h").generated?