Je sais que Rails a de bonnes aides pour la gestion de la date et du temps. Existe-t-il un projet déjà en cours consistant en, ou incorporant un DSL propre pour les unités standard et leurs conversions? Tout projet avec des assistants pour la conversion entre les unités de base de longueur et de poids des deux systèmes fonctionnerait. Je vous remercie!Bibliothèques pour convertir des unités physiques (kilogrammes, livres) en Ruby?
Répondre
Wow, il y a un peu plus de ceux-ci que prévu. Voici ce que je crois être une liste complète, dans l'ordre alphabétique, avec l'exemple d'utilisation dépouillé de leur documentation. J'ai également noté si je ne pouvais pas les faire courir localement.
-
require 'alchemist' Alchemist.setup 8.miles.to.meters 10.kilometers + 1.mile # 11.609344 kilometers
-
Celui-ci apparaît sur la date, le dernier commit était il y a 5 ans, et il ne semble pas fonctionner sur 1.9.3 pour moi .
include Measurement::Length Inch.new(12).to_centimeters # => #<Measurement::Length::Centimeter:0x173c2b4 @units=30.48>
-
require "phys/units" Q = Phys::Quantity U = Phys::Unit Q[1.23,'km'] + Q[4.56,'m'] #=> Phys::Quantity[1.23456,'km'] Q[123,'mile']/Q[2,'hr'] #=> Phys::Quantity[61,'mile/hr'] Q[61,'miles/hr'].want('m/s') #=> Phys::Quantity[27.26944,'m/s'] Q[1.0,'are'] == Q[10,'m']**2 #=> true
-
Notez que celui-ci déclare qu'il n'est pas prêt pour la production dans le README.
require 'quantity/all' 1.meter #=> 1 meter 1.meter.to_feet #=> 3.28083... foot c = 299792458.meters/1.second #=> 299792458 meter/second newton = 1.meter * 1.kilogram/1.second**2 #=> 1 meter*kilogram/second^2 newton.to_feet #=> 3.28083989501312 foot*kilogram/second^2 newton.convert(:feet) #=> 3.28083989501312 foot*kilogram/second^2 jerk_newton = newton/1.second #=> 1 meter*kilogram/second^3 jerk_newton * 1.second == newton #=> true
-
require 'ruby-measurement' measurement = Measurement.parse('3 feet') # => 3.0 ft. measurement.convert_to(:yards) # => 1.0 yd. measurement.convert_to(:in) # => 36.0 in. measurement.convert_to(:inches) # => 36.0 in. measurement1 = Measurement.parse('3 feet') # => 3.0 ft. measurement2 = Measurement.parse('6 inch') # => 6.0 in. measurement1 + measurement2 # => 3.5 ft.
-
require 'ruby-units' unit = Unit("mm") # unit only (defaults to a scalar of 1) unit = Unit("1 mm") # create a simple unit unit = Unit("1 kg*m^2/s^2") # complex unit unit1 =~ unit2 # true if units are compatible unit1.compatible?(unit2) # true if units are compatible unit1 = unit >> "ft" # convert to 'feet' unit3 = unit1 + unit2 # resulting object will have the units of unit1 unit1 === unit2 # true if units and quantity are the same, even if 'equivalent' by <=> unit.convert_to('ft') # convert (unit1 + unit2).convert_to('ft') # converts result to 'ft'
-
require 'units' three_meters = 3.meters two_meters = 2.m one_inch = 1.inch 3.meters.to_inches # => 118.1103 inch 10.inches.to_mm # => 254.0 millimeter
-
require 'unitwise/ext' 1.yard == (1.foot * 3) # => true 1.quart < 1.liter # => true 2.meter + 3.inch - 1.yard # => <Unitwise::Measurement 1.1618 meter> 1.convert_to('kg.m2/s2') == 1.joule # => true (20.kg * 9.8.convert_to('m/s2')).to_pound_force # => <Unitwise::Measurement 44.06255284754326 pound_force> (300.horsepower * 60.second).to_calorie # => <Unitwise::Measurement 3208077.8414151203 calorie>
-
Comme une autre affiche, j'ai eu du mal à obtenir ce travail. Toutefois, vous pouvez voir Jörg W Mittag's answer pour l'utilisation.
Comme l'auteur de Unitwise, il pourrait être évident que c'est mon préféré hors du groupe. Je vous encourage à vérifier au moins, cependant.
Essayez génial Alchemist.
......
Jetez un oeil à Tom Sawyer Van/Unit
Ceci est la page d'accueil:
require 'van/units'
include Units
1.mile.to(feet)
1.acre.to(yd**2)
1.acre.to(sq_yd)
1.gallon.to(self.L)
1.lb.to(kg)
1.m.s.to(m.s)
1.sq_mi.to(km**2)
1.mile.to(km)
1.usd.to(twd)
1.bit/s + 8.bytes/s
Magnifique.C'est exactement ce que j'espérais secrètement.Merci! +1 et accepté –
Je ne pouvais pas obtenir Van/unités de travailler - tous il rend compte est:
/Library/Ruby/Gems/1.8/gems/vanunits-1.5.0/lib/van/units/base.rb:493:in `à ': unités incompatibles pour le fonctionnement (TypeError) de unitstest.rb: 4
Lors de l'exécution
require 'rubygems'
require 'van/units'
include Van::Units puts
1.meter.to(feet)
J'ai passé une heure de tenter de pirater, sans succès, la source de van/unités.
Le petit bijou ancien sur lequel il est basé a fonctionné de la boîte:
vanunits semble cassé. je suggère d'essayer
rubyunits (http://ruby-units.rubyforge.org/ruby-units/)
ou
mesures (https://github.com/collectiveidea/measurement)
Essayez gem install sy
require 'sy'
(5.g * # a bullet of 5g
500.m.s(-1) ** 2/# flying at a speed of 500m/s has kJ energy:
2).in(:kJ) #=> 0.625
require 'sy/imperial'
1.mile.in :ft #=> 5280.0
1.acre.in :yd² #=> 4840.0
1.gallon.in :l #=> 4.54609
1.lb.in :kg #=> 0.45359237
1.mile².in :km² #=> 2.589988110336
SY::SPEED_OF_LIGHT.in "furlong.fortnight⁻¹" #=> 1802617499785.2544
Dans [sy] (https://github.com/boris -s/sy), je souligne l'exactitude du modèle économique et la facilité d'utilisation par rapport à la facilité d'implémentation La seule autre bibliothèque d'unités physiques hormis _sy_, dont j'aime vraiment le modèle d'objet, est [phys-units] (https: // github. com/masa16/phys-units) de [l'auteur de la célèbre narray gem] (https://github.com/masa16) –
+ 1/acceptant cela car il semble significativement plus moderne/maintenu que les suggestions précédentes. –
Merci et +1, semble extrêmement agréable. –
Github est 404-ing. :( –
Essayez http://github.com/halogenandtoast/alchemist – Psynix