Greasy Fork

Conversion Utility Library

A library for unit conversions.

目前为 2024-11-27 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.cloud/scripts/519002/1492013/Conversion%20Utility%20Library.js

// ==UserScript==
// @name         Conversion Utility Library
// @namespace    https://greasyfork.org/en/users/670188-hacker09
// @version      1
// @description  A library for unit conversions.
// @author       hacker09
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    // Map of conversions
    const conversionMap = {};
    const Units = new RegExp(/^[ \t\xA0]*(-?\d+(?:[., ]\d+)?)(?:[ \t\xA0]*x[ \t\xA0]*(-?\d+(?:[., ]\d+)?))?[ \t\xA0]*(in|inch|inches|"|”|″|cm|cms|centimeters?|m|mt|mts|meters?|ft|kg|lbs?|pounds?|kilograms?|ounces?|g|ozs?|fl oz|fl oz (us)|fluid ounces?|kphs?|km\/h|kilometers per hours?|mhp|mphs?|meters per hours?|(?:°\s?|º\s?|)(?:degrees?\s+)?(?:celsius|fahrenheit|[CF])|km\/hs?|ml|milliliters?|l|liters?|litres?|gal|gallons?|yards?|yd|Millimeter|millimetre|kilometers?|mi|mm|miles?|km|ft|fl|feets?|grams?|kilowatts?|kws?|brake horsepower|mechanical horsepower|hps?|bhps?|miles per gallons?|mpgs?|liters per 100 kilometers?|lt?\/100km|liquid quarts?|lqs?|qt|foot-? ?pounds?|ft-?lbs?|lb fts?|newton-? ?meters?|n·?m|\^\d+)[ \t\xA0]*(?:\(\w+\)[ \t\xA0]*)?$/i); //https://regex101.com/r/ObpIn5/9 Davidebyzero

    // Helper function to add conversions
    function addConversion(keys, unit, factor, convert) {
        keys.forEach(key => { conversionMap[key] = { unit, factor, convert }; });
    }

    // Add all conversions
    addConversion(['inch', 'inches', 'in', '"', '”', '″'], 'cm', 2.54);
    addConversion(['centimeter', 'centimeters', 'cm', 'cms'], 'in', 1/2.54);
    addConversion(['meter', 'meters', 'm', 'mt', 'mts'], 'ft', 3.281);
    addConversion(['kilogram', 'kilograms', 'kg'], 'lb', 2.205);
    addConversion(['pound', 'pounds', 'lb', 'lbs'], 'kg', 1/2.205);
    addConversion(['ounce', 'ounces', 'oz', 'ozs'], 'g', 28.35);
    addConversion(['gram', 'grams', 'g'], 'oz', 1/28.35);
    addConversion(['kilometer', 'kilometers', 'km'], 'mi', 1/1.609);
    addConversion(['kph', 'kphs', 'km/h', 'km/hs', 'kilometers per hour', 'kilometers per hours'], 'mph', 0.621371);
    addConversion(['mph', 'mphs', 'meters per hour', 'meters per hours'], 'km/h', 1.609);
    addConversion(['mi', 'mile', 'miles'], 'km', 1.609);
    addConversion(['°c', 'ºc', 'celsius', 'degrees celsius', '° celsius', 'º celsius'], '°F', null, v => (v*9/5)+32);
    addConversion(['°f', 'ºf', 'fahrenheit', 'degrees fahrenheit', '° fahrenheit', 'º fahrenheit'], '°C', null, v => (v-32)*5/9);
    addConversion(['milliliter', 'milliliters', 'ml'], 'fl oz (US)', 1/29.574);
    addConversion(['fl oz (US)', 'fl oz', 'fl', 'fluid ounce', 'fluid ounces'], 'ml', 29.574);
    addConversion(['litre', 'liter', 'litres', 'liters', 'l'], 'gal (US)', 1/3.785);
    addConversion(['gal', 'gallon', 'gallons'], 'l', 3.785);
    addConversion(['yard', 'yards', 'yd'], 'm', 1/1.094);
    addConversion(['millimetre', 'millimeters', 'millimetres', 'mm'], 'in', 1/25.4);
    addConversion(['feet', 'feets', 'ft'], 'm', 0.3048);
    addConversion(['kilowatt', 'kilowatts', 'kw', 'kws'], 'hp', 1.341);
    addConversion(['mhp', 'mhps', 'hp', 'hps', 'brake horsepower', 'mechanical horsepower'], 'kW', 1/1.341);
    addConversion(['mpg', 'mpgs', 'miles per gallon', 'miles per gallons'], 'l/100km', null, v => 235.215/v);
    addConversion(['l/100km','lt/100km', 'liters per 100 kilometer', 'liters per 100 kilometers'], 'mpg (US)', null, v => 235.215/v);
    addConversion(['qt', 'lq', 'lqs', 'liquid quart', 'liquid quarts'], 'l', 1/1.057);
    addConversion(['foot-pound', 'foot-pounds', 'foot pound', 'foot pounds', 'ft-lbs', 'ft-lb', 'ft lbs', 'ft lb', 'lb ft', 'lb-ft'], 'Nm', 1.3558179483);
    addConversion(['nm','n·m', 'newton-meter', 'newton-meters', 'newton meter', 'newton meters'], 'lbf ft', 1/1.3558179483);

    // Exported functions for conversion
    window.UConv = {
        convert(unit, value) {
            const data = conversionMap[unit.toLowerCase()];
            if (!data) return null;
            return data.convert ? data.convert(value) : value * data.factor;
        },
        conversionMap,
        Units
    };
})();