OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'package:analyzer/src/codegen/tools.dart'; | 5 import 'package:analyzer/src/codegen/tools.dart'; |
6 import 'package:front_end/src/codegen/tools.dart'; | 6 import 'package:front_end/src/codegen/tools.dart'; |
7 | 7 |
8 import 'api.dart'; | 8 import 'api.dart'; |
9 import 'codegen_dart.dart'; | 9 import 'codegen_dart.dart'; |
10 import 'from_html.dart'; | 10 import 'from_html.dart'; |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 * Generate a constant for each of the fields in the given [type], where the | 117 * Generate a constant for each of the fields in the given [type], where the |
118 * name of each constant will be composed from the [parentName] and the name | 118 * name of each constant will be composed from the [parentName] and the name |
119 * of the field. | 119 * of the field. |
120 */ | 120 */ |
121 void _addFieldConstants(String parentName, TypeObject type) { | 121 void _addFieldConstants(String parentName, TypeObject type) { |
122 if (type == null) { | 122 if (type == null) { |
123 return; | 123 return; |
124 } | 124 } |
125 type.fields.forEach((TypeObjectField field) { | 125 type.fields.forEach((TypeObjectField field) { |
126 String name = field.name; | 126 String name = field.name; |
127 String fieldConstantName = parentName + '_' + name.toUpperCase(); | 127 List<String> components = <String>[]; |
| 128 components.add(parentName); |
| 129 components.addAll(_split(name)); |
| 130 String fieldConstantName = _fromComponents(components); |
128 constants.add(new _Constant(fieldConstantName, "'$name'")); | 131 constants.add(new _Constant(fieldConstantName, "'$name'")); |
129 }); | 132 }); |
130 } | 133 } |
131 | 134 |
132 /** | 135 /** |
| 136 * Return a name generated by converting each of the given [components] to an |
| 137 * uppercase equivalent, then joining them with underscores. |
| 138 */ |
| 139 String _fromComponents(List<String> components) => |
| 140 components.map((String component) => component.toUpperCase()).join('_'); |
| 141 |
| 142 /** |
133 * Generate a name from the [domainName], [kind] and [name] components. | 143 * Generate a name from the [domainName], [kind] and [name] components. |
134 */ | 144 */ |
135 String _generateName(String domainName, String kind, String name) { | 145 String _generateName(String domainName, String kind, String name) { |
136 List<String> components = <String>[]; | 146 List<String> components = <String>[]; |
137 components.addAll(_split(domainName)); | 147 components.addAll(_split(domainName)); |
138 components.add(kind); | 148 components.add(kind); |
139 components.addAll(_split(name)); | 149 components.addAll(_split(name)); |
140 return components | 150 return _fromComponents(components); |
141 .map((String component) => component.toUpperCase()) | |
142 .join('_'); | |
143 } | 151 } |
144 | 152 |
145 /** | 153 /** |
146 * Return the components of the given [string] that are indicated by an upper | 154 * Return the components of the given [string] that are indicated by an upper |
147 * case letter. | 155 * case letter. |
148 */ | 156 */ |
149 Iterable<String> _split(String first) { | 157 Iterable<String> _split(String first) { |
150 RegExp regExp = new RegExp('[A-Z]'); | 158 RegExp regExp = new RegExp('[A-Z]'); |
151 List<String> components = <String>[]; | 159 List<String> components = <String>[]; |
152 int start = 1; | 160 int start = 1; |
153 int index = first.indexOf(regExp, start); | 161 int index = first.indexOf(regExp, start); |
154 while (index >= 0) { | 162 while (index >= 0) { |
155 components.add(first.substring(start - 1, index)); | 163 components.add(first.substring(start - 1, index)); |
156 start = index + 1; | 164 start = index + 1; |
157 index = first.indexOf(regExp, start); | 165 index = first.indexOf(regExp, start); |
158 } | 166 } |
159 components.add(first.substring(start - 1)); | 167 components.add(first.substring(start - 1)); |
160 return components; | 168 return components; |
161 } | 169 } |
162 } | 170 } |
OLD | NEW |