protobuf-closure-library 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +8 -0
- data/Gemfile +4 -0
- data/README.rst +31 -0
- data/Rakefile +23 -0
- data/ext/protoc_js_core/code_generator.cc +732 -0
- data/ext/protoc_js_core/code_generator.h +81 -0
- data/ext/protoc_js_core/extconf.rb +28 -0
- data/ext/protoc_js_core/js/int64_encoding.proto +28 -0
- data/ext/protoc_js_core/js/javascript_package.proto +23 -0
- data/ext/protoc_js_core/protoc_js_core.cc +66 -0
- data/lib/protobuf-closure-library.rb +4 -0
- data/lib/protobuf-closure-library/config.rb +4 -0
- data/lib/protobuf-closure-library/protoc_js.rb +30 -0
- data/lib/protobuf-closure-library/version.rb +3 -0
- data/protobuf-closure-library.gemspec +29 -0
- data/test/proto/package_test.proto +17 -0
- data/test/proto/test.proto +81 -0
- data/test/protobuf_closure_library_test.rb +20 -0
- metadata +107 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
// Copyright (c) 2010 SameGoal LLC.
|
2
|
+
// All Rights Reserved.
|
3
|
+
// Author: Andy Hochhaus <ahochhaus@samegoal.com>
|
4
|
+
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
|
17
|
+
#ifndef PROTOBUF_JS_CODE_GENERATOR_H_
|
18
|
+
#define PROTOBUF_JS_CODE_GENERATOR_H_
|
19
|
+
|
20
|
+
#include <string>
|
21
|
+
|
22
|
+
#include "google/protobuf/compiler/code_generator.h"
|
23
|
+
#include "google/protobuf/descriptor.h"
|
24
|
+
#include "google/protobuf/io/printer.h"
|
25
|
+
|
26
|
+
namespace sg {
|
27
|
+
namespace protobuf {
|
28
|
+
namespace js {
|
29
|
+
|
30
|
+
class CodeGenerator : public ::google::protobuf::compiler::CodeGenerator {
|
31
|
+
public:
|
32
|
+
explicit CodeGenerator(const std::string& name);
|
33
|
+
virtual ~CodeGenerator();
|
34
|
+
|
35
|
+
virtual bool Generate(
|
36
|
+
const google::protobuf::FileDescriptor *file,
|
37
|
+
const std::string ¶meter,
|
38
|
+
google::protobuf::compiler::OutputDirectory *output_directory,
|
39
|
+
std::string *error) const;
|
40
|
+
|
41
|
+
private:
|
42
|
+
std::string name_;
|
43
|
+
|
44
|
+
static std::string JsFullName(
|
45
|
+
const google::protobuf::FileDescriptor *file,
|
46
|
+
const std::string &full_name);
|
47
|
+
|
48
|
+
static void GenDescriptorGoogProvides(
|
49
|
+
const google::protobuf::Descriptor *message,
|
50
|
+
google::protobuf::io::Printer *printer);
|
51
|
+
|
52
|
+
static void GenEnumDescriptorGoogProvides(
|
53
|
+
const google::protobuf::EnumDescriptor *enum_desc,
|
54
|
+
google::protobuf::io::Printer *printer);
|
55
|
+
|
56
|
+
static void GenDescriptor(
|
57
|
+
const google::protobuf::Descriptor *message,
|
58
|
+
google::protobuf::io::Printer *printer);
|
59
|
+
|
60
|
+
static void GenFieldDescriptor(
|
61
|
+
const google::protobuf::FieldDescriptor *field,
|
62
|
+
google::protobuf::io::Printer *printer);
|
63
|
+
|
64
|
+
static void GenEnumDescriptor(
|
65
|
+
const google::protobuf::EnumDescriptor *enum_desc,
|
66
|
+
google::protobuf::io::Printer *printer);
|
67
|
+
|
68
|
+
static void GenDescriptorMetadata(
|
69
|
+
const google::protobuf::Descriptor *message,
|
70
|
+
google::protobuf::io::Printer *printer);
|
71
|
+
|
72
|
+
static void GenFieldDescriptorMetadata(
|
73
|
+
const google::protobuf::FieldDescriptor *field,
|
74
|
+
google::protobuf::io::Printer *printer);
|
75
|
+
};
|
76
|
+
|
77
|
+
} // namespace js
|
78
|
+
} // namespace protobuf
|
79
|
+
} // namespace sg
|
80
|
+
|
81
|
+
#endif // PROTOBUF_JS_CODE_GENERATOR_H_
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'mkmf-rice'
|
2
|
+
|
3
|
+
SOURCE_DIR = File.expand_path File.dirname(__FILE__)
|
4
|
+
COMPILED_PROTO_DIR = SOURCE_DIR #File.join(SOURCE_DIR, 'js')
|
5
|
+
|
6
|
+
HEADER_DIRS = ['/usr/local/include', '/usr/include']
|
7
|
+
LIB_DIRS = ['/usr/local/lib', '/usr/lib']
|
8
|
+
|
9
|
+
Dir::mkdir COMPILED_PROTO_DIR if !FileTest::directory?(COMPILED_PROTO_DIR)
|
10
|
+
|
11
|
+
def generate_proto_deps proto
|
12
|
+
`protoc -I /usr/include -I /usr/local/include -I #{SOURCE_DIR}/js --cpp_out=#{COMPILED_PROTO_DIR} #{proto}`
|
13
|
+
end
|
14
|
+
generate_proto_deps "#{SOURCE_DIR}/js/javascript_package.proto"
|
15
|
+
generate_proto_deps "#{SOURCE_DIR}/js/int64_encoding.proto"
|
16
|
+
|
17
|
+
dir_config 'protoc_js_core', HEADER_DIRS, LIB_DIRS
|
18
|
+
|
19
|
+
$LIBS << ' -lprotobuf -lprotoc -lpthread'
|
20
|
+
|
21
|
+
have_library 'protobuf'
|
22
|
+
have_library 'protoc'
|
23
|
+
have_library 'pthread'
|
24
|
+
|
25
|
+
$warnflags.gsub! /-Wdeclaration-after-statement/, ''
|
26
|
+
$warnflags.gsub! /-Wimplicit-function-declaration/, ''
|
27
|
+
|
28
|
+
create_makefile 'protoc_js_core'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
// Copyright (c) 2010 SameGoal LLC.
|
2
|
+
// All Rights Reserved.
|
3
|
+
// Author: Andy Hochhaus <ahochhaus@samegoal.com>
|
4
|
+
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
|
17
|
+
syntax = "proto2";
|
18
|
+
|
19
|
+
import "google/protobuf/descriptor.proto";
|
20
|
+
|
21
|
+
enum Int64Encoding {
|
22
|
+
JS_DEFAULT = 0;
|
23
|
+
JS_NUMBER = 1;
|
24
|
+
}
|
25
|
+
|
26
|
+
extend google.protobuf.FieldOptions {
|
27
|
+
optional Int64Encoding jstype = 50001;
|
28
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// Copyright (c) 2010 SameGoal LLC.
|
2
|
+
// All Rights Reserved.
|
3
|
+
// Author: Andy Hochhaus <ahochhaus@samegoal.com>
|
4
|
+
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
|
17
|
+
syntax = "proto2";
|
18
|
+
|
19
|
+
import "google/protobuf/descriptor.proto";
|
20
|
+
|
21
|
+
extend google.protobuf.FileOptions {
|
22
|
+
optional string javascript_package = 50000;
|
23
|
+
}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
#include <iostream>
|
2
|
+
using namespace std;
|
3
|
+
|
4
|
+
#pragma GCC diagnostic ignored "-Wconversion"
|
5
|
+
#include "rice/Class.hpp"
|
6
|
+
#include "rice/Array.hpp"
|
7
|
+
#include "rice/String.hpp"
|
8
|
+
#include "rice/Exception.hpp"
|
9
|
+
using namespace Rice;
|
10
|
+
|
11
|
+
#include <google/protobuf/compiler/plugin.h>
|
12
|
+
#include <google/protobuf/compiler/command_line_interface.h>
|
13
|
+
#include "code_generator.h"
|
14
|
+
|
15
|
+
class RuntimeException : public exception {
|
16
|
+
public:
|
17
|
+
RuntimeException(string ss) : s(ss) {};
|
18
|
+
virtual ~RuntimeException() throw() {};
|
19
|
+
virtual const char* what() const throw() { return s.c_str(); };
|
20
|
+
private:
|
21
|
+
string s;
|
22
|
+
};
|
23
|
+
|
24
|
+
void compile (Object ruby_bin, Object proto_file, Object args) {
|
25
|
+
// Prepare protoc cli.
|
26
|
+
sg::protobuf::js::CodeGenerator js_generator("js_plugin");
|
27
|
+
google::protobuf::compiler::CommandLineInterface protoc_cli;
|
28
|
+
protoc_cli.RegisterGenerator("--js_out", &js_generator,
|
29
|
+
"Generate closure-library javascript code.");
|
30
|
+
|
31
|
+
// Create args.
|
32
|
+
vector<const char*> argv;
|
33
|
+
argv.push_back(String(ruby_bin).c_str());
|
34
|
+
Array args_array = Array(args);
|
35
|
+
for(Array::iterator it = args_array.begin(); it != args_array.end(); ++it) {
|
36
|
+
argv.push_back(String(*it).c_str());
|
37
|
+
}
|
38
|
+
argv.push_back(String(proto_file).c_str());
|
39
|
+
|
40
|
+
// Redirect cerr.
|
41
|
+
stringstream cerr_buffer;
|
42
|
+
streambuf *original_cerr_buffer = cerr.rdbuf(cerr_buffer.rdbuf());
|
43
|
+
|
44
|
+
int result = protoc_cli.Run((int) argv.size(), &argv[0]);
|
45
|
+
|
46
|
+
if (result != 0) {
|
47
|
+
// Use ostringstream to avoid segfault.
|
48
|
+
ostringstream oss;
|
49
|
+
oss <<
|
50
|
+
"An error occured while running protoc:\n"
|
51
|
+
"-- Protoc output ---------------------\n\n"
|
52
|
+
<< cerr_buffer.str() << endl <<
|
53
|
+
"--------------------------------------\n";
|
54
|
+
throw RuntimeException(oss.str());
|
55
|
+
}
|
56
|
+
|
57
|
+
// De-redirect cerr.
|
58
|
+
cerr.rdbuf(original_cerr_buffer);
|
59
|
+
}
|
60
|
+
|
61
|
+
extern "C"
|
62
|
+
void Init_protoc_js_core() {
|
63
|
+
Module mProtobufClosureLibrary = define_module("ProtobufClosureLibrary");
|
64
|
+
Class cProtocJs = define_class_under(mProtobufClosureLibrary, "ProtocJsCore");
|
65
|
+
cProtocJs.define_singleton_method("compile", &compile);
|
66
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module ProtobufClosureLibrary
|
2
|
+
|
3
|
+
class ProtocJs
|
4
|
+
def self.compile proto_file, out_dir, *args
|
5
|
+
ProtocJsCore.compile RUBY_BIN, proto_file,
|
6
|
+
@@static_proto_path | [
|
7
|
+
"--js_out=#{out_dir}",
|
8
|
+
"--proto_path=#{File.dirname proto_file}"
|
9
|
+
] | args
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
RUBY_BIN = File.join(
|
14
|
+
RbConfig::CONFIG['bindir'],
|
15
|
+
RbConfig::CONFIG['ruby_install_name']).sub(/.*\s.*/m, '"\&"')
|
16
|
+
PROTOC_JS_CORE_DIR = File.join GEM_ROOT_DIR, 'ext', 'protoc_js_core'
|
17
|
+
|
18
|
+
def self.add_static_proto_path path
|
19
|
+
return if !File.directory?(path)
|
20
|
+
@@static_proto_path |= ["--proto_path=#{path}"]
|
21
|
+
end
|
22
|
+
|
23
|
+
@@static_proto_path = []
|
24
|
+
add_static_proto_path '/usr/include'
|
25
|
+
add_static_proto_path '/usr/local/include'
|
26
|
+
add_static_proto_path '/opt/include'
|
27
|
+
add_static_proto_path PROTOC_JS_CORE_DIR
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "protobuf-closure-library/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "protobuf-closure-library"
|
7
|
+
s.version = ProtobufClosureLibrary::VERSION
|
8
|
+
s.authors = ["alitn"]
|
9
|
+
s.email = [""]
|
10
|
+
s.homepage = "https://github.com/alitn/protobuf-closure-library"
|
11
|
+
s.summary = "Protocol buffer javascript compiler for closure library."
|
12
|
+
s.description = <<-FIN
|
13
|
+
A wrapper for native protocol buffer javascript compiler
|
14
|
+
which generates closure library proto2 messages.
|
15
|
+
FIN
|
16
|
+
|
17
|
+
s.rubyforge_project = "protobuf-closure-library"
|
18
|
+
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
21
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
22
|
+
s.require_paths = ["lib"]
|
23
|
+
|
24
|
+
s.add_dependency "rice"
|
25
|
+
s.add_development_dependency "shoulda"
|
26
|
+
s.add_development_dependency "rake-compiler"
|
27
|
+
|
28
|
+
s.extensions = ['ext/protoc_js_core/extconf.rb']
|
29
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
// Copyright 2009 Google Inc. All rights reserved.
|
2
|
+
// A proto file used for unit testing the ECMAScript
|
3
|
+
// compiler and framework that has a package.
|
4
|
+
//
|
5
|
+
// Modified by Andy Hochhaus <ahochhaus@samegoal.com> to be compatible with
|
6
|
+
// use in a protoc compiler plugin.
|
7
|
+
|
8
|
+
syntax = "proto2";
|
9
|
+
|
10
|
+
import "js/test.proto";
|
11
|
+
|
12
|
+
package someprotopackage;
|
13
|
+
|
14
|
+
message TestPackageTypes {
|
15
|
+
optional int32 optional_int32 = 1;
|
16
|
+
optional TestAllTypes other_all = 2;
|
17
|
+
}
|
@@ -0,0 +1,81 @@
|
|
1
|
+
// Copyright 2008 Google Inc. All rights reserved.
|
2
|
+
//
|
3
|
+
// A proto file used for unit testing the ECMAScript
|
4
|
+
// compiler and framework.
|
5
|
+
//
|
6
|
+
// Modified by Andy Hochhaus <ahochhaus@samegoal.com> to be compatible with
|
7
|
+
// use in a protoc compiler plugin.
|
8
|
+
|
9
|
+
syntax = "proto2";
|
10
|
+
|
11
|
+
import "js/javascript_package.proto";
|
12
|
+
import "js/int64_encoding.proto";
|
13
|
+
|
14
|
+
option (javascript_package) = "proto2";
|
15
|
+
|
16
|
+
message TestAllTypes {
|
17
|
+
message NestedMessage {
|
18
|
+
optional int32 b = 1;
|
19
|
+
}
|
20
|
+
|
21
|
+
enum NestedEnum {
|
22
|
+
FOO = 0;
|
23
|
+
BAR = 2;
|
24
|
+
BAZ = 3;
|
25
|
+
}
|
26
|
+
|
27
|
+
// Singular
|
28
|
+
optional int32 optional_int32 = 1;
|
29
|
+
optional int64 optional_int64 = 2 [default = 1];
|
30
|
+
optional uint32 optional_uint32 = 3;
|
31
|
+
optional uint64 optional_uint64 = 4;
|
32
|
+
optional sint32 optional_sint32 = 5;
|
33
|
+
optional sint64 optional_sint64 = 6;
|
34
|
+
optional fixed32 optional_fixed32 = 7;
|
35
|
+
optional fixed64 optional_fixed64 = 8;
|
36
|
+
optional sfixed32 optional_sfixed32 = 9;
|
37
|
+
optional sfixed64 optional_sfixed64 = 10;
|
38
|
+
optional float optional_float = 11 [default = 1.5];
|
39
|
+
optional double optional_double = 12;
|
40
|
+
optional bool optional_bool = 13;
|
41
|
+
optional string optional_string = 14;
|
42
|
+
optional bytes optional_bytes = 15 [default = "moo"];
|
43
|
+
|
44
|
+
optional group OptionalGroup = 16 {
|
45
|
+
optional int32 a = 17;
|
46
|
+
}
|
47
|
+
|
48
|
+
optional NestedMessage optional_nested_message = 18;
|
49
|
+
optional NestedEnum optional_nested_enum = 21;
|
50
|
+
|
51
|
+
optional int64 optional_int64_number = 50 [default = 1000000000000000001,
|
52
|
+
(jstype) = JS_NUMBER];
|
53
|
+
optional int64 optional_int64_string = 51 [default = 1000000000000000001];
|
54
|
+
|
55
|
+
// Repeated
|
56
|
+
repeated int32 repeated_int32 = 31;
|
57
|
+
repeated int64 repeated_int64 = 32;
|
58
|
+
repeated uint32 repeated_uint32 = 33;
|
59
|
+
repeated uint64 repeated_uint64 = 34;
|
60
|
+
repeated sint32 repeated_sint32 = 35;
|
61
|
+
repeated sint64 repeated_sint64 = 36;
|
62
|
+
repeated fixed32 repeated_fixed32 = 37;
|
63
|
+
repeated fixed64 repeated_fixed64 = 38;
|
64
|
+
repeated sfixed32 repeated_sfixed32 = 39;
|
65
|
+
repeated sfixed64 repeated_sfixed64 = 40;
|
66
|
+
repeated float repeated_float = 41;
|
67
|
+
repeated double repeated_double = 42;
|
68
|
+
repeated bool repeated_bool = 43;
|
69
|
+
repeated string repeated_string = 44;
|
70
|
+
repeated bytes repeated_bytes = 45;
|
71
|
+
|
72
|
+
repeated group RepeatedGroup = 46 {
|
73
|
+
repeated int32 a = 47;
|
74
|
+
}
|
75
|
+
|
76
|
+
repeated NestedMessage repeated_nested_message = 48;
|
77
|
+
repeated NestedEnum repeated_nested_enum = 49;
|
78
|
+
|
79
|
+
repeated int64 repeated_int64_number = 52 [(jstype) = JS_NUMBER];
|
80
|
+
repeated int64 repeated_int64_string = 53;
|
81
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'shoulda'
|
2
|
+
require 'protobuf-closure-library'
|
3
|
+
|
4
|
+
class ProtobufClosureLibraryTest < Test::Unit::TestCase
|
5
|
+
include ProtobufClosureLibrary
|
6
|
+
|
7
|
+
should 'check if the native extension is sane' do
|
8
|
+
assert_equal Object, ProtocJsCore.superclass
|
9
|
+
end
|
10
|
+
|
11
|
+
should 'compile a .proto file to closure library javascript' do
|
12
|
+
proto_file = File.join GEM_ROOT_DIR, 'test', 'proto', 'test.proto'
|
13
|
+
out_dir = File.join GEM_ROOT_DIR, 'tmp'
|
14
|
+
compiled_file = File.join out_dir, 'test.pb.js'
|
15
|
+
|
16
|
+
ProtocJs.compile proto_file, out_dir
|
17
|
+
|
18
|
+
assert File.exists?(compiled_file)
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: protobuf-closure-library
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.4
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- alitn
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-12 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rice
|
16
|
+
requirement: &2164519240 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2164519240
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: shoulda
|
27
|
+
requirement: &2164500680 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2164500680
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake-compiler
|
38
|
+
requirement: &2164499260 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2164499260
|
47
|
+
description: ! " A wrapper for native protocol buffer javascript compiler\n which
|
48
|
+
generates closure library proto2 messages.\n"
|
49
|
+
email:
|
50
|
+
- ''
|
51
|
+
executables: []
|
52
|
+
extensions:
|
53
|
+
- ext/protoc_js_core/extconf.rb
|
54
|
+
extra_rdoc_files: []
|
55
|
+
files:
|
56
|
+
- .gitignore
|
57
|
+
- Gemfile
|
58
|
+
- README.rst
|
59
|
+
- Rakefile
|
60
|
+
- ext/protoc_js_core/code_generator.cc
|
61
|
+
- ext/protoc_js_core/code_generator.h
|
62
|
+
- ext/protoc_js_core/extconf.rb
|
63
|
+
- ext/protoc_js_core/js/int64_encoding.proto
|
64
|
+
- ext/protoc_js_core/js/javascript_package.proto
|
65
|
+
- ext/protoc_js_core/protoc_js_core.cc
|
66
|
+
- lib/protobuf-closure-library.rb
|
67
|
+
- lib/protobuf-closure-library/config.rb
|
68
|
+
- lib/protobuf-closure-library/protoc_js.rb
|
69
|
+
- lib/protobuf-closure-library/version.rb
|
70
|
+
- protobuf-closure-library.gemspec
|
71
|
+
- test/proto/package_test.proto
|
72
|
+
- test/proto/test.proto
|
73
|
+
- test/protobuf_closure_library_test.rb
|
74
|
+
homepage: https://github.com/alitn/protobuf-closure-library
|
75
|
+
licenses: []
|
76
|
+
post_install_message:
|
77
|
+
rdoc_options: []
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
hash: 4373249129295402986
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
segments:
|
96
|
+
- 0
|
97
|
+
hash: 4373249129295402986
|
98
|
+
requirements: []
|
99
|
+
rubyforge_project: protobuf-closure-library
|
100
|
+
rubygems_version: 1.8.10
|
101
|
+
signing_key:
|
102
|
+
specification_version: 3
|
103
|
+
summary: Protocol buffer javascript compiler for closure library.
|
104
|
+
test_files:
|
105
|
+
- test/proto/package_test.proto
|
106
|
+
- test/proto/test.proto
|
107
|
+
- test/protobuf_closure_library_test.rb
|