mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	dict, lazy_set: Return an iterator from keys method.
Signed-off-by: Anders Kaseorg <anders@zulipchat.com>
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							61de2e8192
						
					
				
				
					commit
					45d3be5449
				
			@@ -6,7 +6,7 @@ run_test('basic', () => {
 | 
			
		||||
 | 
			
		||||
    assert.equal(d.size, 0);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), []);
 | 
			
		||||
    assert.deepEqual([...d.keys()], []);
 | 
			
		||||
 | 
			
		||||
    d.set('foo', 'bar');
 | 
			
		||||
    assert.equal(d.get('foo'), 'bar');
 | 
			
		||||
@@ -24,7 +24,7 @@ run_test('basic', () => {
 | 
			
		||||
    assert.equal(d.has('bar'), true);
 | 
			
		||||
    assert.equal(d.has('baz'), false);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), ['foo', 'bar']);
 | 
			
		||||
    assert.deepEqual([...d.keys()], ['foo', 'bar']);
 | 
			
		||||
    assert.deepEqual(d.values(), ['baz', 'qux']);
 | 
			
		||||
    assert.deepEqual(d.items(), [['foo', 'baz'], ['bar', 'qux']]);
 | 
			
		||||
 | 
			
		||||
@@ -32,7 +32,7 @@ run_test('basic', () => {
 | 
			
		||||
    assert.equal(d.has('bar'), false);
 | 
			
		||||
    assert.strictEqual(d.get('bar'), undefined);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), ['foo']);
 | 
			
		||||
    assert.deepEqual([...d.keys()], ['foo']);
 | 
			
		||||
 | 
			
		||||
    const val = ['foo'];
 | 
			
		||||
    const res = d.set('abc', val);
 | 
			
		||||
