Skip to content

Commit e087ad2

Browse files
author
pemrouz
committed
init commit
0 parents  commit e087ad2

File tree

9 files changed

+468
-0
lines changed

9 files changed

+468
-0
lines changed

.babelrc

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"presets": ["es2015"]
3+
}

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
node_modules
2+
coverage
3+
*.log

.popper.yml

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
globals:
2+
- <script src="https://cdn.polyfill.io/v1/polyfill.min.js"></script>
3+
- <script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.0.0/chai.min.js"></script>
4+
5+
tests: (npm run build > /dev/null) && browserify ./test.js
6+
-i colors
7+
# -i chai
8+
# | sed -E "s/require\('chai'\)/window.chai/"
9+
10+
watch:
11+
- src
12+
- test.js
13+
14+
browsers:
15+
- chrome
16+
- firefox
17+
- ie11

.travis.yml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
language: node_js
2+
node_js:
3+
- "iojs"
4+
5+
after_script: NODE_ENV=test istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage

README.md

Whitespace-only changes.

dist/index.js

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
'use strict';
2+
3+
var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })();
4+
5+
Object.defineProperty(exports, "__esModule", {
6+
value: true
7+
});
8+
exports.default = needs;
9+
10+
var _utilise = require('utilise.includes');
11+
12+
var _utilise2 = _interopRequireDefault(_utilise);
13+
14+
var _utilise3 = require('utilise.replace');
15+
16+
var _utilise4 = _interopRequireDefault(_utilise3);
17+
18+
var _client = require('utilise/client');
19+
20+
var _client2 = _interopRequireDefault(_client);
21+
22+
var _utilise5 = require('utilise.split');
23+
24+
var _utilise6 = _interopRequireDefault(_utilise5);
25+
26+
var _utilise7 = require('utilise.attr');
27+
28+
var _utilise8 = _interopRequireDefault(_utilise7);
29+
30+
var _utilise9 = require('utilise.key');
31+
32+
var _utilise10 = _interopRequireDefault(_utilise9);
33+
34+
var _utilise11 = require('utilise.lo');
35+
36+
var _utilise12 = _interopRequireDefault(_utilise11);
37+
38+
var _utilise13 = require('utilise.is');
39+
40+
var _utilise14 = _interopRequireDefault(_utilise13);
41+
42+
/* istanbul ignore next */
43+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
44+
45+
// -------------------------------------------
46+
// Define Default Attributes for Components
47+
// -------------------------------------------
48+
function needs(ripple) {
49+
if (!_client2.default) return;
50+
log('creating');
51+
ripple.render = render(ripple)(ripple.render);
52+
return ripple;
53+
}
54+
55+
function render(ripple) {
56+
return function (next) {
57+
return function (el) {
58+
var component = (0, _utilise12.default)(el.nodeName),
59+
headers = ripple.resources[component].headers,
60+
attrs = headers.attrs = headers.attrs || parse(headers.needs, component);
61+
62+
return attrs.map(function (_ref) {
63+
var _ref2 = _slicedToArray(_ref, 2);
64+
65+
var name = _ref2[0];
66+
var values = _ref2[1];
67+
68+
return values.some(function (v, i) {
69+
var from = (0, _utilise8.default)(el, name) || '';
70+
return (0, _utilise2.default)(v)(from) ? false : (0, _utilise8.default)(el, name, (from + ' ' + v).trim());
71+
});
72+
}).some(Boolean) ? el.draw() : next(el);
73+
};
74+
};
75+
}
76+
77+
function parse() {
78+
var attrs = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];
79+
var component = arguments[1];
80+
81+
return attrs.split('[').slice(1).map((0, _utilise4.default)(']', '')).map((0, _utilise6.default)('=')).map(function (_ref3) {
82+
var _ref4 = _slicedToArray(_ref3, 2);
83+
84+
var k = _ref4[0];
85+
var v = _ref4[1];
86+
return v ? [k, v.split(' ')] : k == 'css' ? [k, [component + '.css']] : [k, []];
87+
});
88+
}
89+
90+
var log = require('utilise/log')('[ri/needs]'),
91+
err = require('utilise/err')('[ri/needs]');

package.json

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
{
2+
"name": "rijs.needs",
3+
"version": "0.0.0",
4+
"main": "dist",
5+
"author": "Pedram Emrouznejad (https://github.com/pemrouz)",
6+
"scripts": {
7+
"ignore": "find ./dist -type f -exec sed -i \"s/function _interopRequire/\\/* istanbul ignore next *\\/\\nfunction _interopRequire/g\" {} ';'",
8+
"babel": "babel src -d dist",
9+
"clean": "rm -rf dist && mkdir dist",
10+
"build": "npm run clean && npm run babel && npm run ignore",
11+
"test": "popper",
12+
"version": "npm run build && git add -A",
13+
"postversion": "git push && git push --tags"
14+
},
15+
"license": "pemrouz.mit-license.org",
16+
"devDependencies": {
17+
"babel-cli": "*",
18+
"babel-preset-es2015": "*",
19+
"browserify": "*",
20+
"chai": "*",
21+
"coveralls": "*",
22+
"istanbul": "*",
23+
"mocha": "*",
24+
"mocha-lcov-reporter": "*",
25+
"popper": "*",
26+
"rijs.components": "*",
27+
"rijs.core": "*",
28+
"rijs.css": "*",
29+
"rijs.data": "*",
30+
"rijs.data": "*",
31+
"rijs.fn": "*",
32+
"rijs.precss": "*",
33+
"uglify-js": "*"
34+
},
35+
"dependencies": {
36+
"utilise": "*"
37+
}
38+
}

src/index.js

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// -------------------------------------------
2+
// Define Default Attributes for Components
3+
// -------------------------------------------
4+
export default function needs(ripple){
5+
if (!client) return;
6+
log('creating')
7+
ripple.render = render(ripple)(ripple.render)
8+
return ripple
9+
}
10+
11+
function render(ripple){
12+
return next => {
13+
return el => {
14+
const component = lo(el.nodeName)
15+
, headers = ripple.resources[component].headers
16+
, attrs = headers.attrs = headers.attrs || parse(headers.needs, component)
17+
18+
return attrs
19+
.map(([name, values]) => {
20+
return values.some((v, i) => {
21+
const from = attr(el, name) || ''
22+
return includes(v)(from) ? false
23+
: attr(el, name, (from + ' ' + v).trim())
24+
})
25+
})
26+
.some(Boolean) ? el.draw() : next(el)
27+
}
28+
}
29+
}
30+
31+
function parse(attrs = '', component) {
32+
return attrs
33+
.split('[')
34+
.slice(1)
35+
.map(replace(']', ''))
36+
.map(split('='))
37+
.map(([k, v]) =>
38+
v ? [k, v.split(' ')]
39+
: k == 'css' ? [k, [component + '.css']]
40+
: [k, []]
41+
)
42+
}
43+
44+
45+
import includes from 'utilise.includes'
46+
import replace from 'utilise.replace'
47+
import client from 'utilise/client'
48+
import split from 'utilise.split'
49+
import attr from 'utilise.attr'
50+
import key from 'utilise.key'
51+
import lo from 'utilise.lo'
52+
import is from 'utilise.is'
53+
var log = require('utilise/log')('[ri/needs]')
54+
, err = require('utilise/err')('[ri/needs]')

0 commit comments

Comments
 (0)