hyper-d3 1.0.0.lap23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +313 -0
  5. data/README.md +118 -0
  6. data/Rakefile +31 -0
  7. data/hyper-d3.gemspec +27 -0
  8. data/lib/d3.rb +68 -0
  9. data/lib/d3/arc.rb +29 -0
  10. data/lib/d3/area.rb +53 -0
  11. data/lib/d3/axis.rb +79 -0
  12. data/lib/d3/band_scale.rb +30 -0
  13. data/lib/d3/collections.rb +9 -0
  14. data/lib/d3/color.rb +76 -0
  15. data/lib/d3/color_schemes.rb +34 -0
  16. data/lib/d3/continuous_scale.rb +60 -0
  17. data/lib/d3/creator.rb +11 -0
  18. data/lib/d3/curve.rb +74 -0
  19. data/lib/d3/dsv.rb +103 -0
  20. data/lib/d3/ease.rb +319 -0
  21. data/lib/d3/format.rb +95 -0
  22. data/lib/d3/histograms.rb +46 -0
  23. data/lib/d3/interpolate.rb +125 -0
  24. data/lib/d3/line.rb +27 -0
  25. data/lib/d3/map.rb +48 -0
  26. data/lib/d3/misc.rb +15 -0
  27. data/lib/d3/native.rb +112 -0
  28. data/lib/d3/nest.rb +100 -0
  29. data/lib/d3/ordinal_scale.rb +39 -0
  30. data/lib/d3/path.rb +24 -0
  31. data/lib/d3/pie.rb +25 -0
  32. data/lib/d3/point_scale.rb +27 -0
  33. data/lib/d3/polygon.rb +18 -0
  34. data/lib/d3/quadtree.rb +89 -0
  35. data/lib/d3/quantile_scale.rb +19 -0
  36. data/lib/d3/quantize_scale.rb +20 -0
  37. data/lib/d3/radial_area.rb +55 -0
  38. data/lib/d3/radial_line.rb +27 -0
  39. data/lib/d3/random.rb +14 -0
  40. data/lib/d3/search.rb +30 -0
  41. data/lib/d3/selection.rb +151 -0
  42. data/lib/d3/sequential_scale.rb +31 -0
  43. data/lib/d3/set.rb +30 -0
  44. data/lib/d3/source/d3-drag.js +234 -0
  45. data/lib/d3/source/d3-scale-chromatic.js +484 -0
  46. data/lib/d3/source/d3.js +17178 -0
  47. data/lib/d3/stack.rb +13 -0
  48. data/lib/d3/statistics.rb +81 -0
  49. data/lib/d3/symbol.rb +70 -0
  50. data/lib/d3/threshold_scale.rb +22 -0
  51. data/lib/d3/time_format.rb +47 -0
  52. data/lib/d3/time_interval.rb +85 -0
  53. data/lib/d3/transformations.rb +16 -0
  54. data/lib/hyper-d3.rb +17 -0
  55. data/lib/hyperloop/d3/component.rb +12 -0
  56. data/lib/hyperloop/d3/mixin.rb +59 -0
  57. data/lib/hyperloop/d3/version.rb +5 -0
  58. data/spec/arc_spec.rb +80 -0
  59. data/spec/area_spec.rb +98 -0
  60. data/spec/axis_spec.rb +174 -0
  61. data/spec/band_scale_spec.rb +73 -0
  62. data/spec/color_spec.rb +74 -0
  63. data/spec/continuous_scale_spec.rb +217 -0
  64. data/spec/coverage_spec.rb +16 -0
  65. data/spec/creator_spec.rb +15 -0
  66. data/spec/curve_spec.rb +206 -0
  67. data/spec/dsv_spec.rb +194 -0
  68. data/spec/ease_spec.rb +370 -0
  69. data/spec/format_spec.rb +87 -0
  70. data/spec/histograms_spec.rb +61 -0
  71. data/spec/html/index.html.erb +11 -0
  72. data/spec/interpolate_spec.rb +152 -0
  73. data/spec/line_spec.rb +54 -0
  74. data/spec/map_spec.rb +80 -0
  75. data/spec/misc_spec.rb +21 -0
  76. data/spec/nest_spec.rb +89 -0
  77. data/spec/objects_spec.rb +22 -0
  78. data/spec/ordinal_scale_spec.rb +59 -0
  79. data/spec/path_spec.rb +65 -0
  80. data/spec/pie_spec.rb +114 -0
  81. data/spec/point_scale_spec.rb +58 -0
  82. data/spec/polygon_spec.rb +51 -0
  83. data/spec/quadtree_spec.rb +128 -0
  84. data/spec/quantile_scale_spec.rb +24 -0
  85. data/spec/quantize_scale_spec.rb +40 -0
  86. data/spec/radial_area_spec.rb +123 -0
  87. data/spec/radial_line_spec.rb +50 -0
  88. data/spec/random_spec.rb +34 -0
  89. data/spec/search_spec.rb +69 -0
  90. data/spec/selection_data_spec.rb +64 -0
  91. data/spec/selection_manipulation_spec.rb +166 -0
  92. data/spec/selection_spec.rb +187 -0
  93. data/spec/sequential_scale_spec.rb +90 -0
  94. data/spec/set_spec.rb +57 -0
  95. data/spec/spec_helper.rb +1 -0
  96. data/spec/stack_spec.rb +5 -0
  97. data/spec/statistics_spec.rb +65 -0
  98. data/spec/symbol_spec.rb +116 -0
  99. data/spec/test_app/.gitignore +23 -0
  100. data/spec/test_app/Gemfile +7 -0
  101. data/spec/test_app/Gemfile.lock +206 -0
  102. data/spec/test_app/README.md +9 -0
  103. data/spec/test_app/Rakefile +6 -0
  104. data/spec/test_app/app/assets/config/manifest.js +3 -0
  105. data/spec/test_app/app/assets/images/.keep +0 -0
  106. data/spec/test_app/app/assets/javascripts/application.js +13 -0
  107. data/spec/test_app/app/assets/javascripts/cable.js +13 -0
  108. data/spec/test_app/app/assets/javascripts/channels/.keep +0 -0
  109. data/spec/test_app/app/assets/javascripts/data/elections_2016.rb +10 -0
  110. data/spec/test_app/app/assets/javascripts/data/harry_potter.rb +19 -0
  111. data/spec/test_app/app/assets/javascripts/data/iphones.rb +29 -0
  112. data/spec/test_app/app/assets/javascripts/data/london_population.rb +26 -0
  113. data/spec/test_app/app/assets/javascripts/data/man_vs_horse.rb +55 -0
  114. data/spec/test_app/app/assets/javascripts/data/mtg_modern_colors.rb +96 -0
  115. data/spec/test_app/app/assets/javascripts/data/mtg_modern_creatures.rb +116 -0
  116. data/spec/test_app/app/assets/javascripts/data/olympics_2016_medals.rb +100 -0
  117. data/spec/test_app/app/assets/javascripts/data/paradox.rb +60 -0
  118. data/spec/test_app/app/assets/javascripts/data/polish_pms.rb +28 -0
  119. data/spec/test_app/app/assets/javascripts/data/star_trek_voyager.rb +183 -0
  120. data/spec/test_app/app/assets/javascripts/data/weather_in_london.rb +381 -0
  121. data/spec/test_app/app/assets/javascripts/elections_2016.rb +27 -0
  122. data/spec/test_app/app/assets/javascripts/harry_potter.rb +42 -0
  123. data/spec/test_app/app/assets/javascripts/iphones.rb +54 -0
  124. data/spec/test_app/app/assets/javascripts/london_population.rb +53 -0
  125. data/spec/test_app/app/assets/javascripts/london_population_area.rb +49 -0
  126. data/spec/test_app/app/assets/javascripts/man_vs_horse.rb +60 -0
  127. data/spec/test_app/app/assets/javascripts/mtg_modern_colors.rb +56 -0
  128. data/spec/test_app/app/assets/javascripts/mtg_modern_creatures.rb +70 -0
  129. data/spec/test_app/app/assets/javascripts/olympics_2016_medals.rb +62 -0
  130. data/spec/test_app/app/assets/javascripts/paradox.rb +64 -0
  131. data/spec/test_app/app/assets/javascripts/polish_pms.rb +60 -0
  132. data/spec/test_app/app/assets/javascripts/star_trek_voyager.rb +44 -0
  133. data/spec/test_app/app/assets/javascripts/weather_in_london.rb +69 -0
  134. data/spec/test_app/app/assets/stylesheets/application.css +15 -0
  135. data/spec/test_app/app/channels/application_cable/channel.rb +4 -0
  136. data/spec/test_app/app/channels/application_cable/connection.rb +4 -0
  137. data/spec/test_app/app/controllers/application_controller.rb +27 -0
  138. data/spec/test_app/app/controllers/concerns/.keep +0 -0
  139. data/spec/test_app/app/helpers/application_helper.rb +2 -0
  140. data/spec/test_app/app/jobs/application_job.rb +2 -0
  141. data/spec/test_app/app/mailers/application_mailer.rb +4 -0
  142. data/spec/test_app/app/models/application_record.rb +3 -0
  143. data/spec/test_app/app/models/concerns/.keep +0 -0
  144. data/spec/test_app/app/views/application/index.erb +18 -0
  145. data/spec/test_app/app/views/application/visualization.erb +28 -0
  146. data/spec/test_app/app/views/layouts/application.html.erb +13 -0
  147. data/spec/test_app/bin/bundle +3 -0
  148. data/spec/test_app/bin/rails +4 -0
  149. data/spec/test_app/bin/rake +4 -0
  150. data/spec/test_app/bin/setup +38 -0
  151. data/spec/test_app/bin/update +29 -0
  152. data/spec/test_app/bin/yarn +11 -0
  153. data/spec/test_app/config.ru +5 -0
  154. data/spec/test_app/config/application.rb +18 -0
  155. data/spec/test_app/config/boot.rb +3 -0
  156. data/spec/test_app/config/cable.yml +10 -0
  157. data/spec/test_app/config/database.yml +25 -0
  158. data/spec/test_app/config/environment.rb +5 -0
  159. data/spec/test_app/config/environments/development.rb +54 -0
  160. data/spec/test_app/config/environments/production.rb +91 -0
  161. data/spec/test_app/config/environments/test.rb +42 -0
  162. data/spec/test_app/config/initializers/application_controller_renderer.rb +8 -0
  163. data/spec/test_app/config/initializers/assets.rb +14 -0
  164. data/spec/test_app/config/initializers/backtrace_silencers.rb +7 -0
  165. data/spec/test_app/config/initializers/cookies_serializer.rb +5 -0
  166. data/spec/test_app/config/initializers/filter_parameter_logging.rb +4 -0
  167. data/spec/test_app/config/initializers/inflections.rb +16 -0
  168. data/spec/test_app/config/initializers/mime_types.rb +4 -0
  169. data/spec/test_app/config/initializers/wrap_parameters.rb +14 -0
  170. data/spec/test_app/config/locales/en.yml +33 -0
  171. data/spec/test_app/config/puma.rb +56 -0
  172. data/spec/test_app/config/routes.rb +5 -0
  173. data/spec/test_app/config/secrets.yml +32 -0
  174. data/spec/test_app/config/spring.rb +6 -0
  175. data/spec/test_app/db/seeds.rb +7 -0
  176. data/spec/test_app/lib/assets/.keep +0 -0
  177. data/spec/test_app/lib/tasks/.keep +0 -0
  178. data/spec/test_app/log/.keep +0 -0
  179. data/spec/test_app/package.json +5 -0
  180. data/spec/test_app/public/404.html +67 -0
  181. data/spec/test_app/public/422.html +67 -0
  182. data/spec/test_app/public/500.html +66 -0
  183. data/spec/test_app/public/apple-touch-icon-precomposed.png +0 -0
  184. data/spec/test_app/public/apple-touch-icon.png +0 -0
  185. data/spec/test_app/public/favicon.ico +0 -0
  186. data/spec/test_app/public/robots.txt +1 -0
  187. data/spec/test_app/test/application_system_test_case.rb +5 -0
  188. data/spec/test_app/test/controllers/.keep +0 -0
  189. data/spec/test_app/test/fixtures/.keep +0 -0
  190. data/spec/test_app/test/fixtures/files/.keep +0 -0
  191. data/spec/test_app/test/helpers/.keep +0 -0
  192. data/spec/test_app/test/integration/.keep +0 -0
  193. data/spec/test_app/test/mailers/.keep +0 -0
  194. data/spec/test_app/test/models/.keep +0 -0
  195. data/spec/test_app/test/system/.keep +0 -0
  196. data/spec/test_app/test/test_helper.rb +10 -0
  197. data/spec/test_app/tmp/.keep +0 -0
  198. data/spec/test_app/vendor/.keep +0 -0
  199. data/spec/threshold_scale_spec.rb +28 -0
  200. data/spec/time_format_spec.rb +100 -0
  201. data/spec/time_interval_spec.rb +314 -0
  202. data/spec/transformations_spec.rb +51 -0
  203. data/startrekvoyager.png +0 -0
  204. metadata +529 -0
