Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/usr/bin/env python | |
| 2 | |
| 3 # Copyright 2014 The Chromium Authors. All rights reserved. | |
| 4 # Use of this source code is governed by a BSD-style license that can be | |
| 5 # found in the LICENSE file. | |
| 6 | |
| 7 import in_generator | |
| 8 import sys | |
| 9 | |
| 10 CPP_START_TEMPLATE = """ | |
| 11 // Copyright 2014 The Chromium Authors. All rights reserved. | |
| 12 // Use of this source code is governed by a BSD-style license that can be | |
| 13 // found in the LICENSE file. | |
| 14 | |
| 15 // Auto-generated by make_mediaquery_tokenizer_codepoints.py | |
| 16 | |
| 17 const MediaQueryTokenizer::CodePoint MediaQueryTokenizer::codePoints[%d] = { | |
| 18 """ | |
| 19 | |
| 20 CPP_FOOTER_TEMPLATE = """ }; | |
| 21 const unsigned codePointsNumber = %d; | |
| 22 """ | |
| 23 | |
| 24 | |
| 25 class MakeMediaQueryTokenizerCodePointsWriter(in_generator.Writer): | |
| 26 defaults = { | |
| 27 'Conditional': None, | |
| 28 'RuntimeEnabled': None, | |
| 29 'ImplementedAs': None, | |
| 30 } | |
| 31 filters = { | |
| 32 } | |
| 33 default_parameters = { | |
| 34 'namespace': '', | |
| 35 'export': '', | |
| 36 } | |
| 37 | |
| 38 def __init__(self, in_file_path): | |
| 39 super(MakeMediaQueryTokenizerCodePointsWriter, self).__init__(in_file_pa th) | |
| 40 | |
| 41 self._outputs = { | |
| 42 ('MediaQueryTokenizerCodepoints.cpp'): self.generate, | |
| 43 } | |
| 44 self._template_context = { | |
| 45 'namespace': '', | |
| 46 'export': '', | |
| 47 } | |
| 48 | |
| 49 def generate(self): | |
| 50 array_size = 128 # SCHAR_MAX + 1 | |
| 51 output_string = CPP_START_TEMPLATE % array_size | |
| 52 for i in range(array_size): | |
| 53 c = chr(i) | |
| 54 if c in ['\n', '\r', '\t', '\f', ' ']: | |
|
Nils Barth (inactive)
2014/03/24 01:34:23
This would be rather clearer and less redundant if
Timothy Loh
2014/03/24 03:22:19
Also I'll add that I'd write the function as:
if
Nils Barth (inactive)
2014/03/24 03:24:27
<snip>
Good point - even better!
| |
| 55 output_string += " &MediaQueryTokenizer::whiteSpace,\n" | |
| 56 elif c == '(': | |
| 57 output_string += " &MediaQueryTokenizer::leftParenthesis, \n" | |
| 58 elif c == ')': | |
| 59 output_string += " &MediaQueryTokenizer::rightParenthesis ,\n" | |
| 60 elif c in ['+', '.']: | |
| 61 output_string += " &MediaQueryTokenizer::plusOrFullStop,\ n" | |
| 62 elif c == '-': | |
| 63 output_string += " &MediaQueryTokenizer::hyphenMinus,\n" | |
| 64 elif c == ',': | |
| 65 output_string += " &MediaQueryTokenizer::comma,\n" | |
| 66 elif c == '/': | |
| 67 output_string += " &MediaQueryTokenizer::solidus,\n" | |
| 68 elif c == ':': | |
| 69 output_string += " &MediaQueryTokenizer::colon,\n" | |
| 70 elif c == ';': | |
| 71 output_string += " &MediaQueryTokenizer::semiColon,\n" | |
| 72 elif c == '\\': | |
| 73 output_string += " &MediaQueryTokenizer::reverseSolidus,\ n" | |
| 74 elif c >= '0' and c <= '9': | |
| 75 output_string += " &MediaQueryTokenizer::asciiDigit,\n" | |
| 76 elif (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z') or c == '_': | |
| 77 output_string += " &MediaQueryTokenizer::nameStart,\n" | |
| 78 elif i == 0: | |
| 79 output_string += " &MediaQueryTokenizer::endOfFile,\n" | |
| 80 else: | |
| 81 output_string += " 0,\n" | |
| 82 | |
| 83 output_string += CPP_FOOTER_TEMPLATE % array_size | |
| 84 | |
| 85 return output_string | |
| 86 | |
| 87 if __name__ == "__main__": | |
| 88 in_generator.Maker(MakeMediaQueryTokenizerCodePointsWriter).main(sys.argv) | |
| OLD | NEW |