diff options
Diffstat (limited to 'node_modules/num2fraction')
-rw-r--r-- | node_modules/num2fraction/.editorconfig | 14 | ||||
-rw-r--r-- | node_modules/num2fraction/.npmignore | 8 | ||||
-rw-r--r-- | node_modules/num2fraction/LICENSE | 22 | ||||
-rw-r--r-- | node_modules/num2fraction/README.md | 87 | ||||
-rw-r--r-- | node_modules/num2fraction/index.js | 48 | ||||
-rw-r--r-- | node_modules/num2fraction/package.json | 60 |
6 files changed, 239 insertions, 0 deletions
diff --git a/node_modules/num2fraction/.editorconfig b/node_modules/num2fraction/.editorconfig new file mode 100644 index 0000000..4a12c11 --- /dev/null +++ b/node_modules/num2fraction/.editorconfig @@ -0,0 +1,14 @@ +# editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +trim_trailing_whitespace = true +insert_final_newline = true + + +[*.md] +trim_trailing_whitespace = false diff --git a/node_modules/num2fraction/.npmignore b/node_modules/num2fraction/.npmignore new file mode 100644 index 0000000..a8d3284 --- /dev/null +++ b/node_modules/num2fraction/.npmignore @@ -0,0 +1,8 @@ +.gitignore +.travis.yml + +node_modules/ +test/ + +gulpfile.js +Gruntfile.js diff --git a/node_modules/num2fraction/LICENSE b/node_modules/num2fraction/LICENSE new file mode 100644 index 0000000..9d10f01 --- /dev/null +++ b/node_modules/num2fraction/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2014 PostCSS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/node_modules/num2fraction/README.md b/node_modules/num2fraction/README.md new file mode 100644 index 0000000..aa47197 --- /dev/null +++ b/node_modules/num2fraction/README.md @@ -0,0 +1,87 @@ +# num2fraction + +[![Build Status](https://travis-ci.org/yisibl/num2fraction.svg)](https://travis-ci.org/yisibl/num2fraction) +[![NPM Downloads](https://img.shields.io/npm/dm/num2fraction.svg?style=flat)](https://www.npmjs.com/package/num2fraction) +[![NPM Version](http://img.shields.io/npm/v/num2fraction.svg?style=flat)](https://www.npmjs.com/package/num2fraction) +[![License](https://img.shields.io/npm/l/num2fraction.svg?style=flat)](http://opensource.org/licenses/MIT) + +> Converting Number to Fraction with Node.js. + +## Installation + +```console +npm install num2fraction +``` + +## Usage + +```js +var π = Math.PI +var n2f = require('num2fraction') + console.log(n2f(0)) // => 0 + console.log(n2f(.2)) // => 1/5 + console.log(n2f(1.1)) // => 11/10 + console.log(n2f(1.2)) // => 6/5 + console.log(n2f(1.3)) // => 13/10 + console.log(n2f(1.4)) // => 7/5 + console.log(n2f(1.5)) // => 3/2 + console.log(n2f(2)) // => 2/1 + console.log(n2f(2.1)) // => 21/10 + console.log(n2f(3)) // => 3/1 + console.log(n2f(2.555)) // => 511/200 + console.log(n2f(8.36)) // => 209/25 + console.log(n2f('3em')) // => 3/1 + console.log(n2f('1.5px')) // => 3/2 + console.log(n2f(7 / 9) // => 7/9 + console.log(n2f(8 / 9) // => 8/9 + console.log(n2f(512 / 999) // => 512/999 + console.log(n2f((2 * π / 3) / π) // => 2/3 + console.log(n2f((8 * 5) / (4 / 2)) // => 20/1 +``` + +## Example + +Opera [old versions](http://www.opera.com/docs/specs/presto28/css/o-vendor/) support the non-standard `-o-min-device-pixel-ratio` or `-o-max-device-pixel-ratio` in CSS media queries. + +```css +@media + only screen and (-webkit-min-device-pixel-ratio: 2), + only screen and ( min--moz-device-pixel-ratio: 2), + only screen and ( -o-min-device-pixel-ratio: 2/1), /* Opera */ + only screen and ( min-device-pixel-ratio: 2), + only screen and ( min-resolution: 192dpi), /* fallback */ + only screen and ( min-resolution: 2dppx) { + +} +``` + +## Changelog + +### v1.2.2 + +* \+ Remove: Debug log message. + +### v1.2.1 + +* \+ Fix: 0 must be converted to a string. + +### v1.2.0 + +* \+ Fix: Accomodate rounding errors. (by @jamestalmage) +* \+ Fix: The negative sign should be on numerator. (by @jamestalmage) + +### v1.1.0 + +* \+ Use more precise (not fixed) precision factor for the calculation + +### v1.0.1 + +* \- Remove "ci.testling.com" + +### V1.0.0 + +> First release. + +## License + +[MIT](LICENSE) diff --git a/node_modules/num2fraction/index.js b/node_modules/num2fraction/index.js new file mode 100644 index 0000000..659deca --- /dev/null +++ b/node_modules/num2fraction/index.js @@ -0,0 +1,48 @@ +'use strict' + +var abs = Math.abs +var round = Math.round + +function almostEq(a, b) { + return abs(a - b) <= 9.5367432e-7 +} + +//最大公约数 Greatest Common Divisor +function GCD(a, b) { + if (almostEq(b, 0)) return a + return GCD(b, a % b) +} + +function findPrecision(n) { + var e = 1 + + while (!almostEq(round(n * e) / e, n)) { + e *= 10 + } + + return e +} + +function num2fraction(num) { + if (num === 0 || num === '0') return '0' + + if (typeof num === 'string') { + num = parseFloat(num) + } + + + var precision = findPrecision(num) //精确度 + var number = num * precision + var gcd = abs(GCD(number, precision)) + + //分子 + var numerator = number / gcd + //分母 + var denominator = precision / gcd + + //分数 + return round(numerator) + '/' + round(denominator) +} + +module.exports = num2fraction + diff --git a/node_modules/num2fraction/package.json b/node_modules/num2fraction/package.json new file mode 100644 index 0000000..68d46c6 --- /dev/null +++ b/node_modules/num2fraction/package.json @@ -0,0 +1,60 @@ +{ + "_from": "num2fraction@^1.2.2", + "_id": "[email protected]", + "_inBundle": false, + "_integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "_location": "/num2fraction", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "num2fraction@^1.2.2", + "name": "num2fraction", + "escapedName": "num2fraction", + "rawSpec": "^1.2.2", + "saveSpec": null, + "fetchSpec": "^1.2.2" + }, + "_requiredBy": [ + "/autoprefixer" + ], + "_resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "_shasum": "6f682b6a027a4e9ddfa4564cd2589d1d4e669ede", + "_spec": "num2fraction@^1.2.2", + "_where": "/home/dstaesse/git/website/node_modules/autoprefixer", + "author": { + "name": "yisi", + "email": "[email protected]", + "url": "http://iyunlu.com/view" + }, + "bugs": { + "url": "https://github.com/yisibl/num2fraction/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Convert number to fraction", + "devDependencies": { + "tape": "^3.0.0" + }, + "homepage": "https://github.com/yisibl/num2fraction#readme", + "keywords": [ + "fraction", + "number", + "math", + "maths", + "arithmetic", + "gcd", + "rational" + ], + "license": "MIT", + "main": "index.js", + "name": "num2fraction", + "repository": { + "type": "git", + "url": "git+ssh://[email protected]/yisibl/num2fraction.git" + }, + "scripts": { + "test": "tape test/*.js" + }, + "version": "1.2.2" +} |