| // Copyright (c) 2013, 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 'package:analyzer/source/source.dart'; |
| import 'package:analyzer/src/generated/engine.dart' show TimestampedData; |
| import 'package:path/path.dart' as pkg_path; |
| |
| /// An implementation of [Source] that's based on an in-memory Dart string. |
| class StringSource extends Source { |
| /// The content of the source. |
| final String _contents; |
| |
| @override |
| final String fullName; |
| |
| @override |
| final Uri uri; |
| |
| StringSource(this._contents, String? fullName, {Uri? uri}) |
| : fullName = fullName ?? '/test.dart', |
| uri = _computeUri(uri, fullName); |
| |
| @override |
| TimestampedData<String> get contents => TimestampedData(0, _contents); |
| |
| @override |
| int get hashCode => _contents.hashCode ^ fullName.hashCode; |
| |
| @override |
| String get shortName => fullName; |
| |
| /// Return `true` if the given [object] is a string source that is equal to |
| /// this source. |
| @override |
| bool operator ==(Object object) { |
| return object is StringSource && |
| object._contents == _contents && |
| object.fullName == fullName; |
| } |
| |
| @override |
| bool exists() => true; |
| |
| @override |
| String toString() => 'StringSource ($fullName)'; |
| |
| static Uri _computeUri(Uri? uri, String? fullName) { |
| if (uri != null) { |
| return uri; |
| } |
| |
| var isWindows = pkg_path.Style.platform == pkg_path.Style.windows; |
| if (isWindows) { |
| return pkg_path.toUri(r'C:\test.dart'); |
| } else { |
| return pkg_path.toUri(r'/test.dart'); |
| } |
| } |
| } |