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

Side by Side Diff: third_party/WebKit/Source/build/scripts/templates/macros.tmpl

Issue 1938343002: Generate a series of nested switch statements to parse CSSPrimitiveValue units. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Make all values appear in the .in file Created 4 years, 7 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 {# 1 {#
2 FIXME: Do we need to put license blocks in generated files? 2 FIXME: Do we need to put license blocks in generated files?
3 #} 3 #}
4 {% macro license() %} 4 {% macro license() %}
5 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 5 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
6 // Use of this source code is governed by a BSD-style license that can be 6 // Use of this source code is governed by a BSD-style license that can be
7 // found in the LICENSE file. 7 // found in the LICENSE file.
8 {%- endmacro %} 8 {%- endmacro %}
9
10
11 {% macro trie_leaf(index, object, return_macro, lowercase_data) %}
12 {% for name, value in object.items() %}
13 {% if name|length %}
14 if (
15 {%- for c in name -%}
16 {%- if lowercase_data -%}
17 {{ " && " if not loop.first }}toASCIILower(data[{{index + loop.index0}}]) == '{{c}}'
18 {%- else -%}
19 {{ " && " if not loop.first }}data[{{index + loop.index0}}] == '{{c}}'
20 {%- endif -%}
21 {%- endfor -%}
22 )
23 return {{ return_macro(value) }};
24 break;
25 {% else %}
26 return {{ return_macro(value) }};
27 {% endif %}
28 {% endfor %}
29 {% endmacro %}
30
31
32 {% macro trie_switch(trie, index, return_macro, lowercase_data) %}
33 {% if lowercase_data %}
34 switch (toASCIILower(data[{{index}}])) {
35 {% else %}
36 switch (data[{{index}}]) {
37 {% endif %}
38 {% for char, value in trie.items()|sort %}
39 case '{{char}}':
40 {% if value|length == 1 and value.items()[0][1] is string %}
41 {{ trie_leaf(index+1, value, return_macro, lowercase_data) | indent(4) }}
42 {% else %}
43 {{ trie_switch(value, index + 1, return_macro, lowercase_data) | indent(4) } }
44 {% endif %}
45 {% endfor %}
46 }
47 break;
48 {% endmacro %}
49
50
51 {% macro trie_length_switch(empty_case_return_value, length_tries, return_macro, default_return_value, lowercase_data) %}
52 switch(length) {
53 {% if empty_case_return_value %}
Timothy Loh 2016/05/12 07:03:14 This shouldn't be needed any more due to https://c
meade_UTC10 2016/05/13 03:48:19 Done.
54 case 0:
55 return {{ empty_case_return_value }};
56 {% endif %}
57 {% for length, trie in length_tries %}
58 case {{ length }}:
59 {{ trie_switch(trie, 0, return_macro, lowercase_data) | indent(4) }}
60 {% endfor %}
61 }
62 return {{ default_return_value }};
Timothy Loh 2016/05/12 07:03:14 I think it'd be nicer if the users of the macro ju
meade_UTC10 2016/05/13 03:48:19 Done.
63 {% endmacro %}
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698