0.1.1 • Published 6 years ago

@ganuz/scope v0.1.1

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

@ganuz/scope

Source Code Version MIT License Bundle Size TypeScript

Scope is package from Ganuz library

Install

$ yarn add @ganuz/scope

Or

$ npm install --save @ganuz/scope

Use

Module

import {
  default as scope
} from '@ganuz/scope';

Browser

<script src="https://unpkg.com/@ganuz/scope/bundle.umd.min.js"></script>
let {
  scope
} = G;

Examples

 let $ = scope('some')

 class Cool {
     constructor(color: string){
         $(this).color = color;
     }

     log() {
         let {color} = $(this);
         console.log(`color: ${color}`);
     }
 }

 let cool = new Cool('green');
 cool.log(); => 'color: green'
 $(cool).color = 'blue';
 cool.color = 'red';
 cool.log(); => 'color: blue'
 scope('some', cool).color = 'pink';
 cool.log(); => 'color: pink'
 Object.keys($(cool)); // => ['color']
  let target = {};
  let scopeGetter = scope();
  let $scope = scopeGetter(target);
  let scopeSomeGetter = scope('some');
  let $scopeSome = scopeSomeGetter(target);

  $scope === $scopeSome; // => false
  $scopeSome === scopeGetter(target); // => true
  $scopeSome === scope('some', target); // => true
  typeof $scopeSome === 'object'; // => true
   let $info = scope('info')

   class Person {
     set name(name: string){
         $info(target).name = name;
     }

     equals(other: Person): boolean {
       return $info(this).name === $info(other).name;
     }
   }

  let person = new Person;
  let person2 = new Person;
  let person3 = new Person;

  person.name = 'bob';
  person2.name = 'alice';
  person3.name = 'bob';

  person.equals(person2); // => false
  person2.equals(person3); // => false
  person3.equals(person1); // => true

Note: It is based on es6 WeakMap no need for polyfill (built-in library support).

License

Copyright © Yisrael Eliev, Licensed under the MIT license.