@@ -0,0 +1,9 @@
1
+ To give it a try:
2
+
3
+ ```
4
+ cd demo
5
+ bundle install
6
+ bundle exec rackup
7
+ ```
8
+
9
+
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative 'config/application'
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link_directory ../stylesheets .css
File without changes
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
5
+ // vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require hyperloop-loader
@@ -0,0 +1,13 @@
1
+ // Action Cable provides the framework to deal with WebSockets in Rails.
2
+ // You can generate new channels where WebSocket features live using the `rails generate channel` command.
3
+ //
4
+ //= require action_cable
5
+ //= require_self
6
+ //= require_tree ./channels
7
+
8
+ (function() {
9
+ this.App || (this.App = {});
10
+
11
+ App.cable = ActionCable.createConsumer();
12
+
13
+ }).call(this);
@@ -0,0 +1,10 @@
1
+ require "ostruct"
2
+
3
+ Elections2016 = [
4
+ { name: "Donald Trump", votes: 62_979_879, color: "#ff8c00" },
5
+ { name: "Hillary Clinton", votes: 65_844_954, color: "#98abc5" },
6
+ { name: "Gary Johnson", votes: 4_488_919, color: "#8a89a6" },
7
+ { name: "Jill Stein", votes: 1_457_044, color: "#7b6888" },
8
+ { name: "Evan McMullin", votes: 725_902, color: "#6b486b" },
9
+ { name: "Darrell Castle", votes: 202_979, color: "#a05d56" },
10
+ ].map{|o| OpenStruct.new(o) }
@@ -0,0 +1,19 @@
1
+ require "ostruct"
2
+ require "time"
3
+
4
+ # Pages for UK releases, according to Harry Potter wikia
5
+ HarryPotterBooks = [
6
+ ["Philosopher's Stone", "1997-06-26", 223],
7
+ ["Chamber of Secrets", "1998-07-02", 251],
8
+ ["Prisoner of Azkaban", "1999-07-08", 317],
9
+ ["Goblet of Fire", "2000-07-08", 636],
10
+ ["Order of the Phoenix", "2003-06-21", 766],
11
+ ["Half-Blood Prince", "2005-07-16", 607],
12
+ ["Deathly Hallows", "2007-07-21", 610],
13
+ ].map do |title, time, pages|
14
+ OpenStruct.new(
15
+ title: title,
16
+ date: Time.parse(time),
17
+ pages: pages
18
+ )
19
+ end
@@ -0,0 +1,29 @@
1
+ require "date"
2
+ require "time"
3
+ require "ostruct"
4
+
5
+ IPhones = [
6
+ ["iPhone", "2007-06-29", [4,8,16]],
7
+ ["iPhone 3G", "2008-07-11", [8,16]],
8
+ ["iPhone 3GS", "2009-06-19", [8,16,32]],
9
+ ["iPhone 4", "2010-06-24", [8,16,32]],
10
+ ["iPhone 4S", "2011-10-14", [8,16,32,64]],
11
+ ["iPhone 5", "2012-09-21", [16,32,64]],
12
+ ["iPhone 5C", "2013-09-20", [8,16,32]],
13
+ ["iPhone 5S", "2013-09-20", [16,32,64]],
14
+ ["iPhone 6", "2014-09-19", [16,64,128]],
15
+ ["iPhone 6 Plus", "2014-09-19", [16,64,128]],
16
+ ["iPhone 6S", "2015-09-25", [16,32,64,128]],
17
+ ["iPhone 6S Plus", "2015-09-25", [16,32,64,128]],
18
+ ["iPhone SE", "2016-03-31", [16,64]],
19
+ ["iPhone 7", "2016-09-16", [32,128,256]],
20
+ ["iPhone 7 Plus", "2016-09-16", [32,128,256]],
21
+ ].map{|n,d,s|
22
+ OpenStruct.new(name: n, released: Time.parse(d), sizes: s)
23
+ }
24
+
25
+ IPhoneVariants = IPhones.flat_map do |i|
26
+ i.sizes.map do |sz|
27
+ OpenStruct.new(name: i.name, released: i.released, size: sz)
28
+ end
29
+ end
@@ -0,0 +1,26 @@
1
+ require "ostruct"
2
+
3
+ LondonPopulation = [
4
+ {"year": 1801, "inner": 879491, "outer": 131666, "greater": 1011157 },
5
+ {"year": 1811, "inner": 1040033, "outer": 157640, "greater": 1197673 },
6
+ {"year": 1821, "inner": 1263975, "outer": 186147, "greater": 1450122 },
7
+ {"year": 1831, "inner": 1515557, "outer": 214392, "greater": 1729949 },
8
+ {"year": 1841, "inner": 1661346, "outer": 255667, "greater": 1917013 },
9
+ {"year": 1851, "inner": 1995846, "outer": 290763, "greater": 2286609 },
10
+ {"year": 1861, "inner": 2634143, "outer": 460248, "greater": 3094391 },
11
+ {"year": 1871, "inner": 3272441, "outer": 629737, "greater": 3902178 },
12
+ {"year": 1881, "inner": 3910735, "outer": 799225, "greater": 4709960 },
13
+ {"year": 1891, "inner": 4422340, "outer": 1143516, "greater": 5565856 },
14
+ {"year": 1901, "inner": 4670177, "outer": 1556317, "greater": 6226494 },
15
+ {"year": 1911, "inner": 4997741, "outer": 2160134, "greater": 7157875 },
16
+ {"year": 1921, "inner": 4936803, "outer": 2616723, "greater": 7553526 },
17
+ {"year": 1931, "inner": 4887932, "outer": 3211010, "greater": 8098942 },
18
+ {"year": 1941, "inner": 4224135, "outer": 3763801, "greater": 7987936 },
19
+ {"year": 1951, "inner": 3680821, "outer": 4483595, "greater": 8164416 },
20
+ {"year": 1961, "inner": 3336557, "outer": 4444785, "greater": 7781342 },
21
+ {"year": 1971, "inner": 3030490, "outer": 4418694, "greater": 7449184 },
22
+ {"year": 1981, "inner": 2425534, "outer": 4182979, "greater": 6608513 },
23
+ {"year": 1991, "inner": 2625245, "outer": 4262035, "greater": 6887280 },
24
+ {"year": 2001, "inner": 2765975, "outer": 4406061, "greater": 7172036 },
25
+ {"year": 2011, "inner": 3231900, "outer": 4942100, "greater": 8173900 },
26
+ ].map{|o| OpenStruct.new(o)}
@@ -0,0 +1,55 @@
1
+ require "ostruct"
2
+
3
+ ManVsHorse = [
4
+ [2016, "Horse", "Lindsey Walters", "Deliva Crianza", "2:17:58", "Ross MacDonald", "2:37:51"],
5
+ [2015, "Horse", "Geoffrey Allen", "Leo", "2:20:46", "Hugh Aggleton", "2:30:35"],
6
+ [2014, "Horse", "Geoffrey Allen", "Leo", "2:22:53", "Jonathan Albon", "2:42:49"],
7
+ [2013, "Horse", "Beti Gordon", "Next in line Grangeway", "2:18:03", "Hugh Aggleton", "2:46:25"],
8
+ [2012, "Horse", "Iola Evans", "Rheidol Star", "2:00:51", "Huw Lobb", "2:25:57"],
9
+ [2011, "Horse", "Beti Gordon", "Next in line Grangeway", "2:08:37", "Charlie Pearson", "2:25:45"],
10
+ [2010, "Horse", "Llinos Mair Jones", "Sly Dai", "2:07:04", "Haggai Chepkwony", "2:17:27"],
11
+ [2009, "Horse", "Geoffrey Allen", "Dukes Touch of Fun", "2:11:43", "Martin Cox", "2:20:02"],
12
+ [2008, "Horse", "Geoffrey Allen", "Dukes Touch of Fun", "2:18:13", "John Macfarlane", "2:18:43"],
13
+ [2007, "Human", "Geoffrey Allen", "Lucy", "2:31:26", "Florian Holzinger", "2:20:30"],
14
+ [2006, "Horse", "Denise Meldrum", "Tarran Bay", "2:10:29", "Haggai Chepkwony", "2:19:06"],
15
+ [2005, "Horse", "Lise Cooke", "Gifted Lady", "2:19:11", "Stephen Goulding", "2:33:22"],
16
+ [2004, "Human", "Zoe White", "Kay Bee Jay", "2:07:36", "Huw Lobb", "2:05:19"],
17
+ [2003, "Horse", "Robyn Petrie-Ritchie", "Druimguiga Shemal", "2:02:01", "Mark Croasdale", "2:19:02"],
18
+ [2002, "Horse", "Robyn Petrie-Ritchie", "Druimguiga Shemal", "2:02:23", "James McQueen", "2:18:52"],
19
+ [2001, "Horse", "Heather Evans", "Royal Mikado", "2:08:06", "Martin Cox", "2:17:17"],
20
+ [2000, "Horse", "Heather Evans", "Royal Mikado", "2:08", "Mark Croasdale", "2:10"],
21
+ [1999, "Horse", "Jackie Gilmour", "Ruama", "1:58", "Mark Palmer", "2:16"],
22
+ [1998, "Horse", "Jackie Gilmour", "Ruama", "1:46", "Stuart Major", "2:16"],
23
+ [1997, "Horse", "Megan Lewis", "unknown", "1:52", "Paul Cadwallader", "2:09"],
24
+ [1996, "Horse", "Ken Mapp", "Ahmaar", "1:57", "Mark Palmer", "2:12"],
25
+ [1995, "Horse", "Ken Mapp", "Ahmaar", "1:57", "Paul Cadwallader", "2:06"],
26
+ [1994, "Horse", "Celia Tymons", "Eskalabar", "1:52", "Mark Croasdale", "2:09"],
27
+ [1993, "Horse", "John Hudson", "unknown", "1:47", "Robin Bergstrand", "2:03"],
28
+ [1992, "Horse", "Zoe Jennings", "Hussar", "1:38", "Derek Green", "2:09"],
29
+ [1991, "Horse", "Zoe Jennings", "Hussar", "1:30", "Mark Croasdale", "2:05"],
30
+ [1990, "Horse", "Ray Jenkins", "The Doid", "1:36", "Glyn Williams", "2:07"],
31
+ [1989, "Horse", "Ray Jenkins", "The Doid", "1:54", "Mark Croasdale", "2:10"],
32
+ [1988, "Horse", "John Davies", "Mavies", "1:47", "Mark Croasdale", "2:08"],
33
+ [1987, "Horse", "Ray Jenkins", "The Doid", "1:32", "Paul Wheeler", "1:57"],
34
+ [1986, "Horse", "Nia Tudno-Jones", "Jenny", "1:44", "Fuselier Hughes", "2:08"],
35
+ [1985, "Horse", "Nia Tudno-Jones", "Jenny", "1:40", "David Woodhead", "2:08"],
36
+ [1984, "Horse", "William Jones", "Solitaire", "1:20", "David Woodhead", "2:05"],
37
+ [1983, "Horse", "Ann Thomas", "Nutmeg", "1:26", "Dic Evans", "2:02"],
38
+ [1982, "Horse", "Sue Thomas", "Simon", "2:06", "Paul Brownson", "2:10"],
39
+ [1981, "Horse", "Clive Powell", "Sultan", "2:02", "Dic Evans", "2:24"],
40
+ [1980, "Horse", "Glyn Jones", "Solomon", "1:27", "Dic Evans", "2:10"],
41
+ ].map{|y,w,rn,hn,ht,mn,mt|
42
+ h,m,s = ht.split(":").map(&:to_i)
43
+ ht = h*60+m+(s||0)
44
+ h,m,s = mt.split(":").map(&:to_i)
45
+ mt = h*60+m+(s||0)
46
+ OpenStruct.new(
47
+ year: y,
48
+ winner: w,
49
+ rider: rn,
50
+ horse: hn,
51
+ horse_time: ht,
52
+ human: mn,
53
+ human_time: mt,
54
+ )
55
+ }
@@ -0,0 +1,96 @@
1
+ require "ostruct"
2
+
3
+ # As of AER
4
+ MtgModernColors = [
5
+ [0, "b", 3],
6
+ [0, "g", 1],
7
+ [0, "r", 2],
8
+ [0, "u", 3],
9
+ [0, "w", 2],
10
+ [0, "x", 29],
11
+ [1, "b", 180],
12
+ [1, "g", 198],
13
+ [1, "m", 35],
14
+ [1, "r", 203],
15
+ [1, "u", 161],
16
+ [1, "w", 215],
17
+ [1, "x", 148],
18
+ [2, "b", 293],
19
+ [2, "g", 324],
20
+ [2, "m", 237],
21
+ [2, "r", 303],
22
+ [2, "u", 332],
23
+ [2, "w", 392],
24
+ [2, "x", 266],
25
+ [3, "b", 364],
26
+ [3, "g", 344],
27
+ [3, "m", 287],
28
+ [3, "r", 369],
29
+ [3, "u", 344],
30
+ [3, "w", 347],
31
+ [3, "x", 328],
32
+ [4, "b", 300],
33
+ [4, "g", 293],
34
+ [4, "m", 225],
35
+ [4, "r", 316],
36
+ [4, "u", 311],
37
+ [4, "w", 299],
38
+ [4, "x", 201],
39
+ [5, "b", 225],
40
+ [5, "g", 214],
41
+ [5, "m", 205],
42
+ [5, "r", 202],
43
+ [5, "u", 197],
44
+ [5, "w", 182],
45
+ [5, "x", 109],
46
+ [6, "b", 119],
47
+ [6, "g", 120],
48
+ [6, "m", 116],
49
+ [6, "r", 125],
50
+ [6, "u", 115],
51
+ [6, "w", 87],
52
+ [6, "x", 77],
53
+ [7, "b", 48],
54
+ [7, "g", 58],
55
+ [7, "m", 47],
56
+ [7, "r", 36],
57
+ [7, "u", 42],
58
+ [7, "w", 45],
59
+ [7, "x", 44],
60
+ [8, "b", 12],
61
+ [8, "g", 23],
62
+ [8, "m", 20],
63
+ [8, "r", 16],
64
+ [8, "u", 11],
65
+ [8, "w", 10],
66
+ [8, "x", 18],
67
+ [9, "b", 8],
68
+ [9, "g", 5],
69
+ [9, "r", 6],
70
+ [9, "u", 8],
71
+ [9, "w", 5],
72
+ [9, "x", 9],
73
+ [10, "b", 2],
74
+ [10, "g", 2],
75
+ [10, "m", 2],
76
+ [10, "r", 2],
77
+ [10, "u", 8],
78
+ [10, "w", 2],
79
+ [10, "x", 6],
80
+ [11, "g", 1],
81
+ [11, "u", 1],
82
+ [11, "x", 6],
83
+ [12, "m", 1],
84
+ [12, "u", 1],
85
+ [12, "x", 2],
86
+ [13, "x", 1],
87
+ [14, "u", 1],
88
+ [15, "m", 1],
89
+ [15, "x", 1],
90
+ ].map do |cmc, color, count|
91
+ OpenStruct.new(
92
+ cmc: cmc,
93
+ color: color,
94
+ count: count,
95
+ )
96
+ end
@@ -0,0 +1,116 @@
1
+ require "ostruct"
2
+
3
+ # As of AER
4
+ # get rid of all *-cards
5
+ MtgModernCreatures = [
6
+ [-1, -1, 1],
7
+ [-1, 3, 1],
8
+ ["*", "*", 70],
9
+ ["*", 1, 2],
10
+ ["*", "1+*", 2],
11
+ ["*", 3, 3],
12
+ ["*", 4, 1],
13
+ ["*", 5, 1],
14
+ [0, "*", 1],
15
+ [0, 0, 86],
16
+ [0, 1, 47],
17
+ [0, 2, 32],
18
+ [0, 3, 42],
19
+ [0, 4, 41],
20
+ [0, 5, 18],
21
+ [0, 6, 9],
22
+ [0, 7, 2],
23
+ [0, 8, 2],
24
+ [0, 13, 2],
25
+ [1, 1, 757],
26
+ [1, 2, 178],
27
+ [1, 3, 147],
28
+ [1, 4, 70],
29
+ [1, 5, 23],
30
+ [1, 6, 4],
31
+ [1, 7, 2],
32
+ [1, 8, 1],
33
+ ["1+*", "1+*", 1],
34
+ [2, "*", 1],
35
+ [2, 0, 1],
36
+ [2, 1, 423],
37
+ [2, 2, 956],
38
+ [2, 3, 271],
39
+ [2, 4, 111],
40
+ [2, 5, 35],
41
+ [2, 6, 5],
42
+ [2, 7, 3],
43
+ [2, 8, 2],
44
+ [2, 10, 1],
45
+ [3, 1, 111],
46
+ [3, 2, 219],
47
+ [3, 3, 532],
48
+ [3, 4, 121],
49
+ [3, 5, 49],
50
+ [3, 6, 17],
51
+ [3, 7, 4],
52
+ [3, 8, 1],
53
+ [4, 1, 31],
54
+ [4, 2, 53],
55
+ [4, 3, 106],
56
+ [4, 4, 338],
57
+ [4, 5, 75],
58
+ [4, 6, 27],
59
+ [4, 7, 7],
60
+ [4, 8, 1],
61
+ [4, 9, 2],
62
+ [5, 1, 11],
63
+ [5, 2, 16],
64
+ [5, 3, 40],
65
+ [5, 4, 77],
66
+ [5, 5, 203],
67
+ [5, 6, 34],
68
+ [5, 7, 17],
69
+ [5, 8, 3],
70
+ [5, 9, 1],
71
+ [6, 1, 8],
72
+ [6, 2, 4],
73
+ [6, 3, 8],
74
+ [6, 4, 32],
75
+ [6, 5, 31],
76
+ [6, 6, 125],
77
+ [6, 7, 8],
78
+ [6, 8, 2],
79
+ [6, 9, 1],
80
+ [7, 2, 3],
81
+ [7, 3, 1],
82
+ [7, 4, 5],
83
+ [7, 5, 7],
84
+ [7, 6, 13],
85
+ [7, 7, 47],
86
+ [7, 8, 2],
87
+ [7, 10, 1],
88
+ [7, 11, 2],
89
+ [8, 0, 1],
90
+ [8, 4, 1],
91
+ [8, 5, 3],
92
+ [8, 7, 1],
93
+ [8, 8, 30],
94
+ [8, 9, 1],
95
+ [9, 5, 1],
96
+ [9, 7, 2],
97
+ [9, 8, 1],
98
+ [9, 9, 11],
99
+ [9, 10, 1],
100
+ [9, 14, 1],
101
+ [10, 2, 1],
102
+ [10, 8, 1],
103
+ [10, 9, 1],
104
+ [10, 10, 13],
105
+ [11, 9, 1],
106
+ [11, 11, 4],
107
+ [12, 12, 3],
108
+ [13, 13, 5],
109
+ [15, 15, 2],
110
+ ].map do |p,t,c|
111
+ OpenStruct.new(
112
+ power: p,
113
+ toughness: t,
114
+ count: c,
115
+ )
116
+ end.select{|cg| cg.power.is_a?(Integer) and cg.toughness.is_a?(Integer) }
@@ -0,0 +1,100 @@
1
+ require "ostruct"
2
+
3
+ Olympics2016Medals = [
4
+ ["United States", "USA", 46, 37, 38],
5
+ ["Great Britain", "GBR", 27, 23, 17],
6
+ ["China", "CHN", 26, 18, 26],
7
+ ["Russia", "RUS", 19, 17, 19],
8
+ ["Germany", "GER", 17, 10, 15],
9
+ ["Japan", "JPN", 12, 8, 21],
10
+ ["France", "FRA", 10, 18, 14],
11
+ ["South Korea", "KOR", 9, 3, 9],
12
+ ["Italy", "ITA", 8, 12, 8],
13
+ ["Australia", "AUS", 8, 11, 10],
14
+ ["Netherlands", "NED", 8, 7, 4],
15
+ ["Hungary", "HUN", 8, 3, 4],
16
+ ["Brazil", "BRA", 7, 6, 6],
17
+ ["Spain", "ESP", 7, 4, 6],
18
+ ["Kenya", "KEN", 6, 6, 1],
19
+ ["Jamaica", "JAM", 6, 3, 2],
20
+ ["Croatia", "CRO", 5, 3, 2],
21
+ ["Cuba", "CUB", 5, 2, 4],
22
+ ["New Zealand", "NZL", 4, 9, 5],
23
+ ["Canada", "CAN", 4, 3, 15],
24
+ ["Uzbekistan", "UZB", 4, 2, 7],
25
+ ["Kazakhstan", "KAZ", 3, 5, 9],
26
+ ["Colombia", "COL", 3, 2, 3],
27
+ ["Switzerland", "SUI", 3, 2, 2],
28
+ ["Iran", "IRI", 3, 1, 4],
29
+ ["Greece", "GRE", 3, 1, 2],
30
+ ["Argentina", "ARG", 3, 1, 0],
31
+ ["Denmark", "DEN", 2, 6, 7],
32
+ ["Sweden", "SWE", 2, 6, 3],
33
+ ["South Africa", "RSA", 2, 6, 2],
34
+ ["Ukraine", "UKR", 2, 5, 4],
35
+ ["Serbia", "SRB", 2, 4, 2],
36
+ ["Poland", "POL", 2, 3, 6],
37
+ ["North Korea", "PRK", 2, 3, 2],
38
+ ["Belgium", "BEL", 2, 2, 2],
39
+ ["Thailand", "THA", 2, 2, 2],
40
+ ["Slovakia", "SVK", 2, 2, 0],
41
+ ["Georgia", "GEO", 2, 1, 4],
42
+ ["Azerbaijan", "AZE", 1, 7, 10],
43
+ ["Belarus", "BLR", 1, 4, 4],
44
+ ["Turkey", "TUR", 1, 3, 4],
45
+ ["Armenia", "ARM", 1, 3, 0],
46
+ ["Czech Republic", "CZE", 1, 2, 7],
47
+ ["Ethiopia", "ETH", 1, 2, 5],
48
+ ["Slovenia", "SLO", 1, 2, 1],
49
+ ["Indonesia", "INA", 1, 2, 0],
50
+ ["Romania", "ROU", 1, 1, 2],
51
+ ["Bahrain", "BRN", 1, 1, 0],
52
+ ["Vietnam", "VIE", 1, 1, 0],
53
+ ["Chinese Taipei", "TPE", 1, 0, 2],
54
+ ["Bahamas", "BAH", 1, 0, 1],
55
+ ["Côte d'Ivoire", "CIV", 1, 0, 1],
56
+ ["Independent", "IOA", 1, 0, 1],
57
+ ["Fiji", "FIJ", 1, 0, 0],
58
+ ["Jordan", "JOR", 1, 0, 0],
59
+ ["Kosovo", "KOS", 1, 0, 0],
60
+ ["Puerto Rico", "PUR", 1, 0, 0],
61
+ ["Singapore", "SIN", 1, 0, 0],
62
+ ["Tajikistan", "TJK", 1, 0, 0],
63
+ ["Malaysia", "MAS", 0, 4, 1],
64
+ ["Mexico", "MEX", 0, 3, 2],
65
+ ["Algeria", "ALG", 0, 2, 0],
66
+ ["Ireland", "IRL", 0, 2, 0],
67
+ ["Lithuania", "LTU", 0, 1, 3],
68
+ ["Bulgaria", "BUL", 0, 1, 2],
69
+ ["Venezuela", "VEN", 0, 1, 2],
70
+ ["India", "IND", 0, 1, 1],
71
+ ["Mongolia", "MGL", 0, 1, 1],
72
+ ["Burundi", "BDI", 0, 1, 0],
73
+ ["Grenada", "GRN", 0, 1, 0],
74
+ ["Niger", "NIG", 0, 1, 0],
75
+ ["Philippines", "PHI", 0, 1, 0],
76
+ ["Qatar", "QAT", 0, 1, 0],
77
+ ["Norway", "NOR", 0, 0, 4],
78
+ ["Egypt", "EGY", 0, 0, 3],
79
+ ["Tunisia", "TUN", 0, 0, 3],
80
+ ["Israel", "ISR", 0, 0, 2],
81
+ ["Austria", "AUT", 0, 0, 1],
82
+ ["Dominican Republic", "DOM", 0, 0, 1],
83
+ ["Estonia", "EST", 0, 0, 1],
84
+ ["Finland", "FIN", 0, 0, 1],
85
+ ["Morocco", "MAR", 0, 0, 1],
86
+ ["Moldova", "MDA", 0, 0, 1],
87
+ ["Nigeria", "NGR", 0, 0, 1],
88
+ ["Portugal", "POR", 0, 0, 1],
89
+ ["Trinidad and Tobago", "TTO", 0, 0, 1],
90
+ ["United Arab Emirates", "UAE", 0, 0, 1],
91
+ ].map{|n,a,g,s,b|
92
+ OpenStruct.new(
93
+ name: n,
94
+ acronym: a,
95
+ gold: g,
96
+ silver: s,
97
+ bronze: b,
98
+ total: g+s+b,
99
+ )
100
+ }