@@ -97,7 +97,7 @@ run_test('each', () => {
 | 
			
		||||
    d.set('banana', 50);
 | 
			
		||||
    d.set('carrot', 60);
 | 
			
		||||
 | 
			
		||||
    let unseen_keys = d.keys();
 | 
			
		||||
    let unseen_keys = [...d.keys()];
 | 
			
		||||
 | 
			
		||||
    let cnt = 0;
 | 
			
		||||
    d.each(function (v, k) {
 | 
			
		||||
@@ -106,7 +106,7 @@ run_test('each', () => {
 | 
			
		||||
        cnt += 1;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    assert.equal(cnt, d.keys().length);
 | 
			
		||||
    assert.equal(cnt, d.size);
 | 
			
		||||
    assert.equal(unseen_keys.length, 0);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ run_test('basic', () => {
 | 
			
		||||
 | 
			
		||||
    assert.equal(d.size, 0);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), []);
 | 
			
		||||
    assert.deepEqual([...d.keys()], []);
 | 
			
		||||
 | 
			
		||||
    d.set('foo', 'bar');
 | 
			
		||||
    assert.equal(d.get('foo'), 'bar');
 | 
			
		||||
@@ -24,7 +24,7 @@ run_test('basic', () => {
 | 
			
		||||
    assert.equal(d.has('bar'), true);
 | 
			
		||||
    assert.equal(d.has('baz'), false);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), ['foo', 'bar']);
 | 
			
		||||
    assert.deepEqual([...d.keys()], ['foo', 'bar']);
 | 
			
		||||
    assert.deepEqual(d.values(), ['baz', 'qux']);
 | 
			
		||||
    assert.deepEqual(d.items(), [['foo', 'baz'], ['bar', 'qux']]);
 | 
			
		||||
 | 
			
		||||
@@ -32,7 +32,7 @@ run_test('basic', () => {
 | 
			
		||||
    assert.equal(d.has('bar'), false);
 | 
			
		||||
    assert.strictEqual(d.get('bar'), undefined);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), ['foo']);
 | 
			
		||||
    assert.deepEqual([...d.keys()], ['foo']);
 | 
			
		||||
 | 
			
		||||
    const val = ['foo'];
 | 
			
		||||
    const res = d.set('abc', val);
 | 
			
		||||
@@ -42,7 +42,7 @@ run_test('basic', () => {
 | 
			
		||||
run_test('case insensitivity', () => {
 | 
			
		||||
    const d = new FoldDict();
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), []);
 | 
			
		||||
    assert.deepEqual([...d.keys()], []);
 | 
			
		||||
 | 
			
		||||
    assert(!d.has('foo'));
 | 
			
		||||
    d.set('fOO', 'Hello World');
 | 
			
		||||
@@ -51,12 +51,12 @@ run_test('case insensitivity', () => {
 | 
			
		||||
    assert(d.has('FOO'));
 | 
			
		||||
    assert(!d.has('not_a_key'));
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), ['fOO']);
 | 
			
		||||
    assert.deepEqual([...d.keys()], ['fOO']);
 | 
			
		||||
 | 
			
		||||
    d.delete('Foo');
 | 
			
		||||
    assert.equal(d.has('foo'), false);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), []);
 | 
			
		||||
    assert.deepEqual([...d.keys()], []);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
run_test('clear', () => {
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@ run_test('basic', () => {
 | 
			
		||||
 | 
			
		||||
    assert.equal(d.size, 0);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), []);
 | 
			
		||||
    assert.deepEqual([...d.keys()], []);
 | 
			
		||||
 | 
			
		||||
    d.set(101, 'bar');
 | 
			
		||||
    assert.equal(d.get(101), 'bar');
 | 
			
		||||
@@ -24,14 +24,14 @@ run_test('basic', () => {
 | 
			
		||||
    assert.equal(d.has(102), true);
 | 
			
		||||
    assert.equal(d.has(999), false);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), [101, 102]);
 | 
			
		||||
    assert.deepEqual([...d.keys()], [101, 102]);
 | 
			
		||||
    assert.deepEqual(d.values(), ['baz', 'qux']);
 | 
			
		||||
 | 
			
		||||
    d.delete(102);
 | 
			
		||||
    assert.equal(d.has(102), false);
 | 
			
		||||
    assert.strictEqual(d.get(102), undefined);
 | 
			
		||||
 | 
			
		||||
    assert.deepEqual(d.keys(), [101]);
 | 
			
		||||
    assert.deepEqual([...d.keys()], [101]);
 | 
			
		||||
 | 
			
		||||
    const val = ['fred'];
 | 
			
		||||
    const res = d.set(103, val);
 | 
			
		||||
@@ -45,7 +45,7 @@ run_test('each', () => {
 | 
			
		||||
    d.set(5, 50);
 | 
			
		||||
    d.set(6, 60);
 | 
			
		||||
 | 
			
		||||
    let unseen_keys = d.keys();
 | 
			
		||||
    let unseen_keys = [...d.keys()];
 | 
			
		||||
 | 
			
		||||
    let cnt = 0;
 | 
			
		||||
    d.each(function (v, k) {
 | 
			
		||||
@@ -54,7 +54,7 @@ run_test('each', () => {
 | 
			
		||||
        cnt += 1;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    assert.equal(cnt, d.keys().length);
 | 
			
		||||
    assert.equal(cnt, d.size);
 | 
			
		||||
    assert.equal(unseen_keys.length, 0);
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -120,7 +120,7 @@ exports.process_loaded_messages = function (messages) {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.get_huddles = function () {
 | 
			
		||||
    let huddles = huddle_timestamps.keys();
 | 
			
		||||
    let huddles = [...huddle_timestamps.keys()];
 | 
			
		||||
    huddles = _.sortBy(huddles, function (huddle) {
 | 
			
		||||
        return huddle_timestamps.get(huddle);
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
@@ -127,7 +127,7 @@ function filter_user_ids(filter_text, user_ids) {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    const user_id_dict = people.filter_people_by_search_terms(persons, search_terms);
 | 
			
		||||
    return user_id_dict.keys();
 | 
			
		||||
    return [...user_id_dict.keys()];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
exports.matches_filter = function (filter_text, user_id) {
 | 
			
		||||
 
 | 
			
		||||
@@ -18,8 +18,8 @@ export class Dict<V> {
 | 
			
		||||
        this._items.delete(this._munge(key));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    keys(): string[] {
 | 
			
		||||
        return [...this._items.keys()];
 | 
			
		||||
    keys(): Iterator<string> {
 | 
			
		||||
        return this._items.keys();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    values(): V[] {
 | 
			
		||||
 
 | 
			
		||||
@@ -38,8 +38,10 @@ export class FoldDict<V> {
 | 
			
		||||
        return this._items.delete(this._munge(key));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    keys(): string[] {
 | 
			
		||||
        return [...this._items.values()].map(({k}) => k);
 | 
			
		||||
    *keys(): Iterator<string> {
 | 
			
		||||
        for (const {k} of this._items.values()) {
 | 
			
		||||
            yield k;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    values(): V[] {
 | 
			
		||||
 
 | 
			
		||||
@@ -42,8 +42,8 @@ export class IntDict<V> {
 | 
			
		||||
        return this._map.delete(key);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    keys(): number[] {
 | 
			
		||||
        return Array.from(this._map.keys());
 | 
			
		||||
    keys(): Iterator<number> {
 | 
			
		||||
        return this._map.keys();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    values(): V[] {
 | 
			
		||||
 
 | 
			
		||||
@@ -28,9 +28,9 @@ export class LazySet {
 | 
			
		||||
 | 
			
		||||
    keys() {
 | 
			
		||||
        if (this.set !== undefined) {
 | 
			
		||||
            return Array.from(this.set);
 | 
			
		||||
            return this.set.keys();
 | 
			
		||||
        }
 | 
			
		||||
        return this.arr;
 | 
			
		||||
        return this.arr.values();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    _make_set() {
 | 
			
		||||
@@ -50,7 +50,7 @@ export class LazySet {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    map(f) {
 | 
			
		||||
        return _.map(this.keys(), f);
 | 
			
		||||
        return Array.from(this.keys(), f);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    has(v) {
 | 
			
		||||
 
 | 
			
		||||
@@ -30,9 +30,9 @@ exports.is_topic_muted = function (stream_id, topic) {
 | 
			
		||||
exports.get_muted_topics = function () {
 | 
			
		||||
    const topics = [];
 | 
			
		||||
    muted_topics.each(function (sub_dict, stream_id) {
 | 
			
		||||
        _.each(sub_dict.keys(), function (topic) {
 | 
			
		||||
        for (const topic of sub_dict.keys()) {
 | 
			
		||||
            topics.push([stream_id, topic]);
 | 
			
		||||
        });
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
    return topics;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
@@ -730,7 +730,7 @@ exports.get_active_human_persons = function () {
 | 
			
		||||
 | 
			
		||||
exports.get_active_user_ids = function () {
 | 
			
		||||
    // This includes active users and active bots.
 | 
			
		||||
    return active_user_dict.keys();
 | 
			
		||||
    return [...active_user_dict.keys()];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.is_cross_realm_email = function (email) {
 | 
			
		||||
 
 | 
			
		||||
@@ -149,7 +149,7 @@ exports.is_subscriber_subset = function (sub1, sub2) {
 | 
			
		||||
    if (sub1.subscribers && sub2.subscribers) {
 | 
			
		||||
        const sub2_set = sub2.subscribers;
 | 
			
		||||
 | 
			
		||||
        return _.every(sub1.subscribers.keys(), (key) => {
 | 
			
		||||
        return _.every([...sub1.subscribers.keys()], (key) => {
 | 
			
		||||
            return sub2_set.has(key);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,7 @@ exports.close = function () {
 | 
			
		||||
exports.zoom_out = function () {
 | 
			
		||||
    zoomed = false;
 | 
			
		||||
 | 
			
		||||
    const stream_ids = active_widgets.keys();
 | 
			
		||||
    const stream_ids = [...active_widgets.keys()];
 | 
			
		||||
 | 
			
		||||
    if (stream_ids.length !== 1) {
 | 
			
		||||
        blueslip.error('Unexpected number of topic lists to zoom out.');
 | 
			
		||||
@@ -230,7 +230,7 @@ exports.widget = function (parent_elem, my_stream_id) {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
exports.active_stream_id = function () {
 | 
			
		||||
    const stream_ids = active_widgets.keys();
 | 
			
		||||
    const stream_ids = [...active_widgets.keys()];
 | 
			
		||||
 | 
			
		||||
    if (stream_ids.length !== 1) {
 | 
			
		||||
        return;
 | 
			
		||||
 
 | 
			
		||||
@@ -273,7 +273,7 @@ exports.unread_topic_counter = (function () {
 | 
			
		||||
            return [];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let topic_names = per_stream_bucketer.keys();
 | 
			
		||||
        let topic_names = [...per_stream_bucketer.keys()];
 | 
			
		||||
 | 
			
		||||
        topic_names = _.reject(topic_names, function (topic_name) {
 | 
			
		||||
            return topic_dict.has(topic_name);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user