scavenger 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +82 -0
  4. data/Rakefile +28 -0
  5. data/lib/scavenger.rb +15 -0
  6. data/lib/scavenger/compressor.rb +70 -0
  7. data/lib/scavenger/config.rb +12 -0
  8. data/lib/scavenger/version.rb +3 -0
  9. data/lib/scavenger/view_helpers.rb +22 -0
  10. data/lib/tasks/scavenger_tasks.rake +4 -0
  11. data/test/dummy/README.rdoc +28 -0
  12. data/test/dummy/Rakefile +6 -0
  13. data/test/dummy/app/assets/javascripts/application.js +13 -0
  14. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  15. data/test/dummy/app/assets/svg/hejsna.svg +16 -0
  16. data/test/dummy/app/assets/svg/thing.svg +31 -0
  17. data/test/dummy/app/controllers/application_controller.rb +5 -0
  18. data/test/dummy/app/controllers/welcome_controller.rb +3 -0
  19. data/test/dummy/app/helpers/application_helper.rb +2 -0
  20. data/test/dummy/app/views/layouts/application.html.erb +16 -0
  21. data/test/dummy/app/views/welcome/index.html.erb +3 -0
  22. data/test/dummy/bin/bundle +3 -0
  23. data/test/dummy/bin/rails +4 -0
  24. data/test/dummy/bin/rake +4 -0
  25. data/test/dummy/bin/setup +29 -0
  26. data/test/dummy/config.ru +4 -0
  27. data/test/dummy/config/application.rb +34 -0
  28. data/test/dummy/config/boot.rb +5 -0
  29. data/test/dummy/config/environment.rb +5 -0
  30. data/test/dummy/config/environments/development.rb +41 -0
  31. data/test/dummy/config/environments/production.rb +79 -0
  32. data/test/dummy/config/environments/test.rb +42 -0
  33. data/test/dummy/config/initializers/assets.rb +11 -0
  34. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  35. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  36. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  37. data/test/dummy/config/initializers/inflections.rb +16 -0
  38. data/test/dummy/config/initializers/mime_types.rb +4 -0
  39. data/test/dummy/config/initializers/scavenger.rb +2 -0
  40. data/test/dummy/config/initializers/session_store.rb +3 -0
  41. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  42. data/test/dummy/config/locales/en.yml +23 -0
  43. data/test/dummy/config/routes.rb +3 -0
  44. data/test/dummy/config/secrets.yml +22 -0
  45. data/test/dummy/log/test.log +3171 -0
  46. data/test/dummy/public/404.html +67 -0
  47. data/test/dummy/public/422.html +67 -0
  48. data/test/dummy/public/500.html +66 -0
  49. data/test/dummy/public/favicon.ico +0 -0
  50. data/test/dummy/tmp/cache/assets/sprockets/v3.0/-H/-HqbbfU0xcEJDTxWfLUwg4CHKddeND3q6UVFsh5Si_U.cache +1 -0
  51. data/test/dummy/tmp/cache/assets/sprockets/v3.0/-U/-U_dM-L9LbHNJZIgTkRfkuKCZmM383uKGVLpowFlUWQ.cache +3 -0
  52. data/test/dummy/tmp/cache/assets/sprockets/v3.0/-X/-XIkc5RT094TnZLk-Bx1VeBlhPNiDcbR8xKuvMWYg4g.cache +5 -0
  53. data/test/dummy/tmp/cache/assets/sprockets/v3.0/11/11izQccDDdFX41-0W9soseHqn6Gnsp5eXQUBekw0w00.cache +1 -0
  54. data/test/dummy/tmp/cache/assets/sprockets/v3.0/1o/1oh-D7lF9NVZVT3A4Ke5-TFajlRvURXe2OPPBPZqMUg.cache +3 -0
  55. data/test/dummy/tmp/cache/assets/sprockets/v3.0/25/25maOm_ns9nLIHyiI4f_tf4wYwBPoq8gAvpSX9V4ge8.cache +2 -0
  56. data/test/dummy/tmp/cache/assets/sprockets/v3.0/2G/2GKmKzQSIIALMgYslznKJEr-pXCza0znjBmmqTCVjgo.cache +5 -0
  57. data/test/dummy/tmp/cache/assets/sprockets/v3.0/2r/2rbhR-ZHCA26TK7wMgaQ-43T-wZLyA0owLShzIxEWuk.cache +4 -0
  58. data/test/dummy/tmp/cache/assets/sprockets/v3.0/34/348WFNzOMxpgDI8iNz2i5urtOQitXtYJIGuHsfr4014.cache +1 -0
  59. data/test/dummy/tmp/cache/assets/sprockets/v3.0/5F/5F2E3R3qgH5T2ZoN1FWgFnQmM365fKQe0g9EbWyGnQM.cache +1 -0
  60. data/test/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +2 -0
  61. data/test/dummy/tmp/cache/assets/sprockets/v3.0/6N/6NY324sAsWts7o2vwWeN0aXOWuuyKM9zuzO0c2eKLZc.cache +6 -0
  62. data/test/dummy/tmp/cache/assets/sprockets/v3.0/7O/7OXjjKt0Z3xAjPdz99P7K2ILtSY-pj3ur0J1JvZuAHI.cache +3 -0
  63. data/test/dummy/tmp/cache/assets/sprockets/v3.0/7x/7xjcSFxgDSCrJMkPDLL-u6HY4hQbXc0Hzk0efhSnk64.cache +4 -0
  64. data/test/dummy/tmp/cache/assets/sprockets/v3.0/8O/8ObXUvh9D_nHhKqXK6ABwrG1kz2aRnb3rGzDZKwfyVI.cache +4 -0
  65. data/test/dummy/tmp/cache/assets/sprockets/v3.0/8n/8nsCSYjv5XHXLcA0afPuGbdseM7SuTmmWKV1nCrk4r4.cache +1 -0
  66. data/test/dummy/tmp/cache/assets/sprockets/v3.0/8x/8xhjdhp1eijzIzvWEtv1s5PePR_c8blbEE1sjKYMKPw.cache +2 -0
  67. data/test/dummy/tmp/cache/assets/sprockets/v3.0/98/98GuWujwu8Qf96txyyw5eTFnH5LVt-IcXaYV9hWq1aU.cache +2 -0
  68. data/test/dummy/tmp/cache/assets/sprockets/v3.0/99/99plte_Tg2iiF3VZZ_DzZwanFS6BvFUfkgWlqCdmleU.cache +4 -0
  69. data/test/dummy/tmp/cache/assets/sprockets/v3.0/9s/9s6SDFrpwRn_oY_Vi1oR6WZNU09ubMW73COpZY5Rtf0.cache +1 -0
  70. data/test/dummy/tmp/cache/assets/sprockets/v3.0/9u/9uZR0qxSChIwkuOttRtYVWRCBuahCACYcqaPhI4o-Ro.cache +1 -0
  71. data/test/dummy/tmp/cache/assets/sprockets/v3.0/AK/AKUIAk7bmGCulWb0gNeSKzDmh57iSAcDuD0--UJMAa8.cache +1 -0
  72. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ae/AeGKzMpQNBMxA6gXi_zJ3BOc7MqOIcOKP5-kh6lT4yw.cache +1 -0
  73. data/test/dummy/tmp/cache/assets/sprockets/v3.0/BC/BC_MecqW6bPoz0C9IUmS3GAcdZrXP_ug9YH7Kw1vN_w.cache +1 -0
  74. data/test/dummy/tmp/cache/assets/sprockets/v3.0/C4/C439mq43l7yTi_NG2JVgM5crLZGT2mH7BWYa0U1L8vA.cache +2 -0
  75. data/test/dummy/tmp/cache/assets/sprockets/v3.0/CD/CDQwlcBfGvlM1IzCLj_3WklFp44N6J-gTAlfdsyP6ws.cache +2 -0
  76. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Cz/CZMRfdmWKqMJU9RD0twbl62L4CHkaKvPcionwcTeaPY.cache +1 -0
  77. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Cz/CzBbMjpUVeDyH-t49_4iBLSjHsfoC5U5VfkLuURYHiA.cache +1 -0
  78. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Dq/DqF4msXGrg8D1zFiR5oCNIygUO9BVcnhKfWitu_QhUo.cache +3 -0
  79. data/test/dummy/tmp/cache/assets/sprockets/v3.0/El/ElXVJKVUyx7wZtChp6_PiHsJ_uoljEal6Ga5IR-iRkc.cache +1 -0
  80. data/test/dummy/tmp/cache/assets/sprockets/v3.0/FN/FNbIIgXbC_eTM5R6lUgQ4MAZeZz7a7iOsEI59tKi9Tc.cache +1 -0
  81. data/test/dummy/tmp/cache/assets/sprockets/v3.0/G-/G-pL8xR7OSZ9EfTgqN9eWzjPAUO5uGy1s5LPA79cTa0.cache +4 -0
  82. data/test/dummy/tmp/cache/assets/sprockets/v3.0/GY/GYTIgygclYPTMz-qWUtfjBLYsdfmD-f-d4s6biK_w7Q.cache +2 -0
  83. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Gd/GdUOtQlWxrcatwpnsG71FEhWUXBGSCeg_KFVhICX7WM.cache +1 -0
  84. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Gk/Gk4fpCDRXeS8W9uUc3BgMEDEjmJoZ-Nqg-SrPtAnqvI.cache +1 -0
  85. data/test/dummy/tmp/cache/assets/sprockets/v3.0/I0/I0o3NaDD4aODBXGZgYZ1R8gQYkBUbpagqoNPduxjs_8.cache +3 -0
  86. data/test/dummy/tmp/cache/assets/sprockets/v3.0/I3/I3w40ud22J2dvAZsikqd4y9etnWp5z3tFZ50bMLt9aA.cache +1 -0
  87. data/test/dummy/tmp/cache/assets/sprockets/v3.0/I7/I7WyZQ32i6kx0fg7Ce4dKJV64UT7ocQqiNVfBQaaCG4.cache +5 -0
  88. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Je/JewGvPxcszuYsSjQoKXxzJIRvvZv-uCLMZW3vMf1V8Y.cache +2 -0
  89. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Jq/JqOJW1VYktU0ktLRM3UiCrPV-VSOVRCoy_Jllcvg3cY.cache +3 -0
  90. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Jx/Jx4pqkuinO3CkdllQpCrdTowH3zl6HSLDffXnH39uOY.cache +3 -0
  91. data/test/dummy/tmp/cache/assets/sprockets/v3.0/KC/KCyuFn9GRT1T8Fb2QASGqSjQEKiwyI0Lz7_a3oI6oHc.cache +2 -0
  92. data/test/dummy/tmp/cache/assets/sprockets/v3.0/KZ/KZyxio0yOsOfb3ZhjZ0QwTn2I23pWNc4i6IDaObLS4Y.cache +1 -0
  93. data/test/dummy/tmp/cache/assets/sprockets/v3.0/LK/LKi-YtI10nTnwAZ9tGA0mycT_RK06P4Wbsup2mz_m-4.cache +1 -0
  94. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ly/LyC39AHA8MwZpDthVN0AlUdId0AI95jXHzZ1n5Gi7MY.cache +2 -0
  95. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Mb/Mbe8cv5zaE0f3oIz0YESxHx057YFVmowkRkY0t5x7F0.cache +5 -0
  96. data/test/dummy/tmp/cache/assets/sprockets/v3.0/NP/NPfOJLBKf3qawiTr5TsMx_6hQ47bmq-v6oMvAa1hDR8.cache +1 -0
  97. data/test/dummy/tmp/cache/assets/sprockets/v3.0/NP/npSJTXQnTsAcxpKg1GF0SvIJdHwr6dZhfeb_iE-T-qM.cache +1 -0
  98. data/test/dummy/tmp/cache/assets/sprockets/v3.0/NY/NY2ITQsQhlGmpv_XYpBzY0bkYsoX9EnX2y6A4IA9y9w.cache +1 -0
  99. data/test/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +2 -0
  100. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ON/ONXM0yfYond9SL_ERL5_h2PYWRoxI7MB7dh8Wgux2kI.cache +2 -0
  101. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Of/Of3KRAbBZnkIAImLO3o_jYYgztAs8dP0tgW85lrJLJY.cache +2 -0
  102. data/test/dummy/tmp/cache/assets/sprockets/v3.0/PM/PMFPGGsBq5NLwHjlR5DDyVNsOTxyv3RNh4LJLTJsiUc.cache +3 -0
  103. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Pc/PcWIHtJvZlo6ITsS6eJhNsnQarnW4-vs9EIFm0XkdmY.cache +1 -0
  104. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Pi/Pi7h_0clH-Punlu8yw_srmwHyc5VRE72bPMQNDxGgbE.cache +2 -0
  105. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Pz/PzzfYC4OG_ObJ7byTmeaqyk9P_lgcdtqKWafD5LWXQY.cache +1 -0
  106. data/test/dummy/tmp/cache/assets/sprockets/v3.0/QD/QDSurvjtF1BrJX-aLTJlFtYhxoWPRfqqx0Mn1OrZsnw.cache +1 -0
  107. data/test/dummy/tmp/cache/assets/sprockets/v3.0/QP/QPznaEgVvMxnva5VmM_zC3cOGzjs4-eXRJn-QTitsMk.cache +1 -0
  108. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Qi/QiQRRt1rzEMBbDSoPEB86n_6vuK-exu5nvlvb93-8Ds.cache +1 -0
  109. data/test/dummy/tmp/cache/assets/sprockets/v3.0/RT/RT_IsNMQJK8QZtK46K7XcIykfX7iJcij4HyuXt2sElM.cache +2 -0
  110. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Rw/RwK5VPS0ZWb2FtPpBy6hpaa3RdhtbYJnW0Y9m777fq0.cache +3 -0
  111. data/test/dummy/tmp/cache/assets/sprockets/v3.0/SC/SCLYM9c1ukultsOsftGAbV2Vo7oWX1K5FGQDGWFbAjM.cache +0 -0
  112. data/test/dummy/tmp/cache/assets/sprockets/v3.0/SU/SUVVA6yRljhAxtRtbpyqKrAmLkX_coZf-bAhQMaz_is.cache +3 -0
  113. data/test/dummy/tmp/cache/assets/sprockets/v3.0/T9/T9FoDi_hol-MZ-P0QSqGiu4GkCmIIwERSGNOrL9Fjh8.cache +1 -0
  114. data/test/dummy/tmp/cache/assets/sprockets/v3.0/TA/TAXPWAOlG0yeyBDPEX6CbnmeFGobbw69rqy71da0-g0.cache +1 -0
  115. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Ts/TsREWCSUnRzZFQgj2dEgXUBNmUAT2S48RVAedogYW3M.cache +3 -0
  116. data/test/dummy/tmp/cache/assets/sprockets/v3.0/UE/UE_MaxEM9CHQcUIJULCNMZFXY2gh_0ZYEO1x-nvo0Ws.cache +2 -0
  117. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Uq/UqNMiop_l1QyuKMZReAXM9PpKiSSyX0K_fdxQEUt9YM.cache +3 -0
  118. data/test/dummy/tmp/cache/assets/sprockets/v3.0/V-/V-DwZpVv3uJ5fYwK0OkcmlmIHzLRNReULGZHxd3Bm3o.cache +1 -0
  119. data/test/dummy/tmp/cache/assets/sprockets/v3.0/WA/WAzmKG5FTHG-fX5IgbQQjlQz71VskqHqWgPlu7LDRwg.cache +1 -0
  120. data/test/dummy/tmp/cache/assets/sprockets/v3.0/WK/WKpE8UdXlizp-Ww_7pv6b8vzT6VatGaJ1Vzm0nlyAOQ.cache +2 -0
  121. data/test/dummy/tmp/cache/assets/sprockets/v3.0/WR/WR2xUEZg8ZzbIiT1c5zn5_l1Ow8UQmFEnMgce23smzk.cache +1 -0
  122. data/test/dummy/tmp/cache/assets/sprockets/v3.0/WY/WYVUNGREkk20SrlLAxmiHYYwLyLUB-geRUK-GdeEL1w.cache +2 -0
  123. data/test/dummy/tmp/cache/assets/sprockets/v3.0/XC/XCAEpFovv21-TgsbmyI-NRSgt4i9htFPx-qIhLGSXso.cache +1 -0
  124. data/test/dummy/tmp/cache/assets/sprockets/v3.0/X_/X_XEor98WN1KgGsQLkMeimyXz1pwVkH40K6RgTPD11w.cache +1 -0
  125. data/test/dummy/tmp/cache/assets/sprockets/v3.0/YS/YSJFzCTZ7k4bznGUQBGhko471nErQpwVJJFp_HYBBdo.cache +1 -0
  126. data/test/dummy/tmp/cache/assets/sprockets/v3.0/Yz/YzywD87qy07Nl8UDE_BrZAe7Rujp-hGRgchMefkh_f0.cache +2 -0
  127. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ZP/ZP3cKucRfI64siOZ3295sYHf8mkjxwPUv_jaAyu3ag8.cache +1 -0
  128. data/test/dummy/tmp/cache/assets/sprockets/v3.0/_B/_BqN4N7Cd7GtOGg2F94sLSm4DzvL4GWoYEV6JzCjNUU.cache +1 -0
  129. data/test/dummy/tmp/cache/assets/sprockets/v3.0/_B/_byuC_ZlOnBVAgzjgIzgXx-Swz53HDeOlIsH12sEYC8.cache +5 -0
  130. data/test/dummy/tmp/cache/assets/sprockets/v3.0/_C/_COlnL_arkOWZnYmNLFGQrjgVWIZOIGnZrV5LYllOP4.cache +3 -0
  131. data/test/dummy/tmp/cache/assets/sprockets/v3.0/_S/_S3FZ5DdeuW2XcdvnLYfjFZ-0MhP7sbRhvGIQjyy87M.cache +1 -0
  132. data/test/dummy/tmp/cache/assets/sprockets/v3.0/aG/aGrkF9dVFkubtXnIvZ_kEgJ-kaGCCOtZw2nZOF7BYQM.cache +2 -0
  133. data/test/dummy/tmp/cache/assets/sprockets/v3.0/b2/b2iWoLtu1YgSEmVfG8Py57dnWPc4028NgAUpYLVwP8M.cache +3 -0
  134. data/test/dummy/tmp/cache/assets/sprockets/v3.0/c8/c8NGPLJrGOwYYnfHCM6zIqpotl49juEf-pCrwibkIfA.cache +3 -0
  135. data/test/dummy/tmp/cache/assets/sprockets/v3.0/db/dbOQICwMxvVHo74WhUwaZ_krWuLAyC9FWYVFi3EYi64.cache +2 -0
  136. data/test/dummy/tmp/cache/assets/sprockets/v3.0/dz/dzrkjMJU2cv7vFsVM_kWlebaKvi0hVwX5MBh4JGaVZQ.cache +0 -0
  137. data/test/dummy/tmp/cache/assets/sprockets/v3.0/eZ/eZmtkxcD8zWwlTmMuNIQ8ohN1mNF65yxKpydpBb6EG0.cache +0 -0
  138. data/test/dummy/tmp/cache/assets/sprockets/v3.0/en/enZKX7_BXYbLay1iUItH0mID3HUiFGTPUHwDp8pvEW8.cache +1 -0
  139. data/test/dummy/tmp/cache/assets/sprockets/v3.0/fb/fb7KUXnAajxrbaHI04zh4tF2SH7sdZ657Bhiq3sXD3w.cache +3 -0
  140. data/test/dummy/tmp/cache/assets/sprockets/v3.0/fk/fkXthHN8eEXSenLGHVE5LbRNY_IDaymFUzzSkgPu4gc.cache +5 -0
  141. data/test/dummy/tmp/cache/assets/sprockets/v3.0/g2/g2YGG8q3Znp8HJDmvBNKvXzOSw0N7YLx0c8tmwWo41E.cache +1 -0
  142. data/test/dummy/tmp/cache/assets/sprockets/v3.0/g7/g7nzIpLeHaaI305Y_gDkIhdvrUB6L8OOGVyo_0qxCQ0.cache +3 -0
  143. data/test/dummy/tmp/cache/assets/sprockets/v3.0/gB/gBb2UrDwoTf660QLvf3cMRkIlyMqB_Dhv--dy7V9qqg.cache +4 -0
  144. data/test/dummy/tmp/cache/assets/sprockets/v3.0/hS/hS2z78kNWKL742oRFA2iYCpkxbFm3DKU99rnNsfv8CY.cache +0 -0
  145. data/test/dummy/tmp/cache/assets/sprockets/v3.0/hZ/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache +2 -0
  146. data/test/dummy/tmp/cache/assets/sprockets/v3.0/hj/hjeSBmoKHSPJnoOy0B2FESHA5wyW4txeU5Q_3eZB0Cg.cache +1 -0
  147. data/test/dummy/tmp/cache/assets/sprockets/v3.0/hu/huI6bPDA-mhQ2xQX0IAH8_39y_6xjDcdZPARPyFZw6M.cache +2 -0
  148. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ii/IiC7EB9IjQhNa39duWC22zpxw0e3BxghOteX3SolBEQ.cache +1 -0
  149. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ii/iigHc6vqt9K7psybIJL1KHRE7fgsLy2CIDuaGHbArOc.cache +1 -0
  150. data/test/dummy/tmp/cache/assets/sprockets/v3.0/iv/ivREQKqA9zJUX-Jhyfhk0O3UjpcrwIn9eQkJdoy7nXg.cache +2 -0
  151. data/test/dummy/tmp/cache/assets/sprockets/v3.0/jO/jOjfs6GPegyizYTuhefR0hoqvJe4J-fEpcYh3YhrqJ4.cache +2 -0
  152. data/test/dummy/tmp/cache/assets/sprockets/v3.0/k2/k2-aBXrB3Ke8YR2jbXOK-KL1-gFnQZA8BMyUVq6vM28.cache +2 -0
  153. data/test/dummy/tmp/cache/assets/sprockets/v3.0/kR/kR7RCcZe1MhK3VhrHTdVtDuyc_gWtwP_prnN__H-fmo.cache +1 -0
  154. data/test/dummy/tmp/cache/assets/sprockets/v3.0/kx/kxSJEkFCpkpCr2l5rnTCONAK7O4ay4bebrMIrRZpWqA.cache +1 -0
  155. data/test/dummy/tmp/cache/assets/sprockets/v3.0/lS/lSe3pxGkphIMg-nK8SjzZ8OcqeSQS2a6yQ20RYc_0dk.cache +1 -0
  156. data/test/dummy/tmp/cache/assets/sprockets/v3.0/mI/mIwUHk88xv3gKGUw7SzpwTP3rOrMFYy75WPTed7408I.cache +3 -0
  157. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ml/mlPPQ_PuZqvyjkqOxsyxf9Z9h7EUM1nVB7S_8vdwOgs.cache +1 -0
  158. data/test/dummy/tmp/cache/assets/sprockets/v3.0/my/myACPpweGSS-gMqX0YA0w0C62H9NdKsB9jDPdQz4BIE.cache +4 -0
  159. data/test/dummy/tmp/cache/assets/sprockets/v3.0/n0/n07I1L-Uce4duFJ-hAiLY4Q8-3cVeVqyYhvmJiz1sek.cache +5 -0
  160. data/test/dummy/tmp/cache/assets/sprockets/v3.0/nl/nlOXMwVK0UmpZ97HuC_aYsIeVoMiQ1JjoHuJ32it_GI.cache +2 -0
  161. data/test/dummy/tmp/cache/assets/sprockets/v3.0/oK/oKy1wHj09ucP22ifneb5B76fbj7SWiM3No58wCl49M4.cache +2 -0
  162. data/test/dummy/tmp/cache/assets/sprockets/v3.0/or/orpEqlUEMffwmNrnvkPFFjHqBHcnMsztz2_rJVIrq08.cache +2 -0
  163. data/test/dummy/tmp/cache/assets/sprockets/v3.0/pE/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache +2 -0
  164. data/test/dummy/tmp/cache/assets/sprockets/v3.0/pF/pFew-CXURmC3dAcOhoao-57JVKOQZ0F274urmW3UUJs.cache +1 -0
  165. data/test/dummy/tmp/cache/assets/sprockets/v3.0/qL/qLGDMvb5cXCVumOaFR6t4-f0ilgjiaY0Ru4jajg-xKs.cache +1 -0
  166. data/test/dummy/tmp/cache/assets/sprockets/v3.0/r5/r55LHvC-eGrLFwLE2Bw-_pHdzc_9XLvs8KR0-HtrLEk.cache +1 -0
  167. data/test/dummy/tmp/cache/assets/sprockets/v3.0/rK/rKDjyToOy-58z-Eh8VKkPFeL_88p0z3yHHYczF1esx4.cache +1 -0
  168. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ro/roMrMIDKDgzpvUYc_8Pk6DmEIXPwfVerLyA7gjmxrwg.cache +1 -0
  169. data/test/dummy/tmp/cache/assets/sprockets/v3.0/s0/s0GtL5g52-kBCSVfyEUvdOW9w5wt4Z5sW_vQSR5zPAs.cache +1 -0
  170. data/test/dummy/tmp/cache/assets/sprockets/v3.0/sb/sbX9VPvHha5S29JXbdIjbD3KKgXSRpjrKI9SL166z8Q.cache +0 -0
  171. data/test/dummy/tmp/cache/assets/sprockets/v3.0/sd/sdagZgsImDr-xAlAfGYhjidRMllEzy_27c1bSUrDbnQ.cache +1 -0
  172. data/test/dummy/tmp/cache/assets/sprockets/v3.0/tT/tTOwod4C2Nbyv-3EvABxITj2R7JJvBARNwN_NlPE32k.cache +1 -0
  173. data/test/dummy/tmp/cache/assets/sprockets/v3.0/u_/u_dsIjUu-S9yen1qOkk8zEhxGAqiauCL1xu-qxlw47g.cache +1 -0
  174. data/test/dummy/tmp/cache/assets/sprockets/v3.0/uh/uh6Ed-bFb5Dy8KwHoRyMExaoyk1h2VuOvAawRKf5f6k.cache +1 -0
  175. data/test/dummy/tmp/cache/assets/sprockets/v3.0/ut/utTarZyWOtD-F8RcUiTyXrS2uaYNlYtcAvxYUmecX00.cache +1 -0
  176. data/test/dummy/tmp/cache/assets/sprockets/v3.0/v_/v_F3lJ5kUDUp-DSzVPesW4SNq1jbWVZOH5Ih_rB3O1w.cache +1 -0
  177. data/test/dummy/tmp/cache/assets/sprockets/v3.0/vf/vfzPLinMXzNAV9xSXrpnepBKEASknUfSg-D1wvSNa58.cache +2 -0
  178. data/test/dummy/tmp/cache/assets/sprockets/v3.0/vu/vu3zBrNTODffz7MuVyx2zNiieVqB19BQbq14C-3ZxBg.cache +1 -0
  179. data/test/dummy/tmp/cache/assets/sprockets/v3.0/wB/wBk66I_z5OAYQx44c6RAhS62-qRx6w1iNSbTV3SnomU.cache +1 -0
  180. data/test/dummy/tmp/cache/assets/sprockets/v3.0/wE/wE8gMdwbbEsDgcXYGv3snKuG7vfYoMWthYSw_78ppGQ.cache +1 -0
  181. data/test/dummy/tmp/cache/assets/sprockets/v3.0/wz/wzyFAPlTzbm1ES5ryQvw5b7zeiC6tvqthmOQVKJXmRM.cache +1 -0
  182. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xE/xE-cFLL16zfAjmMhOsTo5TR9iF8v1YTfY1RLOcWQaLo.cache +1 -0
  183. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xF/xFwrnVJHHrH2is1PhpFtGKCIQU6LSQkWjv8NBMhz44s.cache +1 -0
  184. data/test/dummy/tmp/cache/assets/sprockets/v3.0/xg/xgO4MCgrxQqFOmo9IuZwbsKXtScKD7SthwwEkOCP0WI.cache +1 -0
  185. data/test/dummy/tmp/cache/assets/sprockets/v3.0/yl/yldjfgmPuMnxRkdEgAWpMwad9_XBl3cChXmwWH2wmvA.cache +1 -0
  186. data/test/dummy/tmp/cache/assets/sprockets/v3.0/z2/z210K89_gqm16e59Z2LTKG3dD-fZGXySmIJoKr7Of18.cache +2 -0
  187. data/test/dummy/tmp/cache/assets/sprockets/v3.0/zB/zByJ2MZFhhrJXoP0yxjtSZCBIn7H4q_F6Cg3s_dZn10.cache +5 -0
  188. data/test/dummy/tmp/cache/assets/sprockets/v3.0/zU/zUVLlkpK0OEVkxk0BCotALBfwznhOtcvqMY8r8swJlo.cache +4 -0
  189. data/test/dummy/tmp/cache/assets/sprockets/v3.0/zr/zrcX7wj8jDf-xZsAQ4Zdkv0Em_gr_6kO1Scvnj8DY0Q.cache +0 -0
  190. data/test/dummy/tmp/capybara/capybara-201610151235015736431907.html +19 -0
  191. data/test/dummy/tmp/capybara/capybara-201610151235481241682092.html +19 -0
  192. data/test/dummy/tmp/capybara/capybara-201610151236295081749283.html +19 -0
  193. data/test/dummy/tmp/capybara/capybara-201610151244534761297004.html +19 -0
  194. data/test/dummy/tmp/capybara/capybara-201610151247561020613886.html +19 -0
  195. data/test/dummy/tmp/capybara/capybara-201610151250216013032317.html +19 -0
  196. data/test/dummy/tmp/capybara/capybara-201610151253307213325474.html +32 -0
  197. data/test/dummy/tmp/capybara/capybara-201610151254071357816674.html +32 -0
  198. data/test/dummy/tmp/capybara/capybara-201610151254331207742056.html +19 -0
  199. data/test/dummy/tmp/capybara/capybara-201610151255247991085105.html +19 -0
  200. data/test/dummy/tmp/capybara/capybara-201610151259365054254918.html +19 -0
  201. data/test/dummy/tmp/capybara/capybara-201610151555033967150779.html +19 -0
  202. data/test/dummy/tmp/capybara/capybara-201610151600114731287846.html +19 -0
  203. data/test/dummy/tmp/capybara/capybara-201610151607304598904430.html +19 -0
  204. data/test/dummy/tmp/capybara/capybara-201610151608364573846650.html +19 -0
  205. data/test/dummy/tmp/capybara/capybara-201610151609309699514344.html +19 -0
  206. data/test/dummy/tmp/capybara/capybara-20161016123203375038998.html +19 -0
  207. data/test/dummy/tmp/capybara/capybara-201610161248574906626986.html +19 -0
  208. data/test/dummy/tmp/capybara/capybara-201610161252592076720975.html +19 -0
  209. data/test/dummy/tmp/capybara/capybara-201610161254117292204591.html +19 -0
  210. data/test/dummy/tmp/capybara/capybara-201610161255378850242089.html +19 -0
  211. data/test/dummy/tmp/capybara/capybara-201610211450328279801348.html +19 -0
  212. data/test/dummy/tmp/capybara/capybara-201610211457492054770742.html +19 -0
  213. data/test/dummy_integration_test.rb +28 -0
  214. data/test/scavenger_test.rb +32 -0
  215. data/test/svg/hejsna.svg +16 -0
  216. data/test/svg/thing.svg +31 -0
  217. data/test/test_helper.rb +34 -0
  218. metadata +525 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: db7f56756253d3ff4ceb216b29d346b13807552d
