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

Side by Side Diff: third_party/WebKit/Source/bindings/scripts/utilities.py

Issue 2301993002: binding: Introduces ExceptionToPromiseScope. (Closed)
Patch Set: Removed throwMinimumArityError family. Created 4 years, 3 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 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Utility functions (file reading, simple IDL parsing by regexes) for IDL build . 5 """Utility functions (file reading, simple IDL parsing by regexes) for IDL build .
6 6
7 Design doc: http://www.chromium.org/developers/design-documents/idl-build 7 Design doc: http://www.chromium.org/developers/design-documents/idl-build
8 """ 8 """
9 9
10 import os 10 import os
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 idl_type = union_type 400 idl_type = union_type
401 if union_type.is_nullable: 401 if union_type.is_nullable:
402 idl_type = union_type.inner_type 402 idl_type = union_type.inner_type
403 name = idl_type.cpp_type or idl_type.name 403 name = idl_type.cpp_type or idl_type.name
404 alias = aliases.get(name) 404 alias = aliases.get(name)
405 if alias: 405 if alias:
406 return alias 406 return alias
407 return name 407 return name
408 408
409 409
410 def format_remove_duplicates(text, patterns):
411 """Removes duplicated line-basis patterns.
412
413 Based on simple pattern matching, removes duplicated lines in a block
414 of lines. Lines that match with a same pattern are considered as
415 duplicates.
416
417 Designed to be used as a filter function for Jinja2.
418
419 Args:
420 text: A str of multi-line text.
421 patterns: A list of str where each str represents a simple
422 pattern. The patterns are not considered as regexp, and
423 exact match is applied.
424
425 Returns:
426 A formatted str with duplicates removed.
427 """
428 pattern_founds = [False] * len(patterns)
429 output = []
430 for line in text.split('\n'):
431 for i, pattern in enumerate(patterns):
432 if pattern not in line:
433 continue
434 if pattern_founds[i]:
435 line = ''
peria 2016/09/09 02:15:24 Do we have to add an empty line?
Yuki 2016/09/14 07:10:59 Done.
436 else:
437 pattern_founds[i] = True
438 output.append(line)
439
440 # Let |'\n'.join| emit the last newline.
441 if output:
442 output.append('')
443
444 return '\n'.join(output)
445
446
410 def format_blink_cpp_source_code(text): 447 def format_blink_cpp_source_code(text):
411 """Formats C++ source code. 448 """Formats C++ source code.
412 449
413 Supported modifications are: 450 Supported modifications are:
414 - Reduces successive empty lines into a single empty line. 451 - Reduces successive empty lines into a single empty line.
415 - Removes empty lines just after an open brace or before closing brace. 452 - Removes empty lines just after an open brace or before closing brace.
416 This rule does not apply to namespaces. 453 This rule does not apply to namespaces.
417 454
418 Designed to be used as a filter function for Jinja2. 455 Designed to be used as a filter function for Jinja2.
419 456
420 Args: 457 Args:
421 text: A str of C++ source code. 458 text: A str of C++ source code.
422 459
423 Returns: 460 Returns:
424 A formatted str of the source code. 461 A formatted str of the source code.
425 """ 462 """
463 re_empty_line = re.compile(r'^\s*$')
426 re_first_brace = re.compile(r'(?P<first>[{}])') 464 re_first_brace = re.compile(r'(?P<first>[{}])')
427 re_last_brace = re.compile(r'.*(?P<last>[{}]).*?$') 465 re_last_brace = re.compile(r'.*(?P<last>[{}]).*?$')
428 was_open_brace = True # Trick to remove the empty lines at the beginning. 466 was_open_brace = True # Trick to remove the empty lines at the beginning.
429 was_empty_line = False 467 was_empty_line = False
430 output = [] 468 output = []
431 for line in text.split('\n'): 469 for line in text.split('\n'):
432 # Skip empty lines. 470 # Skip empty lines.
433 if not line: # empty line 471 if re_empty_line.match(line):
434 was_empty_line = True 472 was_empty_line = True
435 continue 473 continue
436 474
437 # Emit a single empty line if needed. 475 # Emit a single empty line if needed.
438 if was_empty_line: 476 if was_empty_line:
439 was_empty_line = False 477 was_empty_line = False
440 match = re_first_brace.search(line) 478 match = re_first_brace.search(line)
441 if was_open_brace: 479 if was_open_brace:
442 # No empty line just after an open brace. 480 # No empty line just after an open brace.
443 pass 481 pass
444 elif match and match.group('first') == '}' and 'namespace' not in li ne: 482 elif match and match.group('first') == '}' and 'namespace' not in li ne:
445 # No empty line just before a closing brace. 483 # No empty line just before a closing brace.
446 pass 484 pass
447 else: 485 else:
448 # Preserve a single empty line. 486 # Preserve a single empty line.
449 output.append('') 487 output.append('')
450 488
451 # Emit the line itself. 489 # Emit the line itself.
452 output.append(line) 490 output.append(line)
453 491
454 # Remember an open brace. 492 # Remember an open brace.
455 match = re_last_brace.search(line) 493 match = re_last_brace.search(line)
456 was_open_brace = (match and match.group('last') == '{' and 'namespace' n ot in line) 494 was_open_brace = (match and match.group('last') == '{' and 'namespace' n ot in line)
457 495
458 # Let |'\n'.join| emit the last newline. 496 # Let |'\n'.join| emit the last newline.
459 if output: 497 if output:
460 output.append('') 498 output.append('')
461 499
462 return '\n'.join(output) 500 return '\n'.join(output)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698