diff options
Diffstat (limited to 'public/plugins/codemirror-5.17.0/mode/protobuf')
-rw-r--r-- | public/plugins/codemirror-5.17.0/mode/protobuf/index.html | 64 | ||||
-rw-r--r-- | public/plugins/codemirror-5.17.0/mode/protobuf/protobuf.js | 68 |
2 files changed, 132 insertions, 0 deletions
diff --git a/public/plugins/codemirror-5.17.0/mode/protobuf/index.html b/public/plugins/codemirror-5.17.0/mode/protobuf/index.html new file mode 100644 index 00000000..cfe7b9dc --- /dev/null +++ b/public/plugins/codemirror-5.17.0/mode/protobuf/index.html @@ -0,0 +1,64 @@ +<!doctype html> + +<title>CodeMirror: ProtoBuf mode</title> +<meta charset="utf-8"/> +<link rel=stylesheet href="../../doc/docs.css"> + +<link rel="stylesheet" href="../../lib/codemirror.css"> +<script src="../../lib/codemirror.js"></script> +<script src="protobuf.js"></script> +<style>.CodeMirror { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; }</style> +<div id=nav> + <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="../../doc/logo.png"></a> + + <ul> + <li><a href="../../index.html">Home</a> + <li><a href="../../doc/manual.html">Manual</a> + <li><a href="https://github.com/codemirror/codemirror">Code</a> + </ul> + <ul> + <li><a href="../index.html">Language modes</a> + <li><a class=active href="#">ProtoBuf</a> + </ul> +</div> + +<article> +<h2>ProtoBuf mode</h2> +<form><textarea id="code" name="code"> +package addressbook; + +message Address { + required string street = 1; + required string postCode = 2; +} + +message PhoneNumber { + required string number = 1; +} + +message Person { + optional int32 id = 1; + required string name = 2; + required string surname = 3; + optional Address address = 4; + repeated PhoneNumber phoneNumbers = 5; + optional uint32 age = 6; + repeated uint32 favouriteNumbers = 7; + optional string license = 8; + enum Gender { + MALE = 0; + FEMALE = 1; + } + optional Gender gender = 9; + optional fixed64 lastUpdate = 10; + required bool deleted = 11 [default = false]; +} + +</textarea></form> + <script> + var editor = CodeMirror.fromTextArea(document.getElementById("code"), {}); + </script> + + <p><strong>MIME types defined:</strong> <code>text/x-protobuf</code>.</p> + + </article> diff --git a/public/plugins/codemirror-5.17.0/mode/protobuf/protobuf.js b/public/plugins/codemirror-5.17.0/mode/protobuf/protobuf.js new file mode 100644 index 00000000..bcae276e --- /dev/null +++ b/public/plugins/codemirror-5.17.0/mode/protobuf/protobuf.js @@ -0,0 +1,68 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); + }; + + var keywordArray = [ + "package", "message", "import", "syntax", + "required", "optional", "repeated", "reserved", "default", "extensions", "packed", + "bool", "bytes", "double", "enum", "float", "string", + "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64" + ]; + var keywords = wordRegexp(keywordArray); + + CodeMirror.registerHelper("hintWords", "protobuf", keywordArray); + + var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); + + function tokenBase(stream) { + // whitespaces + if (stream.eatSpace()) return null; + + // Handle one line Comments + if (stream.match("//")) { + stream.skipToEnd(); + return "comment"; + } + + // Handle Number Literals + if (stream.match(/^[0-9\.+-]/, false)) { + if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) + return "number"; + if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) + return "number"; + if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) + return "number"; + } + + // Handle Strings + if (stream.match(/^"([^"]|(""))*"/)) { return "string"; } + if (stream.match(/^'([^']|(''))*'/)) { return "string"; } + + // Handle words + if (stream.match(keywords)) { return "keyword"; } + if (stream.match(identifiers)) { return "variable"; } ; + + // Handle non-detected items + stream.next(); + return null; + }; + + CodeMirror.defineMode("protobuf", function() { + return {token: tokenBase}; + }); + + CodeMirror.defineMIME("text/x-protobuf", "protobuf"); +}); |