Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Side by Side Diff: tools/json_schema_compiler/preview.py

Issue 2596583002: [Schema Compiler] Separate out SchemaLoader and namespace resolving (Closed)
Patch Set: . Created 3 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 """Server for viewing the compiled C++ code from tools/json_schema_compiler. 6 """Server for viewing the compiled C++ code from tools/json_schema_compiler.
7 """ 7 """
8 8
9 import cc_generator 9 import cc_generator
10 import code 10 import code
11 import cpp_type_generator 11 import cpp_type_generator
12 import cpp_util 12 import cpp_util
13 import h_generator 13 import h_generator
14 import idl_schema 14 import idl_schema
15 import json_schema 15 import json_schema
16 import model 16 import model
17 import optparse 17 import optparse
18 import os 18 import os
19 import shlex 19 import shlex
20 import urlparse 20 import urlparse
21 from highlighters import ( 21 from highlighters import (
22 pygments_highlighter, none_highlighter, hilite_me_highlighter) 22 pygments_highlighter, none_highlighter, hilite_me_highlighter)
23 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer 23 from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
24 from cpp_namespace_environment import CppNamespaceEnvironment 24 from cpp_namespace_environment import CppNamespaceEnvironment
25 from schema_loader import SchemaLoader 25 from namespace_resolver import NamespaceResolver
26 26
27 27
28 class CompilerHandler(BaseHTTPRequestHandler): 28 class CompilerHandler(BaseHTTPRequestHandler):
29 """A HTTPRequestHandler that outputs the result of tools/json_schema_compiler. 29 """A HTTPRequestHandler that outputs the result of tools/json_schema_compiler.
30 """ 30 """
31 def do_GET(self): 31 def do_GET(self):
32 parsed_url = urlparse.urlparse(self.path) 32 parsed_url = urlparse.urlparse(self.path)
33 request_path = self._GetRequestPath(parsed_url) 33 request_path = self._GetRequestPath(parsed_url)
34 34
35 chromium_favicon = 'http://codereview.chromium.org/static/favicon.ico' 35 chromium_favicon = 'http://codereview.chromium.org/static/favicon.ico'
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 def _ShowCompiledFile(self, parsed_url, head, body): 181 def _ShowCompiledFile(self, parsed_url, head, body):
182 """Show the compiled version of a json or idl file given the path to the 182 """Show the compiled version of a json or idl file given the path to the
183 compiled file. 183 compiled file.
184 """ 184 """
185 api_model = model.Model() 185 api_model = model.Model()
186 186
187 request_path = self._GetRequestPath(parsed_url) 187 request_path = self._GetRequestPath(parsed_url)
188 (file_root, file_ext) = os.path.splitext(request_path) 188 (file_root, file_ext) = os.path.splitext(request_path)
189 (filedir, filename) = os.path.split(file_root) 189 (filedir, filename) = os.path.split(file_root)
190 190
191 schema_loader = SchemaLoader("./", 191 namespace_resolver = NamespaceResolver("./",
192 filedir, 192 filedir,
193 self.server.include_rules, 193 self.server.include_rules,
194 self.server.cpp_namespace_pattern) 194 self.server.cpp_namespace_pattern)
195 try: 195 try:
196 # Get main file. 196 # Get main file.
197 namespace = schema_loader.ResolveNamespace(filename) 197 namespace = namespace_resolver.ResolveNamespace(filename)
198 type_generator = cpp_type_generator.CppTypeGenerator( 198 type_generator = cpp_type_generator.CppTypeGenerator(
199 api_model, 199 api_model,
200 schema_loader, 200 namespace_resolver,
201 namespace) 201 namespace)
202 202
203 # Generate code 203 # Generate code
204 if file_ext == '.h': 204 if file_ext == '.h':
205 cpp_code = (h_generator.HGenerator(type_generator) 205 cpp_code = (h_generator.HGenerator(type_generator)
206 .Generate(namespace).Render()) 206 .Generate(namespace).Render())
207 elif file_ext == '.cc': 207 elif file_ext == '.cc':
208 cpp_code = (cc_generator.CCGenerator(type_generator) 208 cpp_code = (cc_generator.CCGenerator(type_generator)
209 .Generate(namespace).Render()) 209 .Generate(namespace).Render())
210 else: 210 else:
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 pass 354 pass
355 355
356 server = PreviewHTTPServer(('', int(opts.port)), 356 server = PreviewHTTPServer(('', int(opts.port)),
357 CompilerHandler, 357 CompilerHandler,
358 highlighters, 358 highlighters,
359 include_rules, 359 include_rules,
360 opts.namespace) 360 opts.namespace)
361 server.serve_forever() 361 server.serve_forever()
362 except KeyboardInterrupt: 362 except KeyboardInterrupt:
363 server.socket.close() 363 server.socket.close()
OLDNEW
« no previous file with comments | « tools/json_schema_compiler/namespace_resolver.py ('k') | tools/json_schema_compiler/schema_loader.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698