blob: 2d114bd54866b3154f30d62c1844b3852a764c93 [file] [log] [blame]
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:convert';
import 'dart:io';
import 'package:path/path.dart' as p;
/// Generates and updates HTML entities.
void main() {
// Original file: https://html.spec.whatwg.org/entities.json
final file = File('${p.current}/tool/entities.json');
final json = file.readAsStringSync();
final map = Map<String, Map<String, dynamic>>.from(jsonDecode(json) as Map);
final result = <String, String>{};
for (final name in map.keys) {
if (name.endsWith(';')) {
final value = map[name]!['characters'] as String;
result[name] = value;
}
}
final outputPath = '${p.current}/lib/src/assets/html_entities.dart';
final stringMap = const JsonEncoder.withIndent(' ')
.convert(result)
.replaceAll(r'"$"', r'r"$"')
.replaceAll(r'"\\"', r'r"\"');
final output = '''
// Generated file. do not edit.
//
// Source: tool/entities.json
// Script: tool/update_entities.dart
// ignore_for_file: prefer_single_quotes
const htmlEntitiesMap = $stringMap;
''';
File(outputPath).writeAsStringSync(output);
}