// 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. library analyzer.src.string_source; import 'package:analyzer/src/generated/engine.dart' show TimestampedData; import 'package:analyzer/src/generated/source.dart'; /** * 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; @override final int modificationStamp; StringSource(this._contents, String fullName) : this.fullName = fullName, uri = fullName == null ? null : new Uri.file(fullName), modificationStamp = new DateTime.now().millisecondsSinceEpoch; @override TimestampedData get contents => new TimestampedData(modificationStamp, _contents); @override String get encoding => uri.toString(); @override int get hashCode => _contents.hashCode ^ fullName.hashCode; @override bool get isInSystemLibrary => false; @override String get shortName => fullName; @override UriKind get uriKind => UriKind.FILE_URI; /** * 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)'; }