Xaber20110202 / Atcon
Licence: mit
atom condtions
Stars: ✭ 27
Programming Languages
javascript
184084 projects - #8 most used programming language
Labels
Projects that are alternatives of or similar to Atcon
Feedkit
An RSS, Atom and JSON Feed parser written in Swift
Stars: ✭ 895 (+3214.81%)
Mutual labels: atom
Atom Modular Snippets
:atom: A modular solution to snippets in @Atom.
Stars: ✭ 8 (-70.37%)
Mutual labels: atom
Atom Korean Spell Daum
Daum 맞춤법 검사기로 텍스트를 보내 손쉽게 교정 가능한 Atom package
Stars: ✭ 24 (-11.11%)
Mutual labels: atom
Atom Mocha Test Runner
Run your Atom package tests using Mocha
Stars: ✭ 10 (-62.96%)
Mutual labels: atom
Atom One Dark Terminal
A Terminal theme that mimics the One Dark theme made by the Atom team.
Stars: ✭ 890 (+3196.3%)
Mutual labels: atom
Color Indent
Use colors to show in a non intrusive manner different indentation levels.
Stars: ✭ 11 (-59.26%)
Mutual labels: atom
Autocomplete Haskell
Atom autocomplete-plus provider for haskell
Stars: ✭ 23 (-14.81%)
Mutual labels: atom
Atom Check Updates
A CLI for easily updating Atom to the latest version on RPM or Debian-based systems.
Stars: ✭ 8 (-70.37%)
Mutual labels: atom
Atom Annotations
Atom package that shows annotations (e.g. for overriden methods interface implementations) in your PHP source code.
Stars: ✭ 14 (-48.15%)
Mutual labels: atom
atcon
atcon是什么
- con即
condition
条件,atcon,指为条件而生; - at也来源atom,代表它是一个原子操作;
- 把复杂的
if else
逻辑转变为简单的原子操作,就在atcon。
atcon的目标
和复杂的 if else
说再见
为什么
使用方式
npm install --save atcon
const atcon = require('atcon');
atcon(conditions, states, predicate);
执行逻辑
- 根据
states
数组项元素,依次查找condtions
对象(也可以是数组)的state0
属性,得到conditons1
对象,再查找conditons1
的state1
属性...... 其实相当于一个reduce
-
predicate
接收reduce
传进来的每一项的conditon[state]
,如果满足条件,predicate
函数return true
就退出查找,得到该值 - 如果
conditon[state]
不存在,则重新回到上层查找,层层回溯,并获取该层对象的__DEFAULT__
属性,传递给predicate
,同样的,如果return true
,退出查找,得到该值。其实相当于switch
内的default
具体例子
const imgMap = {
online: {
'2': {
a: 'img_b',
b: 'img_o'
},
'3': {
a: 'img_b',
b: 'img_p'
},
'4': 'img_c',
'5': 'img_d',
'6': 'img_e'
},
offline: {
'2': 'img_h',
'3': 'img_i',
'4': 'img_j',
'5': 'img_k',
'6': 'img_l'
},
__DEFAULT__: 'img_a'
};
const noticeMap = {
b: {
'3': 'text3',
'5': 'text5'
},
a: 'textaaa',
__DEFAULT__: 'textdefault'
};
const isString = obj => Object.prototype.toString.call(obj) === '[object String]';
atcon(imgMap, ['online', 3, 'a'], isString); // 'img_b'
atcon(imgMap, ['online', 3, 'c'], isString); // 'img_a'
atcon(imgMap, ['offline', 3, 'v'], isString); // 'img_i'
atcon(imgMap, ['noline'], isString); // 'img_a'
atcon(noticeMap, ['b', 1], isString); // 'textdefault'
atcon(noticeMap, ['a', 6, 1, 5, 6], isString); // 'textaaa'
注意
atcon(noticeMap, ['b'], isString); // undefined
返回的是 undefined
,因为走进了 switch case b
的逻辑,但是switch case b
是一个对象,没有满足isString的条件,而这里没有指定下一层状态的话,循环就会在这一层戛然而止,而不再做回溯。
更多例子可直接参考mocha test
最后
希望大家用得开心。
License
MIT
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].