united_attributes 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +38 -0
  5. data/lib/tasks/united_attributes_tasks.rake +4 -0
  6. data/lib/united_attributes.rb +18 -0
  7. data/lib/united_attributes/attribute.rb +56 -0
  8. data/lib/united_attributes/domains.yml +84 -0
  9. data/lib/united_attributes/locales/da.yml +58 -0
  10. data/lib/united_attributes/locales/en.yml +228 -0
  11. data/lib/united_attributes/model.rb +32 -0
  12. data/lib/united_attributes/version.rb +3 -0
  13. data/test/dummy/README.rdoc +261 -0
  14. data/test/dummy/Rakefile +7 -0
  15. data/test/dummy/app/assets/javascripts/application.js +15 -0
  16. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  17. data/test/dummy/app/controllers/application_controller.rb +3 -0
  18. data/test/dummy/app/helpers/application_helper.rb +2 -0
  19. data/test/dummy/app/models/duck.rb +8 -0
  20. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  21. data/test/dummy/config.ru +4 -0
  22. data/test/dummy/config/application.rb +59 -0
  23. data/test/dummy/config/boot.rb +10 -0
  24. data/test/dummy/config/database.yml +25 -0
  25. data/test/dummy/config/environment.rb +5 -0
  26. data/test/dummy/config/environments/development.rb +37 -0
  27. data/test/dummy/config/environments/production.rb +67 -0
  28. data/test/dummy/config/environments/test.rb +37 -0
  29. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  30. data/test/dummy/config/initializers/inflections.rb +15 -0
  31. data/test/dummy/config/initializers/mime_types.rb +5 -0
  32. data/test/dummy/config/initializers/secret_token.rb +7 -0
  33. data/test/dummy/config/initializers/session_store.rb +8 -0
  34. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  35. data/test/dummy/config/locales/en.yml +5 -0
  36. data/test/dummy/config/routes.rb +58 -0
  37. data/test/dummy/db/development.sqlite3 +0 -0
  38. data/test/dummy/db/migrate/20130517195658_create_ducks.rb +14 -0
  39. data/test/dummy/db/schema.rb +27 -0
  40. data/test/dummy/db/test.sqlite3 +0 -0
  41. data/test/dummy/log/development.log +25 -0
  42. data/test/dummy/log/test.log +3 -0
  43. data/test/dummy/public/404.html +26 -0
  44. data/test/dummy/public/422.html +26 -0
  45. data/test/dummy/public/500.html +25 -0
  46. data/test/dummy/public/favicon.ico +0 -0
  47. data/test/dummy/script/rails +6 -0
  48. data/test/dummy/test/fixtures/ducks.yml +15 -0
  49. data/test/dummy/test/unit/duck_test.rb +7 -0
  50. data/test/test_helper.rb +15 -0
  51. data/test/united_attributes_test.rb +7 -0
  52. metadata +160 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1deea4834e126850d4b5bc5bae2a204384e73198