4
+ data.tar.gz: 22e76b9d3d3b99e907e646871ed4d0bcad20d4bc
5
+ SHA512:
6
+ metadata.gz: aa46f8f30d9a03b59f647fcf3b1c0120df8706693f893decde17752d71843c4cf34acf2411e35ddc21817d911254d9cf7c88bd30e6585700d53bb0e6602d5448
7
+ data.tar.gz: 2557e3fdf001e3239d1303e7b8cc870deb3b0988eccd4738debba85011c1dce98700f07b9fe230ae3f6b963e8401e3a346e633f7907dbbb5af112157cf982cf6
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2016 Johan Halse
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.md ADDED
@@ -0,0 +1,82 @@
1
+ # Scavenger
2
+
3
+ ![Version](https://img.shields.io/gem/v/scavenger.svg)
4
+ ![Build status](https://img.shields.io/travis/johanhalse/scavenger.svg)
5
+
6
+ A Rails plugin for turning a directory of svg images into a bunch of `<symbol>` tags in a sprite sheet and using them by reference. The main advantage of using `<symbol>` is that you can define a viewBox for each element, which means it's possible to reuse and resize them and still make them occupy the space you'd expect them to. A common use case would be icons.
7
+
8
+
9
+ ## Getting started
10
+
11
+ Put the gem in your `Gemfile` and run `bundle install`:
12
+ ```ruby
13
+ gem "scavenger"
14
+ ```
15
+
16
+ Create a folder called `app/assets/svg` and put your svg images there.
17
+
18
+ Add the following to `views/layouts/application.html.erb`:
19
+ ```ruby
20
+ <%= svg_sprite_sheet %>
21
+ ```
22
+
23
+ Now you can refer to your svg images by their name, so if you have `hejsna.svg` sitting in your svg directory, you can make it show up by writing `<%= svg "hejsna" %>`.
24
+
25
+
26
+ ## The `svg` helper
27
+
28
+ Scavenger works by inserting svg tags with references to ids defined in the sprite sheet. There is nothing inherently special about these svg tags, so if you want to add classes or attributes to them in the usual Rails fashion, you can: `<%= svg "hejsna", class: "foo", style: "width:100px" %>`.
29
+
30
+
31
+ ## Loading the sprite sheet asynchronously
32
+
33
+ Scavenger comes with a dependency-free javascript for fetching and injecting the sprite sheet into the DOM. This is a good idea since the sprite sheet can be served from your reverse proxy and cached by the browser. Extra useful if you have a lot of symbols and don't want to bloat every page, but the downside is that users may experience a brief flash of missing icons. To use this javascript, remove the `<%= svg_sprite_sheet %>` helper from your layout and instead include the javascript in your `application.js` like so:
34
+ ```javascript
35
+ //= require scavenger
36
+ ```
37
+
38
+
39
+ ## Configuration
40
+
41
+ You can configure Scavenger to do your bidding. Create a file called `config/initializers/scavenger.rb` and put your configuration there.
42
+
43
+
44
+ ### Use another directory
45
+
46
+ Default is `app/assets/svg` but it can be changed with the following directive:
47
+ ```ruby
48
+ Scavenger::Config.svg_directory = Rails.root.join("app", "assets", "my_directory")
49
+ ```
50
+
51
+
52
+ ### Put the compiled sprite sheet somewhere else
53
+
54
+ Default is `app/assets/images/sprite.svg` but it can be changed with the following directive:
55
+ ```ruby
56
+ Scavenger::Config.sprite_path = Rails.root.join("app", "assets", "my_directory", "my_file.svg")
57
+ ```
58
+
59
+
60
+ ### Set a default prefix on your svg classes
61
+
62
+ The svg references will get their name as the default classname, so `hejsna.svg` will be inserted like this: `<svg class="hejsna">`. If you want a prefix, for instance `icon-`, put `Scavenger::Config.class_prefix = "icon-"` in your configuration file and the svg will look like this instead: `<svg class="icon-hejsna">`.
63
+
64
+
65
+ ### Change how aspect ratio is preserved
66
+
67
+ Default is `"xMinYMin meet"` but it can be changed with the following directive:
68
+ ```ruby
69
+ Scavenger::Config.aspect_ratio = "xMaxYMax meet"
70
+ ```
71
+
72
+ A full list of options for this directive can be found [here](https://developer.mozilla.org/en/docs/Web/SVG/Attribute/preserveAspectRatio).
73
+
74
+
75
+ ## Caveats
76
+
77
+ Scavenger uses a basic built-in compressor. It will remove comments, non-significant whitespace, and ids from your files. Since every svg lives as a `symbol` within the sprite sheet, all `<defs>` tags and everything in them will be removed. Tools (like [Sketch](https://www.sketchapp.com)) will sometimes export your files with references inside a `<defs>` tag, and use really generic ids like `path-1`. That poses a problem for us since there's only one global `<defs>` tag within an svg, and ids are global to the html document. We've experimented with some workarounds but nothing satisfactory, so the solution for now is to manually fix any svgs that use `<defs>` tags in this way before placing them in the svg directory.
78
+
79
+
80
+ ## Author
81
+
82
+ I'm [Johan Halse](https://twitter.com/hejsna) and I work for illustrious Swedish developers [Varvet](https://www.varvet.com). You should hire us if you need well-made, quality software!
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ begin
2
+ require "bundler/setup"
3
+ rescue LoadError
4
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
5
+ end
6
+
7
+ require "rdoc/task"
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = "rdoc"
11
+ rdoc.title = "Scavenger"
12
+ rdoc.options << "--line-numbers"
13
+ rdoc.rdoc_files.include("README.md")
14
+ rdoc.rdoc_files.include("lib/**/*.rb")
15
+ end
16
+
17
+ Bundler::GemHelper.install_tasks
18
+
19
+ require "rake/testtask"
20
+
21
+ Rake::TestTask.new(:test) do |t|
22
+ t.libs << "lib"
23
+ t.libs << "test"
24
+ t.pattern = "test/**/*_test.rb"
25
+ t.verbose = false
26
+ end
27
+
28
+ task default: :test
data/lib/scavenger.rb ADDED
@@ -0,0 +1,15 @@
1
+ require "scavenger/config"
2
+ require "scavenger/view_helpers"
3
+ require "scavenger/compressor"
4
+
5
+ module Scavenger
6
+ module Rails
7
+ class Engine < ::Rails::Engine
8
+ def initialize
9
+ super
10
+ Config.svg_directory = ::Rails.root.join("app", "assets", "svg")
11
+ Config.sprite_path = ::Rails.root.join("app", "assets", "images", "sprite.svg")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,70 @@
1
+ module Scavenger
2
+ class Compressor
3
+ def initialize(path)
4
+ @path = path
5
+ end
6
+
7
+ def allowed_tags
8
+ @allowed_tags ||=
9
+ %w(a altGlyph altGlyphDef altGlyphItem animate animateColor
10
+ animateMotion animateTransform audio canvas circle clipPath
11
+ color-profile cursor discard ellipse feBlend feColorMatrix
12
+ feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting
13
+ feDisplacementMap feDistantLight feDropShadow feFlood feFuncA
14
+ feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode
15
+ feMorphology feOffset fePointLight feSpecularLighting feSpotLight
16
+ feTile feTurbulence filter font font-face font-face-format
17
+ font-face-name font-face-src font-face-uri foreignObject g glyph
18
+ glyphRef hatch hatchpath hkern iframe image line linearGradient
19
+ marker mask mesh meshgradient meshpatch meshrow metadata
20
+ missing-glyph mpath path pattern polygon polyline radialGradient
21
+ rect script set solidcolor stop style svg switch symbol text
22
+ textPath tref tspan unknown use video view vkern)
23
+ end
24
+
25
+ def compress_dir
26
+ sheet = Dir.entries(@path)
27
+ .select { |f| !File.directory? f }
28
+ .map { |f| compress_file(File.join(@path, f), f) }
29
+ .join("")
30
+
31
+ File.write(Scavenger::Config.sprite_path, "<svg>#{sheet}</svg>") unless Scavenger::Config.sprite_path.nil?
32
+ sheet
33
+ end
34
+
35
+ def compress_file(filename, id)
36
+ doc = Nokogiri::XML(File.open(filename), &:noblanks)
37
+ doc = doc.remove_namespaces!.root
38
+ remove_comments(doc)
39
+ remove_tags(doc)
40
+ remove_ids(doc)
41
+ symbolize(doc, id)
42
+ doc.to_html
43
+ end
44
+
45
+ private
46
+
47
+ def remove_comments(doc)
48
+ doc.xpath("//comment()").remove
49
+ end
50
+
51
+ def remove_tags(doc)
52
+ doc.xpath("//*").each do |node|
53
+ node.remove unless allowed_tags.include?(node.name)
54
+ end
55
+ end
56
+
57
+ def remove_ids(doc)
58
+ doc.xpath("//@id").remove
59
+ end
60
+
61
+ def symbolize(doc, id)
62
+ doc.xpath("@*").each do |attribute|
63
+ attribute.remove unless attribute.name == "viewBox"
64
+ end
65
+ doc.name = "symbol"
66
+ doc["id"] = id.chomp(".svg")
67
+ doc["preserveAspectRatio"] = Scavenger::Config.aspect_ratio
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,12 @@
1
+ module Scavenger
2
+ module Config
3
+ class << self
4
+ attr_accessor :svg_directory
5
+ attr_accessor :sprite_path
6
+ attr_accessor :class_prefix
7
+ attr_accessor :aspect_ratio
8
+ end
9
+
10
+ self.aspect_ratio = "xMinYMin meet"
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module Scavenger
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,22 @@
1
+ module Scavenger
2
+ module ViewHelpers
3
+ def compressor
4
+ @compressor ||= Scavenger::Compressor.new(Scavenger::Config.svg_directory)
5
+ end
6
+
7
+ def svg_sprite_sheet
8
+ content_tag :svg, compressor.compress_dir.html_safe, style: "display:none;"
9
+ end
10
+
11
+ def svg(ref, options = {})
12
+ options[:class] = "#{Scavenger::Config.class_prefix}#{ref}" if options[:class].nil?
13
+ content_tag :svg, "<use xlink:href=\"##{ref}\"/>".html_safe, options
14
+ end
15
+
16
+ def scavenger_sprite_path
17
+ asset_path File.basename(Scavenger::Config.sprite_path)
18
+ end
19
+ end
20
+ end
21
+
22
+ ActiveSupport.on_load(:action_view) { include Scavenger::ViewHelpers }
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :scavenger do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,28 @@
1
+ == README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
25
+
26
+
27
+ Please feel free to use a different markup language if you do not plan to run
28
+ <tt>rake doc:app</tt>.
@@ -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 File.expand_path('../config/application', __FILE__)
5
+
6
+ Rails.application.load_tasks
@@ -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, vendor/assets/javascripts,
5
+ // or any plugin's 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.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require_tree .
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any styles
10
+ * defined in the other CSS/SCSS files in this directory. It is generally better to create a new
11
+ * file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="173px" height="173px" viewBox="0 0 173 173" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 40.1 (33804) - http://www.bohemiancoding.com/sketch -->
4
+ <title>hejsna</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs></defs>
7
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
8
+ <g id="hejsna" transform="translate(1.000000, 1.000000)">
9
+ <circle id="Oval" stroke="#979797" fill="#D8D8D8" cx="85.5" cy="85.5" r="85.5"></circle>
10
+ <path d="M83.5,117.5 L83.5,51.5" id="Line" stroke="#A80C0C" stroke-linecap="square" fill="#A80C0C"></path>
11
+ <path id="Line-decoration-1" d="M83.5,51.5 L80.5,62.3 L86.5,62.3 L83.5,51.5 Z" stroke="#A80C0C" stroke-linecap="square" fill="#A80C0C"></path>
12
+ <polygon id="Star" stroke="#979797" fill="#D8D8D8" points="39 92 20.1908719 101.888544 23.7830957 80.9442719 8.56619148 66.1114562 29.595436 63.0557281 39 44 48.404564 63.0557281 69.4338085 66.1114562 54.2169043 80.9442719 57.8091281 101.888544"></polygon>
13
+ <polygon id="Triangle" fill="#EB8D8D" points="125 56 154 114 96 114"></polygon>
14
+ </g>
15
+ </g>
16
+ </svg>
@@ -0,0 +1,31 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg width="185px" height="69px" viewBox="0 0 185 69" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <!-- Generator: Sketch 40.3 (33839) - http://www.bohemiancoding.com/sketch -->
4
+ <title>thing</title>
5
+ <desc>Created with Sketch.</desc>
6
+ <defs>
7
+ <rect id="path-1" x="0" y="1" width="185" height="68" rx="8"></rect>
8
+ <mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="0" y="0" width="185" height="68" fill="white">
9
+ <use xlink:href="#path-1"></use>
10
+ </mask>
11
+ <text id="text-3" font-family="Oxygen-Regular, Oxygen" font-size="20" font-weight="normal" fill="#FFFFFF">
12
+ <tspan x="24.5898438" y="37">LOL</tspan>
13
+ </text>
14
+ <filter x="-50%" y="-50%" width="200%" height="200%" filterUnits="objectBoundingBox" id="filter-4">
15
+ <feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
16
+ <feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
17
+ <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
18
+ </filter>
19
+ </defs>
20
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
21
+ <g id="thing">
22
+ <use id="Rectangle" stroke="#979797" mask="url(#mask-2)" stroke-width="2" fill="#D8D8D8" xlink:href="#path-1"></use>
23
+ <path d="M1.5,0.5 L179.5,64.5" id="Line" stroke="#979797" stroke-linecap="square"></path>
24
+ <path d="M180.5,4.5 L8.5,64.5" id="Line" stroke="#979797" stroke-linecap="square"></path>
25
+ <g id="LOL" fill-opacity="1" fill="#FFFFFF">
26
+ <use filter="url(#filter-4)" xlink:href="#text-3"></use>
27
+ <use xlink:href="#text-3"></use>
28
+ </g>
29
+ </g>
30
+ </g>
31
+ </svg>
@@ -0,0 +1,5 @@
1
+ class ApplicationController < ActionController::Base
2
+ # Prevent CSRF attacks by raising an exception.
3
+ # For APIs, you may want to use :null_session instead.
4
+ protect_from_forgery with: :exception
5
+ end
@@ -0,0 +1,3 @@
1
+ class WelcomeController < ApplicationController
2
+ def index; end
3
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
6
+ <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= svg_sprite_sheet %>
12
+
13
+ <%= yield %>
14
+
15
+ </body>
16
+ </html>
@@ -0,0 +1,3 @@
1
+ <h1>Test</h1>
2
+ <%= svg "hejsna" %>
3
+ <%= svg "thing" %>
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
3
+ load Gem.bin_path('bundler', 'bundle')