spar 0.2.7 → 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. data/README.md +272 -1
  2. data/bin/spar +30 -1
  3. data/lib/spar.rb +128 -7
  4. data/lib/spar/assets/404.jpg +0 -0
  5. data/lib/spar/assets/500.jpg +0 -0
  6. data/lib/spar/cli.rb +75 -22
  7. data/lib/spar/compiled_asset.rb +90 -0
  8. data/lib/spar/compiler.rb +74 -0
  9. data/lib/spar/compressor.rb +18 -0
  10. data/lib/spar/deployers/cloudfront_deployer.rb +33 -0
  11. data/lib/spar/deployers/deployer.rb +26 -0
  12. data/lib/spar/deployers/local_deployer.rb +15 -0
  13. data/lib/spar/deployers/s3_deployer.rb +75 -0
  14. data/lib/spar/directive_processor.rb +36 -0
  15. data/lib/spar/exceptions.rb +330 -0
  16. data/lib/spar/generators/templates/{README → base/README} +0 -0
  17. data/lib/spar/generators/templates/base/config.yml +12 -0
  18. data/lib/spar/generators/templates/pages/haml/app/pages/index.html.haml +11 -0
  19. data/lib/spar/generators/templates/pages/html/app/pages/index.html +16 -0
  20. data/lib/spar/generators/templates/{app/assets/javascripts/javascript.js.coffee → scripts/coffee/app/javascripts/application.js.coffee} +6 -3
  21. data/lib/spar/generators/templates/scripts/js/app/javascripts/application.js +11 -0
  22. data/lib/spar/generators/templates/styles/css/app/stylesheets/application.css +18 -0
  23. data/lib/spar/generators/templates/{app/assets → styles/sass/app}/stylesheets/application.css.sass +8 -4
  24. data/lib/spar/helpers.rb +31 -102
  25. data/lib/spar/not_found.rb +64 -0
  26. data/lib/spar/rewrite.rb +29 -0
  27. data/lib/spar/static.rb +46 -0
  28. data/lib/spar/tasks.rb +8 -13
  29. data/lib/spar/version.rb +1 -1
  30. metadata +261 -66
  31. data/lib/spar/assets.rb +0 -78
  32. data/lib/spar/base.rb +0 -54
  33. data/lib/spar/css_compressor.rb +0 -17
  34. data/lib/spar/deployer.rb +0 -198
  35. data/lib/spar/generators/application.rb +0 -42
  36. data/lib/spar/generators/templates/Gemfile +0 -3
  37. data/lib/spar/generators/templates/Rakefile +0 -8
  38. data/lib/spar/generators/templates/app/views/index.haml +0 -7
  39. data/lib/spar/generators/templates/config.ru +0 -9
  40. data/lib/spar/generators/templates/config/application.rb +0 -12
  41. data/lib/spar/generators/templates/script/server +0 -1
  42. data/lib/spar/static_compiler.rb +0 -91
@@ -1,91 +0,0 @@
1
- require 'fileutils'
2
- require 'rack/test'
3
-
4
- module Spar
5
- class StaticCompiler
6
-
7
- VIEW_PATH_SPLITER = /(.*)\/([^\/]+?)/
8
-
9
- attr_accessor :app, :env, :asset_path, :paths
10
-
11
- def self.load_tasks
12
- Dir[File.expand_path('../tasks/spar.rake', __FILE__)].each { |ext| load ext }
13
- end
14
-
15
- def initialize(app, options = {})
16
- @app = app
17
- @env = app.asset_env
18
- @public_path = app.public_path
19
- @asset_path = File.join(app.public_path, app.asset_prefix)
20
- @paths = App.asset_precompile
21
- @digest = app.asset_digest
22
- @zip_files = options.delete(:zip_files) || /\.(?:css|html|js|svg|txt|xml)$/
23
- @view_paths = app.precompile_view_paths || []
24
- @digest_free_assets = app.digest_free_assets || []
25
- end
26
-
27
- def compile
28
- manifest = {}
29
- @env.each_logical_path do |logical_path|
30
- next unless compile_path?(logical_path)
31
- if asset = @env.find_asset(logical_path)
32
- manifest[logical_path] = write_asset(asset)
33
- end
34
- end
35
- write_manifest(manifest)
36
- browser = Rack::Test::Session.new(Rack::MockSession.new(@app))
37
- @view_paths.each do |path|
38
- browser.get(path)
39
- write_view(path, browser.last_response.body)
40
- end
41
- end
42
-
43
- def write_manifest(manifest)
44
- FileUtils.mkdir_p(@asset_path)
45
- File.open("#{@asset_path}/manifest.yml", 'wb') do |f|
46
- YAML.dump(manifest, f)
47
- end
48
- end
49
-
50
- def write_view(path, body)
51
- path = File.join(@public_path,path)
52
- FileUtils.mkdir_p path
53
- File.open(File.join(path,"index.html"), 'wb') do |f|
54
- f.write(body)
55
- end
56
- end
57
-
58
- def write_asset(asset)
59
- path_for(asset).tap do |path|
60
- filename = File.join(asset_path, path)
61
- FileUtils.mkdir_p File.dirname(filename)
62
- asset.write_to(filename)
63
- # Use "example.txtgz" instead of "example.txt.gz" for Safari gzip workaround.
64
- asset.write_to("#{filename}gz") if filename.to_s =~ @zip_files
65
- end
66
- end
67
-
68
- def compile_path?(logical_path)
69
- @paths.each do |path|
70
- case path
71
- when Regexp
72
- return true if path.match(logical_path)
73
- when Proc
74
- return true if path.call(logical_path)
75
- else
76
- return true if File.fnmatch(path.to_s, logical_path)
77
- end
78
- end
79
- false
80
- end
81
-
82
- def path_for(asset)
83
- @digest_free_assets.each do |digest_free_path|
84
- if digest_free_path.match(asset.logical_path)
85
- return asset.logical_path
86
- end
87
- end
88
- @digest ? asset.digest_path : asset.logical_path
89
- end
90
- end
91
- end