Permalink
Browse files

fork form

  • Loading branch information...
0 parents commit bd48ecbda626c11c8bbf2d122505c385434c0edd @tka tka committed Feb 22, 2012
Showing with 4,544 additions and 0 deletions.
  1. +9 −0 .gitignore
  2. +54 −0 Info.plist
  3. +339 −0 LICENSE
  4. +22 −0 README.markdown
  5. +123 −0 Rakefile
  6. +2 −0 bin/build-all.sh
  7. +9 −0 bin/startJar-linux.sh
  8. +8 −0 bin/startJar-osx.sh
  9. +5 −0 bin/to_release.sh
  10. +89 −0 build_configuration.rb
  11. +74 −0 editor_extensions/vim-compassapp/plugin/compassapp.vim
  12. BIN lib/applescript/64.png
  13. BIN lib/applescript/growl.applescript
  14. BIN lib/applescript/growl.scpt
  15. BIN lib/images/icon/128.png
  16. BIN lib/images/icon/16.png
  17. BIN lib/images/icon/16_dark.png
  18. BIN lib/images/icon/256.png
  19. BIN lib/images/icon/32.png
  20. BIN lib/images/icon/32_dark.png
  21. BIN lib/images/icon/512.png
  22. BIN lib/images/icon/64.png
  23. BIN lib/images/icon/icon-osx.icns
  24. BIN lib/images/icon/icon-win.ico
  25. BIN lib/images/where_am_i.png
  26. BIN lib/java/jruby-complete.jar
  27. +925 −0 lib/javascripts/livereload.js
  28. +29 −0 lib/ruby/compass_0.11/compass-0.11.7/LICENSE.markdown
  29. +56 −0 lib/ruby/compass_0.11/compass-0.11.7/README.markdown
  30. +115 −0 lib/ruby/compass_0.11/compass-0.11.7/Rakefile
  31. +5 −0 lib/ruby/compass_0.11/compass-0.11.7/VERSION.yml
  32. +44 −0 lib/ruby/compass_0.11/compass-0.11.7/bin/compass
  33. +707 −0 lib/ruby/compass_0.11/compass-0.11.7/bin/compass.compiled.rbc
  34. +4 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/README.markdown
  35. +7 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/config.rb
  36. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/images/grid.png
  37. +85 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/index.html.haml
  38. +282 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/parts/elements.html.haml
  39. +200 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/parts/forms.html.haml
  40. +274 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/parts/grid.html.haml
  41. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/parts/test-small.jpg
  42. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/parts/test.jpg
  43. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/parts/valid.png
  44. +3 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/src/ie.scss
  45. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/src/images/grid.png
  46. +3 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/src/print.scss
  47. +9 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_default/src/screen.scss
  48. +8 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/config.rb
  49. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/buttons/cross.png
  50. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/buttons/key.png
  51. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/buttons/tick.png
  52. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/grid.png
  53. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/link_icons/doc.png
  54. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/link_icons/email.png
  55. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/link_icons/external.png
  56. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/link_icons/feed.png
  57. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/link_icons/im.png
  58. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/link_icons/pdf.png
  59. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/link_icons/visited.png
  60. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/link_icons/xls.png
  61. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/test-small.jpg
  62. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/test.jpg
  63. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/images/valid.png
  64. +96 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/index.html.haml
  65. +67 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/plugins/buttons.html.haml
  66. +100 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/plugins/fancy_type.html.haml
  67. +61 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/plugins/link_icons.html.haml
  68. +100 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/plugins/rtl.html.haml
  69. +47 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/src/buttons.scss
  70. +3 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/src/ie.scss
  71. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/src/images/grid.png
  72. +13 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/src/link_icons.scss
  73. +3 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/src/print.scss
  74. +15 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/src/rtl_screen.scss
  75. +12 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_plugins/src/screen.scss
  76. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_scoped/images/grid.png
  77. +4 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_scoped/src/ie.scss
  78. +4 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_scoped/src/print.scss
  79. +5 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_scoped/src/screen.scss
  80. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_scoped_form/images/grid.png
  81. +3 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_scoped_form/src/ie.scss
  82. +3 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_scoped_form/src/print.scss
  83. +15 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_scoped_form/src/screen.scss
  84. +7 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/config.rb
  85. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/images/grid.png
  86. +86 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/index.html.haml
  87. +100 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/parts/fancy_type.html.haml
  88. +100 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/parts/liquid.html.haml
  89. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/parts/test-small.jpg
  90. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/parts/test.jpg
  91. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/parts/valid.png
  92. +3 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/src/ie.scss
  93. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/src/images/grid.png
  94. +69 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/src/liquid.scss
  95. +3 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/src/print.scss
  96. +69 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/blueprint_semantic/src/screen.scss
  97. +4 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/compass/bootstrap.rb
  98. +2 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/compass/clean.rb
  99. +39 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/compass/compass.html.haml
  100. +6 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/compass/compass_app_log.txt
  101. +8 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/compass/config.rb
  102. +7 −0 lib/ruby/compass_0.11/compass-0.11.7/examples/compass/headers.txt
  103. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/blue_arrow.gif
  104. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/border2.png
  105. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/emblem-a043c4f148.png
  106. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/emblem/favorite.png
  107. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/emblem/important.png
  108. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/emblem/photos.png
  109. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/emblem/readonly.png
  110. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/emblem/symbolic-link.png
  111. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/emblem/system.png
  112. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/emblem/unreadable.png
  113. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag-03c3b29b35.png
  114. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag-21cfbfbfc8.png
  115. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ad.png
  116. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ae.png
  117. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/af.png
  118. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ag.png
  119. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ai.png
  120. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/al.png
  121. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/am.png
  122. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/an.png
  123. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ao.png
  124. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ar.png
  125. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/as.png
  126. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/at.png
  127. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/au.png
  128. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/aw.png
  129. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ax.png
  130. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/az.png
  131. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ba.png
  132. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bb.png
  133. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bd.png
  134. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/be.png
  135. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bf.png
  136. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bg.png
  137. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bh.png
  138. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bi.png
  139. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bj.png
  140. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bm.png
  141. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bn.png
  142. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bo.png
  143. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/br.png
  144. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bs.png
  145. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bt.png
  146. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bv.png
  147. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bw.png
  148. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/by.png
  149. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/bz.png
  150. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ca.png
  151. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/catalonia.png
  152. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cc.png
  153. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cd.png
  154. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cf.png
  155. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cg.png
  156. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ch.png
  157. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ci.png
  158. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ck.png
  159. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cl.png
  160. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cm.png
  161. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cn.png
  162. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/co.png
  163. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cr.png
  164. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cs.png
  165. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cu.png
  166. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cv.png
  167. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cx.png
  168. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cy.png
  169. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/cz.png
  170. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/de.png
  171. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/dj.png
  172. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/dk.png
  173. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/dm.png
  174. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/do.png
  175. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/dz.png
  176. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ec.png
  177. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ee.png
  178. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/eg.png
  179. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/eh.png
  180. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/england.png
  181. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/er.png
  182. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/es.png
  183. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/et.png
  184. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/europeanunion.png
  185. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/fam.png
  186. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/fi.png
  187. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/fj.png
  188. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/fk.png
  189. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/fm.png
  190. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/fo.png
  191. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/fr.png
  192. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ga.png
  193. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gb.png
  194. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gd.png
  195. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ge.png
  196. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gf.png
  197. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gh.png
  198. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gi.png
  199. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gl.png
  200. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gm.png
  201. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gn.png
  202. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gp.png
  203. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gq.png
  204. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gr.png
  205. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gs.png
  206. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gt.png
  207. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gu.png
  208. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gw.png
  209. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/gy.png
  210. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/hk.png
  211. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/hm.png
  212. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/hn.png
  213. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/hr.png
  214. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ht.png
  215. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/hu.png
  216. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/id-2.png
  217. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ie.png
  218. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/il.png
  219. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/in.png
  220. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/io.png
  221. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/iq.png
  222. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ir.png
  223. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/is.png
  224. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/it.png
  225. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/jm.png
  226. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/jo.png
  227. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/jp.png
  228. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ke.png
  229. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/kg.png
  230. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/kh.png
  231. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ki.png
  232. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/km.png
  233. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/kn.png
  234. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/kp.png
  235. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/kr.png
  236. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/kw.png
  237. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ky.png
  238. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/kz.png
  239. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/la.png
  240. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/lb.png
  241. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/lc.png
  242. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/li.png
  243. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/lk.png
  244. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/lr.png
  245. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ls.png
  246. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/lt.png
  247. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/lu.png
  248. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/lv.png
  249. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ly.png
  250. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ma.png
  251. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mc.png
  252. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/md.png
  253. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/me.png
  254. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mg.png
  255. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mh.png
  256. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mk.png
  257. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ml.png
  258. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mm.png
  259. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mn.png
  260. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mo.png
  261. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mp.png
  262. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mq.png
  263. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mr.png
  264. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ms.png
  265. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mt.png
  266. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mu.png
  267. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mv.png
  268. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mw.png
  269. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mx.png
  270. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/my.png
  271. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/mz.png
  272. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/na.png
  273. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/nc.png
  274. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ne.png
  275. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/nf.png
  276. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ng.png
  277. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ni.png
  278. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/nl.png
  279. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/no.png
  280. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/np.png
  281. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/nr.png
  282. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/nu.png
  283. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/nz.png
  284. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/om.png
  285. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pa.png
  286. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pe.png
  287. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pf.png
  288. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pg.png
  289. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ph.png
  290. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pk.png
  291. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pl.png
  292. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pm.png
  293. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pn.png
  294. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pr.png
  295. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/ps.png
  296. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pt.png
  297. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/pw.png
  298. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/py.png
  299. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/qa.png
  300. BIN lib/ruby/compass_0.11/compass-0.11.7/examples/compass/images/flag/re.png
Sorry, we could not display the entire diff because too many files (4,069) changed.
9 .gitignore
@@ -0,0 +1,9 @@
+package
+packages
+lib/java/swt*
+*.swp
+update_url
+src/compile_version.rb
+.rvmrc
+.rbenv-version
+src/compile_version.rb
54 Info.plist
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+<dict>
+ <key>NSUIElement</key>
+ <string>1</string>
+ <key>CFBundleName</key>
+ <string>compass.app</string>
+ <key>CFBundleVersion</key>
+ <string>1.0.0</string>
+ <key>CFBundleAllowMixedLocalizations</key>
+ <string>true</string>
+ <key>CFBundleExecutable</key>
+ <string>JavaApplicationStub</string>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleIconFile</key>
+ <string>icon-osx.icns</string>
+ <key>Java</key>
+ <dict>
+ <key>MainClass</key>
+ <string>org.rubyforge.rawr.Main</string>
+ <key>JVMVersion</key>
+ <string>1.6*</string>
+ <key>ClassPath</key>
+ <array>
+ <string>$JAVAROOT/compass-app.jar</string>
+ </array>
+ <key>Properties</key>
+ <dict>
+ <key>apple.laf.useScreenMenuBar</key>
+ <string>true</string>
+ </dict>
+ <key>JVMArchs</key>
+ <array>
+ <string>i386</string>
+ </array>
+ <key>StartOnMainThread</key>
+ <string>true</string>
+ <key>VMOptions</key>
+ <array>
+ <string>-Dfile.encoding=utf8</string>
+ <string>-Xverify:none</string>
+ <string>-Xbootclasspath/p:$APP_PACKAGE/Contents/Resources/Java/lib/java/jruby-complete.jar</string>
+ </array>
+ </dict>
+</dict>
+</plist>
339 LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
22 README.markdown
@@ -0,0 +1,22 @@
+# Compass.app
+
+http://compass.handlino.com/
+
+[Compass.app](http://compass.handlino.com/) helps designers compile stylesheets easily without resorting to command line interface. It is written in Java and works in Windows/Linux/Mac OS X.
+
+[Compass](http://compass-style.org/) is a stylesheet authoring framework that makes your stylesheets and markup easier to build and maintain. With compass, you write your stylesheets in [Sass](http://sass-lang.com/) instead of CSS.
+
+# License
+
+Copyright (c) 2010 Handlino Inc.
+Licensed under GPL v2.
+
+We sell prebuild software in our offical site. If you know how to build it, feel free to download the source and build your own.
+
+# System Requirement
+
+* Java Runtime
+
+# Build Your Own
+
+If you want to build your own copy, you will need [JRuby 1.6.5](http://jruby.org/) and [rawr](http://rawr.rubyforge.org/).
123 Rakefile
@@ -0,0 +1,123 @@
+require 'rawr'
+require 'app_bundler'
+require 'exe_bundler'
+require 'yaml'
+module Rawr
+ class AppBundler
+ # monkey patch again, option mac_do_not_generate_plist not work
+ def generate_info_plist
+ return
+ end
+ end
+end
+
+namespace :rawr do
+ namespace :bundle do
+ task :create_packages_dir do
+ @packages_dir = File.join(File.dirname(__FILE__), 'packages')
+ Dir.mkdir( @packages_dir ) unless File.exists?( @packages_dir )
+ end
+
+ task :write_version_info do
+ @revision ||= (%x{git log | head -c 17 | tail -c 10}).strip
+ @compile_time ||= Time.now.strftime('%Y%m%d%H%M')
+ @update_url = open('update_url').readline.strip if File.exists?("update_url")
+ @update_url ||= ''
+ File.open "src/compile_version.rb", 'w' do |file|
+ file << <<-INFO_ENDL
+ module CompileVersion
+ REVISION = '#{@revision}'
+ COMPILE_TIME = '#{@compile_time}'
+ UPDATE_URL = '#{@update_url}'
+ end
+INFO_ENDL
+ end
+ end
+
+ task(:app).clear_prerequisites.clear_actions
+ desc "Bundles the jar from rawr:jar into a native Mac OS X application (.app)"
+ task :app => ["rawr:bundle:create_packages_dir", "rawr:bundle:write_version_info", "rawr:jar", CONFIG.osx_output_dir ] do
+ Rawr::AppBundler.new.deploy CONFIG
+ Dir.chdir File.dirname(__FILE__)
+ %x{mkdir -p #{CONFIG.osx_output_dir}/#{CONFIG.project_name}.app/Contents/Resources/swt}
+ %x{cp -R lib/swt/swt_osx* #{CONFIG.osx_output_dir}/#{CONFIG.project_name}.app/Contents/Resources/swt}
+
+ %w{ruby images applescript javascripts}.each do | copy_dir |
+ %x{cp -R lib/#{copy_dir} #{CONFIG.osx_output_dir}/#{CONFIG.project_name}.app/Contents/Resources }
+ end
+ Dir.chdir CONFIG.osx_output_dir
+ %x{mv #{CONFIG.project_name}.app compass.app;}
+ @osx_bundle_file="compass.app.osx.#{@compile_time}-#{@revision}.zip"
+ %x{zip -9 -r #{@packages_dir}/#{@osx_bundle_file} compass.app}
+ %x{mkdir #{@packages_dir}/osx; cp -R compass.app #{@packages_dir}/osx}
+ end
+
+ task(:exe).clear_prerequisites.clear_actions
+ desc "Bundles the jar from rawr:jar into a native Windows application (.exe)"
+ task :exe => ["rawr:bundle:create_packages_dir", "rawr:bundle:write_version_info", "rawr:jar", CONFIG.windows_output_dir ] do
+ Dir.chdir File.dirname(__FILE__)
+ %x{mkdir -p package/windows/package/windows} # path for launch4j link fle
+ Rawr::ExeBundler.new.deploy CONFIG
+
+ %x{mkdir -p #{CONFIG.windows_output_dir}/lib/swt}
+ %x{cp -R lib/swt/swt_win* #{CONFIG.windows_output_dir}/lib/swt}
+
+ %w{ruby images javascripts}.each do | copy_dir |
+ %x{cp -R lib/#{copy_dir} #{CONFIG.windows_output_dir}/lib }
+ end
+
+ %x{mv package/windows/package/windows/*.exe package/windows}
+ %x{rm -rf package/windows/package}
+ Dir.chdir 'package'
+ %x{rm -rf compass.app windows/*.xml; mv windows compass.app}
+ @windows_bundle_file="compass.app.windows.#{@compile_time}-#{@revision}.zip"
+ %x{zip -9 -r #{@packages_dir}/#{@windows_bundle_file} compass.app}
+ %x{mkdir #{@packages_dir}/windows; cp -R compass.app #{@packages_dir}/windows}
+ end
+
+ desc "Bundles the jar from rawr:jar into a Linux script"
+ task :linux => ["rawr:bundle:create_packages_dir", "rawr:bundle:write_version_info", "rawr:jar" ] do
+ Dir.chdir File.dirname(__FILE__)
+ %x{mkdir -p package/jar/lib/swt}
+ %x{cp -R lib/swt/swt_linux* package/jar/lib/swt}
+
+ %w{ruby images javascripts}.each do | copy_dir |
+ %x{cp -R lib/#{copy_dir} package/jar/lib }
+ end
+
+ %x{mv package/jar package/compass.app}
+ File.open('package/compass.app/run.sh','w') do |f|
+ f.write("#!/usr/bin/env bash\ncd $(dirname $0)\njava -client -jar compass-app.jar")
+ end
+ %x{chmod +x package/compass.app/run.sh}
+ Dir.chdir 'package'
+ @linux_bundle_file="compass.app.linux.#{@compile_time}-#{@revision}.zip"
+ %x{zip -9 -r #{@packages_dir}/#{@linux_bundle_file} compass.app}
+ %x{mkdir #{@packages_dir}/linux; cp -R compass.app #{@packages_dir}/linux}
+ end
+
+ desc "Bundles Linux, OSX and Window package"
+ task :all do
+ Dir.chdir File.dirname(__FILE__)
+ %x{rm -rf package/* packages/*}
+ Rake::Task['rawr:bundle:app'].invoke
+
+ Rake::Task.tasks.each{|t| t.reenable}
+ Dir.chdir File.dirname(__FILE__)
+ %x{rm -rf package/*}
+ Rake::Task['rawr:bundle:exe'].invoke
+
+ Rake::Task.tasks.each{|t| t.reenable}
+ Dir.chdir File.dirname(__FILE__)
+ %x{rm -rf package/*}
+ Rake::Task['rawr:bundle:linux'].invoke
+ url_base=File.dirname(@update_url)
+ info={ "linux" => { "compile_version"=> @compile_time, "url"=> File.join(url_base, @linux_bundle_file) },
+ "osx" => { "compile_version"=> @compile_time, "url"=> File.join(url_base, @osx_bundle_file) },
+ "windows" => { "compile_version"=> @compile_time, "url"=> File.join(url_base, @windows_bundle_file)} }
+ open( File.join(@packages_dir,'update.yml'),'w' ) do |f|
+ f.write info.to_yaml
+ end
+ end
+ end
+end
2 bin/build-all.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+rake rawr:bundle:all
9 bin/startJar-linux.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+if [ "$1" = "full" ]; then
+ rake rawr:clean
+fi
+rake rawr:jar
+#java -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Djruby.reify.classes=true -Djruby.compat.version="1.9" \
+java -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Djruby.reify.classes=true \
+ -Xms512m -Xmn128m \
+-client -Xverify:none -Xbootclasspath/a:lib/java/jruby-complete.jar -jar package/jar/compass-app.jar
8 bin/startJar-osx.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+if [ "$1" = "full" ]; then
+ rake rawr:clean
+fi
+rake rawr:jar
+#java -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails \
+# -Xms128m -Xmn32m -Xmx128m \
+java -Dfile.encoding=utf8 -d32 -client -Xverify:none -XstartOnFirstThread -Xbootclasspath/a:lib/java/jruby-complete.jar -jar package/jar/compass-app.jar
5 bin/to_release.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+cp packages/compass.app.windows* packages/compass.app.windows.$1.zip
+cp packages/compass.app.osx* packages/compass.app.osx.$1.zip
+cp packages/compass.app.linux* packages/compass.app.linux.$1.zip
+ls -lot packages
89 build_configuration.rb
@@ -0,0 +1,89 @@
+configuration do |c|
+ # The name for your resulting application file (e.g., if the project_name is 'foo' then you'll get foo.jar, foo.exe, etc.)
+ # default value: "tka"
+ #
+ c.project_name = "compass-app"
+
+ # Undocumented option 'output_dir'
+ # default value: "package"
+ #
+ #c.output_dir = "package"
+
+ # The main ruby file to invoke, minus the .rb extension
+ # default value: "main"
+ #
+ c.main_ruby_file = "src/main"
+
+ # The fully-qualified name of the main Java file used to initiate the application.
+ # default value: "org.rubyforge.rawr.Main"
+ #
+ #c.main_java_file = "org.rubyforge.rawr.Main"
+
+ # A list of directories where source files reside
+ # default value: ["src"]
+ #
+ #c.source_dirs = ["src",'lib/ruby/gem/gems/haml-3.0.24']
+
+ # A list of regexps of files to exclude
+ # default value: []
+ #
+ #c.source_exclude_filter = [/spec/,/test/,/example/]
+
+ # Whether Ruby source files should be compiled into .class files
+ # default value: true
+ #
+ #c.compile_ruby_files = true
+
+ # A list of individual Java library files to include.
+ # default value: []
+ #
+ #c.java_lib_files = []
+
+ # A list of directories for rawr to include . All files in the given directories get bundled up.
+ # default value: ["lib/java"]
+ #
+ #c.java_lib_dirs = ["lib/java"]
+
+ # Undocumented option 'files_to_copy'
+ # default value: []
+ #
+ #c.files_to_copy = ['lib/ruby', 'lib/applescript']
+
+ # Undocumented option 'target_jvm_version'
+ # default value: 1.6
+ #
+ # c.target_jvm_version = 1.6
+
+ # Undocumented option 'jvm_arguments'
+ # default value: ""
+ #
+ #c.jvm_arguments = ""
+
+ # Undocumented option 'java_library_path'
+ # default value: ""
+ #
+ c.java_library_path = "src"
+
+ # Undocumented option 'extra_user_jars'
+ # default value: {}
+ #
+ #c.extra_user_jars[:data] = { :directory => 'data/images/png',
+ # :location_in_jar => 'images',
+ # :exclude => /*.bak$/ }
+
+ # Undocumented option 'mac_do_not_generate_plist'
+ # default value: nil
+ #
+ #c.mac_do_not_generate_plist = true
+
+ # Undocumented option 'mac_icon_path'
+ # default value: nil
+ #
+ c.mac_icon_path = Dir.pwd + "/lib/images/icon/icon-osx.icns"
+
+ # Undocumented option 'windows_icon_path'
+ # default value: nil
+ #
+ c.windows_icon_path = Dir.pwd + "/lib/images/icon/icon-win.ico"
+
+end
74 editor_extensions/vim-compassapp/plugin/compassapp.vim
@@ -0,0 +1,74 @@
+func! CompassCompl(st,base)
+ if a:st
+ let line = getline('.')
+ let start = col('.') - 1
+ while start > 0 && line[start - 1] =~ '[a-z0-9\$@]'
+ let start -= 1
+ endwhile
+ return start
+ else
+
+ let basefilename='~/.compass-ui/autocomplete_cache/'. substitute( expand('%:p'), '[^a-z0-9]', '_','g')
+ if a:base[0] == "$"
+ let wordfile=basefilename. "_variable"
+ let get_word_cmd='test -f '. wordfile .' && cat '. wordfile .'|tr "\n" ,'
+ exe 'let wordlist=['. system(get_word_cmd) . ']'
+
+ " add variable in current file
+ let file = getline(1, '$')
+ let jfile = join(file, ' ')
+ let int_vals = split(jfile, '\ze\$')
+ let int_vars = {}
+ for i in int_vals
+ let val = matchstr(i, '^\$[a-z_][a-z_\-0-9]*')
+ if val != ''
+ call add(wordlist, val)
+ endif
+ endfor
+
+ else
+ let line = getline('.')
+ if line =~ '@include'
+ let wordfile=basefilename. "_mixin"
+ let get_word_cmd='test -f '. wordfile .' && cat '. wordfile .'|tr "\n" ,'
+ exe 'let wordlist=['. system(get_word_cmd) . ']'
+
+ " add mixin in current file
+ let int_vals = getline(1, '$')
+ let int_vars = {}
+ for i in int_vals
+ let val = matchlist(i, '^@mixin \([a-z0-9\_]*[^{]*\)')
+ if len(val) > 0 && val[1] != ''
+ call add(wordlist, val[1])
+ endif
+ endfor
+
+ " if you need complete mixin args, comment below 5 lines
+ let clean_wordlist = []
+ for i in wordlist
+ call add(clean_wordlist, matchstr(i, "^[a-z0-9\-_]*"))
+ endfor
+ let wordlist = clean_wordlist
+
+ endif
+ endif
+
+ " if we got scss words
+ if exists('wordlist')
+ let res = []
+ for m in wordlist
+ if m =~ '^' . a:base
+ call add(res, m)
+ endif
+ endfor
+
+ return res
+ end
+
+ " default match csscomplete#CompleteCSS
+ return csscomplete#CompleteCSS(0, a:base)
+ endif
+endfunc
+autocmd BufNewFile,BufRead *.scss set ft=scss.css iskeyword+=- ofu=CompassCompl
+autocmd BufNewFile,BufRead *.sass set ft=sass.css iskeyword+=- ofu=CompassCompl
+
BIN lib/applescript/64.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/applescript/growl.applescript
Binary file not shown.
BIN lib/applescript/growl.scpt
Binary file not shown.
BIN lib/images/icon/128.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/images/icon/16.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/images/icon/16_dark.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/images/icon/256.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/images/icon/32.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/images/icon/32_dark.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/images/icon/512.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/images/icon/64.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/images/icon/icon-osx.icns
Binary file not shown.
BIN lib/images/icon/icon-win.ico
Binary file not shown.
BIN lib/images/where_am_i.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN lib/java/jruby-complete.jar
Binary file not shown.
925 lib/javascripts/livereload.js
@@ -0,0 +1,925 @@
+(function() {
+var __customevents = {}, __protocol = {}, __connector = {}, __timer = {}, __options = {}, __reloader = {}, __livereload = {}, __less = {}, __startup = {};
+
+// customevents
+var CustomEvents;
+CustomEvents = {
+ bind: function(element, eventName, handler) {
+ if (element.addEventListener) {
+ return element.addEventListener(eventName, handler, false);
+ } else if (element.attachEvent) {
+ element[eventName] = 1;
+ return element.attachEvent('onpropertychange', function(event) {
+ if (event.propertyName === eventName) {
+ return handler();
+ }
+ });
+ } else {
+ throw new Error("Attempt to attach custom event " + eventName + " to something which isn't a DOMElement");
+ }
+ },
+ fire: function(element, eventName) {
+ var event;
+ if (element.addEventListener) {
+ event = document.createEvent('HTMLEvents');
+ event.initEvent(eventName, true, true);
+ return document.dispatchEvent(event);
+ } else if (element.attachEvent) {
+ if (element[eventName]) {
+ return element[eventName]++;
+ }
+ } else {
+ throw new Error("Attempt to fire custom event " + eventName + " on something which isn't a DOMElement");
+ }
+ }
+};
+__customevents.bind = CustomEvents.bind;
+__customevents.fire = CustomEvents.fire;
+
+// protocol
+var PROTOCOL_6, PROTOCOL_7, Parser, ProtocolError;
+var __indexOf = Array.prototype.indexOf || function(item) {
+ for (var i = 0, l = this.length; i < l; i++) {
+ if (this[i] === item) return i;
+ }
+ return -1;
+};
+__protocol.PROTOCOL_6 = PROTOCOL_6 = 'http://livereload.com/protocols/official-6';
+__protocol.PROTOCOL_7 = PROTOCOL_7 = 'http://livereload.com/protocols/official-7';
+__protocol.ProtocolError = ProtocolError = (function() {
+ function ProtocolError(reason, data) {
+ this.message = "LiveReload protocol error (" + reason + ") after receiving data: \"" + data + "\".";
+ }
+ return ProtocolError;
+})();
+__protocol.Parser = Parser = (function() {
+ function Parser(handlers) {
+ this.handlers = handlers;
+ this.reset();
+ }
+ Parser.prototype.reset = function() {
+ return this.protocol = null;
+ };
+ Parser.prototype.process = function(data) {
+ var command, message, options, _ref;
+ try {
+ if (!(this.protocol != null)) {
+ if (data.match(/^!!ver:([\d.]+)$/)) {
+ this.protocol = 6;
+ } else if (message = this._parseMessage(data, ['hello'])) {
+ if (!message.protocols.length) {
+ throw new ProtocolError("no protocols specified in handshake message");
+ } else if (__indexOf.call(message.protocols, PROTOCOL_7) >= 0) {
+ this.protocol = 7;
+ } else if (__indexOf.call(message.protocols, PROTOCOL_6) >= 0) {
+ this.protocol = 6;
+ } else {
+ throw new ProtocolError("no supported protocols found");
+ }
+ }
+ return this.handlers.connected(this.protocol);
+ } else if (this.protocol === 6) {
+ message = JSON.parse(data);
+ if (!message.length) {
+ throw new ProtocolError("protocol 6 messages must be arrays");
+ }
+ command = message[0], options = message[1];
+ if (command !== 'refresh') {
+ throw new ProtocolError("unknown protocol 6 command");
+ }
+ return this.handlers.message({
+ command: 'reload',
+ path: options.path,
+ liveCSS: (_ref = options.apply_css_live) != null ? _ref : true
+ });
+ } else {
+ message = this._parseMessage(data, ['reload', 'alert']);
+ return this.handlers.message(message);
+ }
+ } catch (e) {
+ if (e instanceof ProtocolError) {
+ return this.handlers.error(e);
+ } else {
+ throw e;
+ }
+ }
+ };
+ Parser.prototype._parseMessage = function(data, validCommands) {
+ var message, _ref;
+ try {
+ message = JSON.parse(data);
+ } catch (e) {
+ throw new ProtocolError('unparsable JSON', data);
+ }
+ if (!message.command) {
+ throw new ProtocolError('missing "command" key', data);
+ }
+ if (_ref = message.command, __indexOf.call(validCommands, _ref) < 0) {
+ throw new ProtocolError("invalid command '" + message.command + "', only valid commands are: " + (validCommands.join(', ')) + ")", data);
+ }
+ return message;
+ };
+ return Parser;
+})();
+
+// connector
+var Connector, PROTOCOL_6, PROTOCOL_7, Parser, Version, _ref;
+var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+_ref = __protocol, Parser = _ref.Parser, PROTOCOL_6 = _ref.PROTOCOL_6, PROTOCOL_7 = _ref.PROTOCOL_7;
+Version = '2.0.4';
+__connector.Connector = Connector = (function() {
+ function Connector(options, WebSocket, Timer, handlers) {
+ this.options = options;
+ this.WebSocket = WebSocket;
+ this.Timer = Timer;
+ this.handlers = handlers;
+ this._uri = "ws://" + this.options.host + ":" + this.options.port + "/livereload";
+ this._nextDelay = this.options.mindelay;
+ this._connectionDesired = false;
+ this.protocol = 0;
+ this.protocolParser = new Parser({
+ connected: __bind(function(protocol) {
+ this.protocol = protocol;
+ this._handshakeTimeout.stop();
+ this._nextDelay = this.options.mindelay;
+ this._disconnectionReason = 'broken';
+ return this.handlers.connected(protocol);
+ }, this),
+ error: __bind(function(e) {
+ this.handlers.error(e);
+ return this._closeOnError();
+ }, this),
+ message: __bind(function(message) {
+ return this.handlers.message(message);
+ }, this)
+ });
+ this._handshakeTimeout = new Timer(__bind(function() {
+ if (!this._isSocketConnected()) {
+ return;
+ }
+ this._disconnectionReason = 'handshake-timeout';
+ return this.socket.close();
+ }, this));
+ this._reconnectTimer = new Timer(__bind(function() {
+ if (!this._connectionDesired) {
+ return;
+ }
+ return this.connect();
+ }, this));
+ this.connect();
+ }
+ Connector.prototype._isSocketConnected = function() {
+ return this.socket && this.socket.readyState === this.WebSocket.OPEN;
+ };
+ Connector.prototype.connect = function() {
+ this._connectionDesired = true;
+ if (this._isSocketConnected()) {
+ return;
+ }
+ if (this._reconnectTimer) {
+ clearTimeout(this._reconnectTimer);
+ }
+ this._disconnectionReason = 'cannot-connect';
+ this.protocolParser.reset();
+ this.handlers.connecting();
+ this.socket = new this.WebSocket(this._uri);
+ this.socket.onopen = __bind(function(e) {
+ return this._onopen(e);
+ }, this);
+ this.socket.onclose = __bind(function(e) {
+ return this._onclose(e);
+ }, this);
+ this.socket.onmessage = __bind(function(e) {
+ return this._onmessage(e);
+ }, this);
+ return this.socket.onerror = __bind(function(e) {
+ return this._onerror(e);
+ }, this);
+ };
+ Connector.prototype.disconnect = function() {
+ this._connectionDesired = false;
+ this._reconnectTimer.stop();
+ if (!this._isSocketConnected()) {
+ return;
+ }
+ this._disconnectionReason = 'manual';
+ return this.socket.close();
+ };
+ Connector.prototype._scheduleReconnection = function() {
+ if (!this._connectionDesired) {
+ return;
+ }
+ if (!this._reconnectTimer.running) {
+ this._reconnectTimer.start(this._nextDelay);
+ return this._nextDelay = Math.min(this.options.maxdelay, this._nextDelay * 2);
+ }
+ };
+ Connector.prototype.sendCommand = function(command) {
+ if (this.protocol == null) {
+ return;
+ }
+ return this._sendCommand(command);
+ };
+ Connector.prototype._sendCommand = function(command) {
+ return this.socket.send(JSON.stringify(command));
+ };
+ Connector.prototype._closeOnError = function() {
+ this._handshakeTimeout.stop();
+ this._disconnectionReason = 'error';
+ return this.socket.close();
+ };
+ Connector.prototype._onopen = function(e) {
+ var hello;
+ this.handlers.socketConnected();
+ this._disconnectionReason = 'handshake-failed';
+ hello = {
+ command: 'hello',
+ protocols: [PROTOCOL_6, PROTOCOL_7]
+ };
+ hello.ver = Version;
+ if (this.options.ext) {
+ hello.ext = this.options.ext;
+ }
+ if (this.options.extver) {
+ hello.extver = this.options.extver;
+ }
+ if (this.options.snipver) {
+ hello.snipver = this.options.snipver;
+ }
+ this._sendCommand(hello);
+ return this._handshakeTimeout.start(this.options.handshake_timeout);
+ };
+ Connector.prototype._onclose = function(e) {
+ this.protocol = 0;
+ this.handlers.disconnected(this._disconnectionReason, this._nextDelay);
+ return this._scheduleReconnection();
+ };
+ Connector.prototype._onerror = function(e) {};
+ Connector.prototype._onmessage = function(e) {
+ return this.protocolParser.process(e.data);
+ };
+ return Connector;
+})();
+
+// timer
+var Timer;
+var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+__timer.Timer = Timer = (function() {
+ function Timer(func) {
+ this.func = func;
+ this.running = false;
+ this.id = null;
+ this._handler = __bind(function() {
+ this.running = false;
+ this.id = null;
+ return this.func();
+ }, this);
+ }
+ Timer.prototype.start = function(timeout) {
+ if (this.running) {
+ clearTimeout(this.id);
+ }
+ this.id = setTimeout(this._handler, timeout);
+ return this.running = true;
+ };
+ Timer.prototype.stop = function() {
+ if (this.running) {
+ clearTimeout(this.id);
+ this.running = false;
+ return this.id = null;
+ }
+ };
+ return Timer;
+})();
+Timer.start = function(timeout, func) {
+ return setTimeout(func, timeout);
+};
+
+// options
+var Options;
+__options.Options = Options = (function() {
+ function Options() {
+ this.host = null;
+ this.port = 35729;
+ this.snipver = null;
+ this.ext = null;
+ this.extver = null;
+ this.mindelay = 1000;
+ this.maxdelay = 60000;
+ this.handshake_timeout = 5000;
+ }
+ Options.prototype.set = function(name, value) {
+ switch (typeof this[name]) {
+ case 'undefined':
+ break;
+ case 'number':
+ return this[name] = +value;
+ default:
+ return this[name] = value;
+ }
+ };
+ return Options;
+})();
+Options.extract = function(document) {
+ var element, keyAndValue, m, mm, options, pair, src, _i, _j, _len, _len2, _ref, _ref2;
+ _ref = document.getElementsByTagName('script');
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ element = _ref[_i];
+ if ((src = element.src) && (m = src.match(/^[^:]+:\/\/(.*)\/z?livereload\.js(?:\?(.*))?$/))) {
+ options = new Options();
+ if (mm = m[1].match(/^([^\/:]+)(?::(\d+))?$/)) {
+ options.host = mm[1];
+ if (mm[2]) {
+ options.port = parseInt(mm[2], 10);
+ }
+ }
+ if (m[2]) {
+ _ref2 = m[2].split('&');
+ for (_j = 0, _len2 = _ref2.length; _j < _len2; _j++) {
+ pair = _ref2[_j];
+ if ((keyAndValue = pair.split('=')).length > 1) {
+ options.set(keyAndValue[0].replace(/-/g, '_'), keyAndValue.slice(1).join('='));
+ }
+ }
+ }
+ return options;
+ }
+ }
+ return null;
+};
+
+// reloader
+var IMAGE_STYLES, Reloader, numberOfMatchingSegments, pathFromUrl, pathsMatch, pickBestMatch, splitUrl;
+var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+splitUrl = function(url) {
+ var hash, index, params;
+ if ((index = url.indexOf('#')) >= 0) {
+ hash = url.slice(index);
+ url = url.slice(0, index);
+ } else {
+ hash = '';
+ }
+ if ((index = url.indexOf('?')) >= 0) {
+ params = url.slice(index);
+ url = url.slice(0, index);
+ } else {
+ params = '';
+ }
+ return {
+ url: url,
+ params: params,
+ hash: hash
+ };
+};
+pathFromUrl = function(url) {
+ var path;
+ url = splitUrl(url).url;
+ if (url.indexOf('file://') === 0) {
+ path = url.replace(/^file:\/\/(localhost)?/, '');
+ } else {
+ path = url.replace(/^([^:]+:)?\/\/([^:\/]+)(:\d*)?\//, '/');
+ }
+ return decodeURIComponent(path);
+};
+pickBestMatch = function(path, objects, pathFunc) {
+ var bestMatch, object, score, _i, _len;
+ bestMatch = {
+ score: 0
+ };
+ for (_i = 0, _len = objects.length; _i < _len; _i++) {
+ object = objects[_i];
+ score = numberOfMatchingSegments(path, pathFunc(object));
+ if (score > bestMatch.score) {
+ bestMatch = {
+ object: object,
+ score: score
+ };
+ }
+ }
+ if (bestMatch.score > 0) {
+ return bestMatch;
+ } else {
+ return null;
+ }
+};
+numberOfMatchingSegments = function(path1, path2) {
+ var comps1, comps2, eqCount, len;
+ path1 = path1.replace(/^\/+/, '').toLowerCase();
+ path2 = path2.replace(/^\/+/, '').toLowerCase();
+ if (path1 === path2) {
+ return 10000;
+ }
+ comps1 = path1.split('/').reverse();
+ comps2 = path2.split('/').reverse();
+ len = Math.min(comps1.length, comps2.length);
+ eqCount = 0;
+ while (eqCount < len && comps1[eqCount] === comps2[eqCount]) {
+ ++eqCount;
+ }
+ return eqCount;
+};
+pathsMatch = function(path1, path2) {
+ return numberOfMatchingSegments(path1, path2) > 0;
+};
+IMAGE_STYLES = [
+ {
+ selector: 'background',
+ styleNames: ['backgroundImage']
+ }, {
+ selector: 'border',
+ styleNames: ['borderImage', 'webkitBorderImage', 'MozBorderImage']
+ }
+];
+__reloader.Reloader = Reloader = (function() {
+ function Reloader(window, console, Timer) {
+ this.window = window;
+ this.console = console;
+ this.Timer = Timer;
+ this.document = this.window.document;
+ this.stylesheetGracePeriod = 200;
+ this.importCacheWaitPeriod = 200;
+ this.plugins = [];
+ }
+ Reloader.prototype.addPlugin = function(plugin) {
+ return this.plugins.push(plugin);
+ };
+ Reloader.prototype.analyze = function(callback) {
+ return results;
+ };
+ Reloader.prototype.reload = function(path, options) {
+ var plugin, _i, _len, _ref;
+ _ref = this.plugins;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ plugin = _ref[_i];
+ if (plugin.reload && plugin.reload(path, options)) {
+ return;
+ }
+ }
+ if (options.liveCSS) {
+ if (path.match(/\.css$/i)) {
+ if (this.reloadStylesheet(path)) {
+ return;
+ }
+ }
+ }
+ if (options.liveImg) {
+ if (path.match(/\.(jpe?g|png|gif)$/i)) {
+ this.reloadImages(path);
+ return;
+ }
+ }
+ return this.reloadPage();
+ };
+ Reloader.prototype.reloadPage = function() {
+ return this.window.document.location.reload();
+ };
+ Reloader.prototype.reloadImages = function(path) {
+ var expando, img, selector, styleNames, styleSheet, _i, _j, _k, _l, _len, _len2, _len3, _len4, _ref, _ref2, _ref3, _ref4, _results;
+ expando = this.generateUniqueString();
+ _ref = this.document.images;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ img = _ref[_i];
+ if (pathsMatch(path, pathFromUrl(img.src))) {
+ img.src = this.generateCacheBustUrl(img.src, expando);
+ }
+ }
+ if (this.document.querySelectorAll) {
+ for (_j = 0, _len2 = IMAGE_STYLES.length; _j < _len2; _j++) {
+ _ref2 = IMAGE_STYLES[_j], selector = _ref2.selector, styleNames = _ref2.styleNames;
+ _ref3 = this.document.querySelectorAll("[style*=" + selector + "]");
+ for (_k = 0, _len3 = _ref3.length; _k < _len3; _k++) {
+ img = _ref3[_k];
+ this.reloadStyleImages(img.style, styleNames, path, expando);
+ }
+ }
+ }
+ if (this.document.styleSheets) {
+ _ref4 = this.document.styleSheets;
+ _results = [];
+ for (_l = 0, _len4 = _ref4.length; _l < _len4; _l++) {
+ styleSheet = _ref4[_l];
+ _results.push(this.reloadStylesheetImages(styleSheet, path, expando));
+ }
+ return _results;
+ }
+ };
+ Reloader.prototype.reloadStylesheetImages = function(styleSheet, path, expando) {
+ var rule, rules, styleNames, _i, _j, _len, _len2;
+ try {
+ rules = styleSheet != null ? styleSheet.cssRules : void 0;
+ } catch (e) {
+
+ }
+ if (!rules) {
+ return;
+ }
+ for (_i = 0, _len = rules.length; _i < _len; _i++) {
+ rule = rules[_i];
+ switch (rule.type) {
+ case CSSRule.IMPORT_RULE:
+ this.reloadStylesheetImages(rule.styleSheet, path, expando);
+ break;
+ case CSSRule.STYLE_RULE:
+ for (_j = 0, _len2 = IMAGE_STYLES.length; _j < _len2; _j++) {
+ styleNames = IMAGE_STYLES[_j].styleNames;
+ this.reloadStyleImages(rule.style, styleNames, path, expando);
+ }
+ break;
+ case CSSRule.MEDIA_RULE:
+ this.reloadStylesheetImages(rule, path, expando);
+ }
+ }
+ };
+ Reloader.prototype.reloadStyleImages = function(style, styleNames, path, expando) {
+ var newValue, styleName, value, _i, _len;
+ for (_i = 0, _len = styleNames.length; _i < _len; _i++) {
+ styleName = styleNames[_i];
+ value = style[styleName];
+ if (typeof value === 'string') {
+ newValue = value.replace(/\burl\s*\(([^)]*)\)/, __bind(function(match, src) {
+ if (pathsMatch(path, pathFromUrl(src))) {
+ return "url(" + (this.generateCacheBustUrl(src, expando)) + ")";
+ } else {
+ return match;
+ }
+ }, this));
+ if (newValue !== value) {
+ style[styleName] = newValue;
+ }
+ }
+ }
+ };
+ Reloader.prototype.reloadStylesheet = function(path) {
+ var imported, link, links, match, style, _i, _j, _k, _len, _len2, _len3, _ref;
+ links = (function() {
+ var _i, _len, _ref, _results;
+ _ref = this.document.getElementsByTagName('link');
+ _results = [];
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ link = _ref[_i];
+ if (link.rel === 'stylesheet' && !link.__LiveReload_pendingRemoval) {
+ _results.push(link);
+ }
+ }
+ return _results;
+ }).call(this);
+ imported = [];
+ _ref = this.document.getElementsByTagName('style');
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ style = _ref[_i];
+ if (style.sheet) {
+ this.collectImportedStylesheets(style, style.sheet, imported);
+ }
+ }
+ for (_j = 0, _len2 = links.length; _j < _len2; _j++) {
+ link = links[_j];
+ this.collectImportedStylesheets(link, link.sheet, imported);
+ }
+ this.console.log("LiveReload found " + links.length + " LINKed stylesheets, " + imported.length + " @imported stylesheets");
+ match = pickBestMatch(path, links.concat(imported), function(l) {
+ return pathFromUrl(l.href);
+ });
+ if (match) {
+ if (match.object.rule) {
+ this.console.log("LiveReload is reloading imported stylesheet: " + match.object.href);
+ this.reattachImportedRule(match.object);
+ } else {
+ this.console.log("LiveReload is reloading stylesheet: " + match.object.href);
+ this.reattachStylesheetLink(match.object);
+ }
+ } else {
+ this.console.log("LiveReload will reload all stylesheets because path '" + path + "' did not match any specific one");
+ for (_k = 0, _len3 = links.length; _k < _len3; _k++) {
+ link = links[_k];
+ this.reattachStylesheetLink(link);
+ }
+ }
+ return true;
+ };
+ Reloader.prototype.collectImportedStylesheets = function(link, styleSheet, result) {
+ var index, rule, rules, _len;
+ try {
+ rules = styleSheet != null ? styleSheet.cssRules : void 0;
+ } catch (e) {
+
+ }
+ if (rules && rules.length) {
+ for (index = 0, _len = rules.length; index < _len; index++) {
+ rule = rules[index];
+ switch (rule.type) {
+ case CSSRule.CHARSET_RULE:
+ continue;
+ case CSSRule.IMPORT_RULE:
+ result.push({
+ link: link,
+ rule: rule,
+ index: index,
+ href: rule.href
+ });
+ this.collectImportedStylesheets(link, rule.styleSheet, result);
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ };
+ Reloader.prototype.reattachStylesheetLink = function(link) {
+ var clone, parent, timer;
+ if (link.__LiveReload_pendingRemoval) {
+ return;
+ }
+ link.__LiveReload_pendingRemoval = true;
+ clone = link.cloneNode(false);
+ clone.href = this.generateCacheBustUrl(link.href);
+ parent = link.parentNode;
+ if (parent.lastChild === link) {
+ parent.appendChild(clone);
+ } else {
+ parent.insertBefore(clone, link.nextSibling);
+ }
+ timer = new this.Timer(function() {
+ if (link.parentNode) {
+ return link.parentNode.removeChild(link);
+ }
+ });
+ return timer.start(this.stylesheetGracePeriod);
+ };
+ Reloader.prototype.reattachImportedRule = function(_arg) {
+ var href, index, link, media, newRule, parent, rule, tempLink;
+ rule = _arg.rule, index = _arg.index, link = _arg.link;
+ parent = rule.parentStyleSheet;
+ href = this.generateCacheBustUrl(rule.href);
+ media = rule.media.length ? [].join.call(rule.media, ', ') : '';
+ newRule = "@import url(\"" + href + "\") " + media + ";";
+ rule.__LiveReload_newHref = href;
+ tempLink = this.document.createElement("link");
+ tempLink.rel = 'stylesheet';
+ tempLink.href = href;
+ tempLink.__LiveReload_pendingRemoval = true;
+ if (link.parentNode) {
+ link.parentNode.insertBefore(tempLink, link);
+ }
+ return this.Timer.start(this.importCacheWaitPeriod, __bind(function() {
+ if (tempLink.parentNode) {
+ tempLink.parentNode.removeChild(tempLink);
+ }
+ if (rule.__LiveReload_newHref !== href) {
+ return;
+ }
+ parent.insertRule(newRule, index);
+ parent.deleteRule(index + 1);
+ rule = parent.cssRules[index];
+ rule.__LiveReload_newHref = href;
+ return this.Timer.start(this.importCacheWaitPeriod, __bind(function() {
+ if (rule.__LiveReload_newHref !== href) {
+ return;
+ }
+ parent.insertRule(newRule, index);
+ return parent.deleteRule(index + 1);
+ }, this));
+ }, this));
+ };
+ Reloader.prototype.generateUniqueString = function() {
+ return 'livereload=' + Date.now();
+ };
+ Reloader.prototype.generateCacheBustUrl = function(url, expando) {
+ var hash, oldParams, params, _ref;
+ if (expando == null) {
+ expando = this.generateUniqueString();
+ }
+ _ref = splitUrl(url), url = _ref.url, hash = _ref.hash, oldParams = _ref.params;
+ params = oldParams.replace(/(\?|&)livereload=(\d+)/, function(match, sep) {
+ return "" + sep + expando;
+ });
+ if (params === oldParams) {
+ if (oldParams.length === 0) {
+ params = "?" + expando;
+ } else {
+ params = "" + oldParams + "&" + expando;
+ }
+ }
+ return url + params + hash;
+ };
+ return Reloader;
+})();
+
+// livereload
+var Connector, LiveReload, Options, Reloader, Timer;
+var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
+Connector = __connector.Connector;
+Timer = __timer.Timer;
+Options = __options.Options;
+Reloader = __reloader.Reloader;
+__livereload.LiveReload = LiveReload = (function() {
+ function LiveReload(window) {
+ this.window = window;
+ this.listeners = {};
+ this.plugins = [];
+ this.pluginIdentifiers = {};
+ this.console = this.window.console && this.window.console.log && this.window.console.error ? this.window.console : {
+ log: function() {},
+ error: function() {}
+ };
+ if (!(this.WebSocket = this.window.WebSocket || this.window.MozWebSocket)) {
+ console.error("LiveReload disabled because the browser does not seem to support web sockets");
+ return;
+ }
+ if (!(this.options = Options.extract(this.window.document))) {
+ console.error("LiveReload disabled because it could not find its own <SCRIPT> tag");
+ return;
+ }
+ this.reloader = new Reloader(this.window, this.console, Timer);
+ this.connector = new Connector(this.options, this.WebSocket, Timer, {
+ connecting: __bind(function() {}, this),
+ socketConnected: __bind(function() {}, this),
+ connected: __bind(function(protocol) {
+ var _base;
+ if (typeof (_base = this.listeners).connect === "function") {
+ _base.connect();
+ }
+ this.log("LiveReload is connected to " + this.options.host + ":" + this.options.port + " (protocol v" + protocol + ").");
+ return this.analyze();
+ }, this),
+ error: __bind(function(e) {
+ if (e instanceof ProtocolError) {
+ return console.log("" + e.message + ".");
+ } else {
+ return console.log("LiveReload internal error: " + e.message);
+ }
+ }, this),
+ disconnected: __bind(function(reason, nextDelay) {
+ var _base;
+ if (typeof (_base = this.listeners).disconnect === "function") {
+ _base.disconnect();
+ }
+ switch (reason) {
+ case 'cannot-connect':
+ return this.log("LiveReload cannot connect to " + this.options.host + ":" + this.options.port + ", will retry in " + nextDelay + " sec.");
+ case 'broken':
+ return this.log("LiveReload disconnected from " + this.options.host + ":" + this.options.port + ", reconnecting in " + nextDelay + " sec.");
+ case 'handshake-timeout':
+ return this.log("LiveReload cannot connect to " + this.options.host + ":" + this.options.port + " (handshake timeout), will retry in " + nextDelay + " sec.");
+ case 'handshake-failed':
+ return this.log("LiveReload cannot connect to " + this.options.host + ":" + this.options.port + " (handshake failed), will retry in " + nextDelay + " sec.");
+ case 'manual':
+ break;
+ case 'error':
+ break;
+ default:
+ return this.log("LiveReload disconnected from " + this.options.host + ":" + this.options.port + " (" + reason + "), reconnecting in " + nextDelay + " sec.");
+ }
+ }, this),
+ message: __bind(function(message) {
+ switch (message.command) {
+ case 'reload':
+ return this.performReload(message);
+ case 'alert':
+ return this.performAlert(message);
+ }
+ }, this)
+ });
+ }
+ LiveReload.prototype.on = function(eventName, handler) {
+ return this.listeners[eventName] = handler;
+ };
+ LiveReload.prototype.log = function(message) {
+ return this.console.log("" + message);
+ };
+ LiveReload.prototype.performReload = function(message) {
+ var _ref, _ref2;
+ this.log("LiveReload received reload request for " + message.path + ".");
+ return this.reloader.reload(message.path, {
+ liveCSS: (_ref = message.liveCSS) != null ? _ref : true,
+ liveImg: (_ref2 = message.liveImg) != null ? _ref2 : true,
+ originalPath: message.originalPath || ''
+ });
+ };
+ LiveReload.prototype.performAlert = function(message) {
+ return alert(message.message);
+ };
+ LiveReload.prototype.shutDown = function() {
+ var _base;
+ this.connector.disconnect();
+ this.log("LiveReload disconnected.");
+ return typeof (_base = this.listeners).shutdown === "function" ? _base.shutdown() : void 0;
+ };
+ LiveReload.prototype.hasPlugin = function(identifier) {
+ return !!this.pluginIdentifiers[identifier];
+ };
+ LiveReload.prototype.addPlugin = function(pluginClass) {
+ var plugin;
+ if (this.hasPlugin(pluginClass.identifier)) {
+ return;
+ }
+ this.pluginIdentifiers[pluginClass.identifier] = true;
+ plugin = new pluginClass(this.window, {
+ _livereload: this,
+ _reloader: this.reloader,
+ _connector: this.connector,
+ console: this.console,
+ Timer: Timer,
+ generateCacheBustUrl: __bind(function(url) {
+ return this.reloader.generateCacheBustUrl(url);
+ }, this)
+ });
+ this.plugins.push(plugin);
+ this.reloader.addPlugin(plugin);
+ };
+ LiveReload.prototype.analyze = function() {
+ var plugin, pluginData, pluginsData, _i, _len, _ref;
+ if (!(this.connector.protocol >= 7)) {
+ return;
+ }
+ pluginsData = {};
+ _ref = this.plugins;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ plugin = _ref[_i];
+ pluginsData[plugin.constructor.identifier] = pluginData = (typeof plugin.analyze === "function" ? plugin.analyze() : void 0) || {};
+ pluginData.version = plugin.constructor.version;
+ }
+ this.connector.sendCommand({
+ command: 'info',
+ plugins: pluginsData,
+ url: this.window.location.href
+ });
+ };
+ return LiveReload;
+})();
+
+// less
+var LessPlugin;
+__less = LessPlugin = (function() {
+ LessPlugin.identifier = 'less';
+ LessPlugin.version = '1.0';
+ function LessPlugin(window, host) {
+ this.window = window;
+ this.host = host;
+ }
+ LessPlugin.prototype.reload = function(path, options) {
+ if (this.window.less && this.window.less.refresh) {
+ if (path.match(/\.less$/i)) {
+ return this.reloadLess(path);
+ }
+ if (options.originalPath.match(/\.less$/i)) {
+ return this.reloadLess(options.originalPath);
+ }