4
+ data.tar.gz: 6e01ee3732c4e936c6ee705aaf461373707d8006
5
+ SHA512:
6
+ metadata.gz: 41e64931062e76b5f5ef7cb3cf5f198a2f9d621b7a5623c4c4d6d408e39f87dd7f13b76c590a894d4867998f144d851827af2f77486f9fbcb5fa65a3bd51316d
7
+ data.tar.gz: f7bb7ed12489431a3be467cabbfdbde8a6b3a83dae479873b57d26c8e1dff608328e72ec1b052c8da55adc60a2f5eee91bd4e534d0ed8c4f33dd969bc128d2ed
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2013 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,3 @@
1
+ = UnitedAttributes
2
+
3
+ This project rocks and uses MIT-LICENSE.
data/Rakefile ADDED
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'UnitedAttributes'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+
24
+
25
+
26
+ Bundler::GemHelper.install_tasks
27
+
28
+ require 'rake/testtask'
29
+
30
+ Rake::TestTask.new(:test) do |t|
31
+ t.libs << 'lib'
32
+ t.libs << 'test'
33
+ t.pattern = 'test/**/*_test.rb'
34
+ t.verbose = false
35
+ end
36
+
37
+
38
+ task :default => :test
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :united_attributes do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,18 @@
1
+ module UnitedAttributes
2
+ class Railtie < Rails::Railtie
3
+ initializer 'united_attributes.initialize' do |app|
4
+
5
+ domains_path = File.expand_path(File.join(File.dirname(__FILE__), 'united_attributes', 'domains.yml'))
6
+ i18n_paths = Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), 'united_attributes', 'locales', '*.yml')))
7
+ UnitedAttributes::DOMAINS = HashWithIndifferentAccess.new(YAML.load_file(domains_path))
8
+ I18n.load_path += i18n_paths
9
+
10
+ end
11
+ end
12
+
13
+ end
14
+
15
+ UA = UnitedAttributes
16
+
17
+ require 'united_attributes/attribute'
18
+ require 'united_attributes/model'
@@ -0,0 +1,56 @@
1
+ require 'forwardable'
2
+
3
+ class UnitedAttributes::Attribute
4
+ extend Forwardable
5
+ def_delegators(:to_s, :upcase, :gsub)
6
+
7
+ def initialize(value, options)
8
+ @options = options
9
+ @value = value
10
+ UnitedAttributes::DOMAINS[@options[:domain]].keys.each do |key|
11
+ instance_eval do
12
+ define_singleton_method "as_#{key}s" do
13
+ as(key)
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ def unit
20
+ @options[:unit]
21
+ end
22
+
23
+ def domain
24
+ @options[:domain]
25
+ end
26
+
27
+ def to_s
28
+ ("%.#{precision}f" % @value) + " " + I18n.t("united_attributes.#{domain}.#{unit}", count: @value)
29
+ end
30
+
31
+ def precision(precision = nil)
32
+ return @options[:precision] if precision.nil?
33
+ UnitedAttributes::Attribute.new(value, @options.merge(precision: precision))
34
+ end
35
+
36
+ def value
37
+ @value
38
+ end
39
+
40
+ def domain_units
41
+ UnitedAttributes::DOMAINS[@options[:domain]]
42
+ end
43
+
44
+ private
45
+
46
+ def convert(to)
47
+ current_factor = domain_units[unit]
48
+ new_factor = domain_units[to]
49
+ (value.to_f * current_factor ) / new_factor
50
+ end
51
+
52
+ def as(unit)
53
+ UnitedAttributes::Attribute.new(convert(unit), @options.merge(unit: unit))
54
+ end
55
+
56
+ end
@@ -0,0 +1,84 @@
1
+ area:
2
+ square_millimeter: 0.000001
3
+ square_centimeter: 0.0001
4
+ square_meter: 1
5
+ square_kilometer: 1000000
6
+ square_inch: 0.00064516
7
+ square_mile: 2589988.11
8
+ hectare: 10000
9
+ acre: 4046.8564224
10
+
11
+ data:
12
+ byte: 1
13
+ bit: 0.125
14
+ kilobit: 125
15
+ megabit: 125000
16
+ gigabit: 125000000
17
+ terabit: 125000000000
18
+ petabit: 125000000000000
19
+ exabit: 125000000000000000
20
+ kibibit: 128
21
+ mebibit: 131072
22
+ gibibit: 134217728
23
+ tebibit: 137438953472
24
+ pebibit: 140737488355328
25
+ exbibit: 144115188075855872
26
+ kilobyte: 1000
27
+ megabyte: 1000000
28
+ gigabyte: 1000000000
29
+ terabyte: 1000000000000
30
+ petabyte: 1000000000000000
31
+ exabyte: 1000000000000000000
32
+ kibibyte: 1024
33
+ mebibyte: 1048576
34
+ gibibyte: 1073741824
35
+ tebibyte: 1099511627776
36
+ pebibyte: 1125899906842624
37
+ exbibyte: 1152921504606846976
38
+
39
+ length:
40
+ nanometer: 0.000000001
41
+ micrometer: 0.000001
42
+ micron: 0.000001
43
+ millimeter: 0.001
44
+ centimeter: 0.01
45
+ meter: 1
46
+ kilometer: 1000
47
+ inch: 0.0253999998
48
+
49
+ space:
50
+ milliliter: 0.001
51
+ centiliter: 0.01
52
+ deciliter: 0.1
53
+ liter: 1
54
+ cubic_millimeter: 0.000001
55
+ cubic_centimeter: 0.001
56
+ cubic_decimeter: 1
57
+ cubic_meter: 1000
58
+ cubic_kilometer: 1000000000000
59
+ gallon: 4.54609926
60
+ pint: 0.568262408
61
+
62
+ speed:
63
+ meters_per_second: 1
64
+ meters_per_hour: 3600
65
+ kilometers_per_second: 0.001
66
+ kilometers_per_hour: 3.6
67
+ miles_per_second: 0.0006213711922373339
68
+ miles_per_hour: 2.236936292054402
69
+
70
+ time:
71
+ second: 1
72
+ minute: 60
73
+ hour: 3600
74
+ day: 86400
75
+ week: 604800
76
+ months: 2629800
77
+ year: 31557600
78
+
79
+ weight:
80
+ milligram: 0.000001
81
+ gram: 0.001
82
+ kilogram: 1
83
+ tonne: 1000
84
+ pound: 0.453592374
@@ -0,0 +1,58 @@
1
+ da:
2
+ united_attributes:
3
+
4
+ area:
5
+ square_meter:
6
+ other: kvadratmeter
7
+ square_kilometer:
8
+ other: kvadratkilometer
9
+
10
+ length:
11
+ millimeter:
12
+ other: millimeter
13
+ centimeter:
14
+ other: centimeter
15
+ meter:
16
+ other: meter
17
+ kilometer:
18
+ other: kilometer
19
+
20
+ space:
21
+ cubic_meter:
22
+ other: kubikmeter
23
+ cubic_kilometer:
24
+ other: kubikkilometer
25
+ liter:
26
+ other: liter
27
+
28
+
29
+ time:
30
+ day:
31
+ one: dag
32
+ other: dage
33
+ hour:
34
+ one: time
35
+ other: timer
36
+ minute:
37
+ one: minut
38
+ other: minutter
39
+ month:
40
+ one: måned
41
+ other: måneder
42
+ second:
43
+ one: sekund
44
+ other: sekunder
45
+ week:
46
+ one: uge
47
+ other: uger
48
+ year:
49
+ other: år
50
+
51
+ weight:
52
+ gram:
53
+ other: gram
54
+ kilogram:
55
+ other: kilogram
56
+ tonne:
57
+ one: ton
58
+ other: tons
@@ -0,0 +1,228 @@
1
+ en:
2
+ united_attributes:
3
+ area:
4
+ square_millimeter:
5
+ one: square millimeter
6
+ other: square millimeters
7
+ square_centimeter:
8
+ one: square centimeter
9
+ other: square centimers
10
+ square_meter:
11
+ one: square meter
12
+ other: square meters
13
+ square_kilometer:
14
+ one: square kilometer
15
+ other: square kilometers
16
+ square_inch:
17
+ one: square inch
18
+ other: square inch
19
+ square_mile:
20
+ one: square mile
21
+ other: square miles
22
+ hectare:
23
+ one: hectare
24
+ other: hectares
25
+ acre:
26
+ one: acre
27
+ other: acres
28
+
29
+ data:
30
+ byte:
31
+ one: byte
32
+ other: bytes
33
+ bit:
34
+ one: bit
35
+ other: bits
36
+ kilobit:
37
+ one: kilobit
38
+ other: kilobits
39
+ megabit:
40
+ one: megabit
41
+ other: megabits
42
+ gigabit:
43
+ one: gigabit
44
+ other: gigabits
45
+ terabit:
46
+ one: terabit
47
+ other: terabits
48
+ petabit:
49
+ one: petabit
50
+ other: petabits
51
+ exabit:
52
+ one: exabit
53
+ other: exabits
54
+
55
+ kibibit:
56
+ one: kibibit
57
+ other: kibibits
58
+ mebibit:
59
+ one: mebibit
60
+ other: mebibits
61
+ gibibit:
62
+ one: gibibit
63
+ other: gibibits
64
+ tebibit:
65
+ one: tebibit
66
+ other: tebibits
67
+ pebibit:
68
+ one: pebibit
69
+ other: pebibits
70
+ exbibit:
71
+ one: exbibit
72
+ other: exbibits
73
+
74
+ kilobyte:
75
+ one: kilobyte
76
+ other: kilobytes
77
+ megabyte:
78
+ one: megabyte
79
+ other: megabytes
80
+ gigabyte:
81
+ one: gigabyte
82
+ other: gigabytes
83
+ terabyte:
84
+ one: terabyte
85
+ other: terabytes
86
+ petabyte:
87
+ one: petabyte
88
+ other: petabytes
89
+ exabyte:
90
+ one: exabyte
91
+ other: exabytes
92
+
93
+ kibibyte:
94
+ one: kibibyte
95
+ other: kibibytes
96
+ mebibyte:
97
+ one: mebibyte
98
+ other: mebibytes
99
+ gibibyte:
100
+ one: gibibyte
101
+ other: gibibytes
102
+ tebibyte:
103
+ one: tebibyte
104
+ other: tebibytes
105
+ pebibyte:
106
+ one: pebibyte
107
+ other: pebibytes
108
+ exbibyte:
109
+ one: exbibyte
110
+ other: exbibytes
111
+
112
+ length:
113
+ nanometer:
114
+ one: nanometer
115
+ other: nanometers
116
+ micrometer:
117
+ one: micrometer
118
+ other: micrometers
119
+ micron:
120
+ one: micron
121
+ other: microns
122
+ millimeter:
123
+ one: millimeter
124
+ other: millimeters
125
+ centimeter:
126
+ one: centimeter
127
+ other: centimeters
128
+ meter:
129
+ one: meter
130
+ other: meters
131
+ kilometer:
132
+ one: kilometer
133
+ other: kilometers
134
+
135
+ space:
136
+ milliliter:
137
+ one: milliliters
138
+ other: milliliters
139
+ centiliter:
140
+ one: centiliters
141
+ other: centiliters
142
+ deciliter:
143
+ one: deciliter
144
+ other: deciliters
145
+ liter:
146
+ one: liter
147
+ other: liters
148
+ cubic_millimeter:
149
+ one: cubic millimeter
150
+ other: cubic millimeters
151
+ cubic_centimeter:
152
+ one: cubic centimeter
153
+ other: cubic centimeters
154
+ cubic_decimeter:
155
+ one: cubic decimeter
156
+ other: cubic decimeters
157
+ cubic_meter:
158
+ one: cubic meter
159
+ other: cubic meters
160
+ cubic_kilometer:
161
+ one: cubic kilometer
162
+ other: cubic kilometers
163
+ gallon:
164
+ one: gallon
165
+ other: gallons
166
+ pint:
167
+ one: pint
168
+ other: pints
169
+
170
+ speed:
171
+ meters_per_second:
172
+ other: meter per second
173
+ other: meters per second
174
+ meters_per_hour:
175
+ one: meter per hour
176
+ other: meters per hour
177
+ kilometers_per_second:
178
+ one: kilometer per second
179
+ other: kilometers per second
180
+ kilometers_per_hour:
181
+ one: kilometer per hour
182
+ others: kilometers per hour
183
+ miles_per_second:
184
+ one: mile per second
185
+ other: miles per seconds
186
+ miles_per_hour:
187
+ one: mile per hour
188
+ other: miles per hour
189
+
190
+ time:
191
+ day:
192
+ one: day
193
+ other: days
194
+ hour:
195
+ one: hour
196
+ other: hours
197
+ minute:
198
+ one: minute
199
+ other: minutes
200
+ month:
201
+ one: month
202
+ other: months
203
+ second:
204
+ one: second
205
+ other: seconds
206
+ week:
207
+ one: week
208
+ other: weeks
209
+ year:
210
+ one: year
211
+ other: years
212
+
213
+ weight:
214
+ milligram:
215
+ one: milligram
216
+ other: milligrams
217
+ gram:
218
+ one: gram
219
+ other: grams
220
+ kilogram:
221
+ one: kilogram
222
+ other: kilograms
223
+ tonne:
224
+ one: tonne
225
+ other: tonnes
226
+ pound:
227
+ one: pound
228
+ other: pounds