64 lines
1.9 KiB
JavaScript
64 lines
1.9 KiB
JavaScript
/*
|
|
Copyright 2013 Daniel Wirtz <dcode@dcode.io>
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
var description = "Runtime structures";
|
|
|
|
var util = require("../util.js"),
|
|
json = require("./json.js");
|
|
|
|
/**
|
|
* pbjs target: Runtime structures
|
|
* @exports pbjs/targets/js
|
|
* @function
|
|
* @param {!ProtoBuf.Builder} builder Builder
|
|
* @param {!Object.<string,*>=} options Options
|
|
* @returns {string}
|
|
*/
|
|
var js = module.exports = function(builder, options) {
|
|
options = options || {};
|
|
var varName = "_root";
|
|
if (options.exports)
|
|
varName = options.exports.substring(options.exports.lastIndexOf(".")+1);
|
|
return [
|
|
"var ", varName, options.min ? "=" : " = ", options.dependency || "dcodeIO.ProtoBuf",
|
|
js.build(builder, options)
|
|
].join('');
|
|
};
|
|
|
|
/**
|
|
* Builds the core js target.
|
|
* @param {!ProtoBuf.Builder} builder Builder
|
|
* @param {!Object.<string,*>=} options Options
|
|
* @returns {string}
|
|
*/
|
|
js.build = function(builder, options) {
|
|
options = options || {};
|
|
return [
|
|
".newBuilder(",
|
|
JSON.stringify(util.getBuilderOptions(options, "use"), null, options.min ? 0 : 4),
|
|
")['import'](",
|
|
json(builder, options),
|
|
").build(",
|
|
typeof options.exports === 'string' ? JSON.stringify(options.exports.split(".")) : "",
|
|
");"
|
|
].join('');
|
|
};
|
|
|
|
/**
|
|
* Module description.
|
|
* @type {string}
|
|
*/
|
|
js.description = description;
|