Vim documentation: vital/Data/Set

main help file
vital/Data/Set.txt    set library.

Maintainer: haya14busa <hayabusa1419@gmail.com>

==============================================================================
CONTENTS                                            Vital.Data.Set-contents

INTRODUCTION            Vital.Data.Set-introduction
INTERFACE               Vital.Data.Set-interface
  FUNCTIONS               Vital.Data.Set-functions
  Set Object              Vital.Data.Set-Set



==============================================================================
INTRODUCTION                                    Vital.Data.Set-introduction

Vital.Data.Set is Collection Utilities Library.
It provides set and frozenset data structure ported from python.
  https://docs.python.org/3.4/library/stdtypes.html#set-types-set-frozenset


        let s:V = vital#{plugin-name}#new()
        let s:Set = s:V.import("Data.Set")

        let set = s:Set.set([1,1,2,3,4,4,5])
        echo set.to_list()              | " => [1,2,3,4,5]
        call set.add(4)
        echo set.to_list()              | " => [1,2,3,4,5]
        call set.add(6)
        echo set.to_list()              | " => [1,2,3,4,5,6]
        echo set.sub([1,2,3]).to_list() | " => [4,5,6]

        let frozenset = s:Set.frozenset([1,1,2,3,4,4,5])
        echo frozenset.to_list() | " => [1,2,3,4,5]
        " frozenset does not have mutable methods
        call frozenset.add(6)
        " => E716: Key not present in Dictionary: add


==============================================================================
INTERFACE                                       Vital.Data.Set-interface
------------------------------------------------------------------------------
FUNCTIONS                                       Vital.Data.Set-functions

set([{list}], [{hashfunc}])                     Vital.Data.Set.set()
        Returns a new 'Set' object.

frozenset([{list}], [{hashfunc}])               Vital.Data.Set.frozen()
        Returns a new 'Frozen' object which has not mutable methods
        (Vital.Data.Set-Set-mutable).

        {hashfunc} is used to hash the value for identifying each element.

        Example:
          function! s:my_hash_func(x) abort
            return tolower(a:x)
          endfunction

          echo s:Set.set(['a', 'ab', 'A']).to_list()
          " => ['A', 'ab', 'a']
          echo s:Set.set(['a', 'ab', 'A'], function('s:my_hash_func')).to_list()
          " => ['ab', 'a']


------------------------------------------------------------------------------
Set Object                                      Vital.Data.Set-Set

Set.to_list()                           Vital.Data.Set-Set.to_list()
        Converts to List.

Set.in({elem})                          Vital.Data.Set-Set.in()
        Checks if there is {elem} in the set.  This returns boolean value.

Set.union({other})                      Vital.Data.Set-Set.union()
Set.or({other})                         Vital.Data.Set-Set.or()
        Return a new set with elements from the set and {other}.

Set.intersection({other})               Vital.Data.Set-Set.intersection()
Set.and({other})                        Vital.Data.Set-Set.and()
        Return a new set with elements common to the set and {other}.

Set.symmetric_difference({other}) Vital.Data.Set-Set.symmetric_difference()
Set.xor({other})                        Vital.Data.Set-Set.xor()
        Return a new set with elements in either the set or {other} but not
        both.

Set.difference({other})                 Vital.Data.Set-Set.difference()
Set.sub({other})                        Vital.Data.Set-Set.sub()
        Return a new set with elements in the set that are not in {other}.

Set.issubset({other})                   Vital.Data.Set-Set.issubset()
Set.le({other})                         Vital.Data.Set-Set.le()
        Test whether every element in the set is in {other}.

Set.lt({other})                         Vital.Data.Set-Set.lt()
        Test whether the set is a proper subset of {other}, that is,
            set.le(other) && set != other

Set.issuperset({other})                 Vital.Data.Set-Set.issuperset()
Set.ge({other})                         Vital.Data.Set-Set.ge()
        Test whether every element in {other} is in the set.

Set.gt({other})                         Vital.Data.Set-Set.gt()
        Test whether the set is a proper superset of {other}, that is,
            set.ge(other) && set != other

Set.len()                               Vital.Data.Set-Set.len()
        Return the length of Set.

------------------------------------------------------------------------------
Mutable Set Object                               Vital.Data.Set-Set-mutable

        The following methods for set do not apply to immutable instances of
        Vital.Data.Set.frozen()

Set.update({other})                     Vital.Data.Set-Set.update()
Set.ior({other})                        Vital.Data.Set-Set.ior()
        Update the set, adding elements from {other}.

Set.intersection_update({other})  Vital.Data.Set-Set.intersection_update()
Set.iand({other})                 Vital.Data.Set-Set.iand()
        Update the set, keeping only elements found in it and {other}.

Set.difference_update({other})    Vital.Data.Set-Set.difference_update()
Set.isub({other})                 Vital.Data.Set-Set.isub()
        Update the set, removing elements found in {other}.

Set.symmetric_difference_update({other})
                            Vital.Data.Set-Set.symmetric_difference_update()
Set.ixor({other})           Vital.Data.Set-Set.ixor()
        Update the set, keeping only elements found in either set, but not in
        both.

Set.add({elem})                                 Vital.Data.Set-Set.add()
        Add {elem} to the set.

Set.remove({elem})                              Vital.Data.Set-Set.remove()
        Remove {elem} from the set. Throw
          vital: Data.Set: the element is not a member
       if {elem} is not contained in the set.


Set.discard({elem})                             Vital.Data.Set-Set.discard()
        Remove {elem} from the set if it is present.

Set.pop()                                       Vital.Data.Set-Set.pop()
        Remove and return an arbitrary element from the set. Throw
          vital: Data.Set: set is empty
       if the set is empty.

Set.clear()                                     Vital.Data.Set-Set.clear()
        Remove all elements from the set.

        Note: {other} will accept 'Set' object or List as an argument.
        ior(), iand(), isub(), ixor() return Set object. 'i' is short for
        "in-place", they are mutable version of or(), and(), sub(), xor()
        respectively.

        Note: If return value is 'Set' object, the type of returned 'Set'
        object is same as type of the instance. Example:

          let set = s:Set.set(['a', 'ab', 'A'], function('s:my_hash_func'))
          echo set.to_list() | " => ['ab', 'a']
          " {comparefunc} will be same as `set`
          let set2 = set.or(['aB', 'c'])
          echo set2.to_list() | " => ['ab', 'a', 'c']

          let frozenset = s:Set.frozenset([1,2,3])
          " returned 'Set' object is frozenset
          let frozenset2 = frozenset.and(s:Set.set([2,3,4]))
          echo frozenset2.to_list() | " => [2,3]
          call frozenset.add(6)
          " => E716: Key not present in Dictionary: add


==============================================================================
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl

top - main help file - tag index