knockout-assets 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Knockout Assets
2
+
3
+ A gem to generate paths for knockout templates using the asset pipeline.
@@ -0,0 +1,20 @@
1
+ module KnockoutAssets
2
+ def knockout_assets(options = {})
3
+ options = {
4
+ exclude: nil,
5
+ preload: true,
6
+ }.merge(options)
7
+
8
+ files = {}
9
+ Rails.application.config.assets.paths.each { |p|
10
+ Dir["#{p}/**/*"].select { |f| f =~ /.*\.(png|gif|jpg|jpeg|bmp)/ }.each { |f|
11
+ item_path = f[p.length+1..-1]
12
+ if !options[:exclude] || options[:exclude] !~ item_path
13
+ files[item_path] = path_to_image(item_path)
14
+ end
15
+ }
16
+ }
17
+
18
+ render :partial => '/knockout_assets', locals: {asset_files: files, preload: options[:preload]}
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ <% # Prepare the asset hash and populate it %>
2
+ <script type="text/javascript">
3
+ var knockout_assets = {};
4
+
5
+ <% asset_files.each { |k,v| %>
6
+ knockout_assets['<%= k %>'] = '<%= v %>';
7
+ <% } %>
8
+
9
+ ko.bindingHandlers.img = {
10
+ init: function (element, valueAccessor) {
11
+ var str = ko.utils.unwrapObservable(valueAccessor());
12
+ $(element).attr('src', knockout_assets[str]);
13
+ }
14
+ };
15
+ </script>
16
+
17
+ <% # Write out all the images hidden. This preloads them so templates show instantly %>
18
+ <% if preload
19
+ asset_files.each { |k, v| %>
20
+ <img src="<%= v %>" style="display: none;"/>
21
+ <% }
22
+ end
23
+ %>
@@ -0,0 +1,2 @@
1
+ require_relative 'assets/version'
2
+ require_relative 'assets/engine'
@@ -0,0 +1,11 @@
1
+ require 'rails/engine'
2
+ require_relative '../../../app/helpers/knockout_assets'
3
+
4
+ module KnockoutAssets
5
+ class Engine < ::Rails::Engine
6
+ end
7
+ end
8
+
9
+ ActiveSupport.on_load :action_controller do
10
+ helper KnockoutAssets
11
+ end
@@ -0,0 +1,3 @@
1
+ module KnockoutAssets
2
+ VERSION = '0.0.1'
3
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: knockout-assets
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Harry Lascelles
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ type: :runtime
16
+ name: rails
17
+ prerelease: false
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Prepares the SHA values of CDN assets in a JS hash. Knockout templates
31
+ can then refer to them without being rendered by erb or haml every time.
32
+ email:
33
+ - harry@harrylascelles.com
34
+ executables: []
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - app/views/_knockout_assets.erb
39
+ - app/helpers/knockout_assets.rb
40
+ - lib/knockout/assets/engine.rb
41
+ - lib/knockout/assets/version.rb
42
+ - lib/knockout/assets.rb
43
+ - README.md
44
+ homepage: https://github.com/hlascelles/knockout-assets
45
+ licenses: []
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 1.8.25
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: Prepares the SHA values of CDN assets for inclusion in templates.
68
+ test_files: []
69
+ has_rdoc: