global_assets 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +15 -0
  2. data/Rakefile +7 -0
  3. data/lib/global_assets.rb +67 -0
  4. metadata +61 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTk1ZTJlOTc3MGQ0NDk1NDUxMGNiMWM3MWU0ZTJhYjk3NDU0ZWFlMg==
5
+ data.tar.gz: !binary |-
6
+ ZmZjYjc2YzczNmZlNDQ4NzVhZThkYzhkMDkxMzVjMDlhNWM5ZmU2Ng==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ODQyY2VhMDVhNWMzMGE1NTBhM2YwNzg4OTZjYWQxYzZjYjk3ZWMyZTgxOTY0
10
+ ZGYzYjM0OTJhNmI5MWU2ZWY4Y2NhZDQxMzk4NTVkM2VlYzQ0YjllMmQ3MTI0
11
+ ZjBjNjYzNzQxYzZhZmZjZjBkY2I0OTIxMGRhMjllZTgzOTkwNTA=
12
+ data.tar.gz: !binary |-
13
+ ZDA4NWZmNjkwZmYzMDIxMzcxYTViZWFlMGNmOWViYzJmNGM4MTdmMmE1MWU0
14
+ NzBhZmI2NjBiMWNjMjBhY2FlMTE2OGM1NDUxMGU1YzAwZDU5ZmYyMmU1NzYx
15
+ NjIzODRlOWExOTdlNWQ2MmU5YWM2NjQ4NzYxYjZjYzE1NjgwNjQ=
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ namespace :global_assets do
2
+
3
+ desc "Place the global images/css/js in their respective places in the local project."
4
+ task :place do
5
+ GlobalAssets.move_global_files
6
+ end
7
+ end
@@ -0,0 +1,67 @@
1
+ require 'yaml'
2
+ require 'fileutils'
3
+ require 'erb'
4
+ require 'ostruct'
5
+
6
+ class GlobalAssets
7
+ class << self
8
+ def inherited(base)
9
+ configs = YAML.load_file("config/#{snake_case(base)}.yml")
10
+ if configs[snake_case(base)] && configs[snake_case(base)]["target_dirs"]
11
+ base.set(:target_js, configs[snake_case(base)]["target_dirs"]["js"])
12
+ base.set(:target_css, configs[snake_case(base)]["target_dirs"]["css"])
13
+ base.set(:target_img, configs[snake_case(base)]["target_dirs"]["img"])
14
+ end
15
+ super
16
+ end
17
+
18
+ def snippet(name, locals = {})
19
+ file_at = File.join(settings[:source_dir], "snippets", name.to_s + ".erb")
20
+ return erb(File.read(file_at), locals) if(File.exists?(file_at))
21
+ raise Exception, "Could not find Snippet: [#{name.to_s}]"
22
+ end
23
+
24
+ def erb(template, locals)
25
+ ERB.new(template).result(OpenStruct.new(locals).instance_eval { binding })
26
+ end
27
+
28
+ def move_global_files
29
+ # delete all 3 target directories
30
+ puts "Wiping old global directories..."
31
+ [settings[:target_js], settings[:target_js], settings[:target_js]].each do |dir|
32
+ FileUtils.rm_rf(dir)
33
+ FileUtils.mkdir_p(dir)
34
+ end
35
+ # copy over all 3 source directories to the target dirs
36
+ puts "Moving global JS..."
37
+ FileUtils.cp_r(File.join(settings[:source_dir], "js/."), settings[:target_js])
38
+ puts "Moving global CSS..."
39
+ FileUtils.cp_r(File.join(settings[:source_dir], "css/."), settings[:target_css])
40
+ puts "Moving global Images..."
41
+ FileUtils.cp_r(File.join(settings[:source_dir], "img/."), settings[:target_img])
42
+ end
43
+
44
+ def set(key, val)
45
+ settings[key] = val
46
+ end
47
+
48
+ def settings
49
+ @settings ||= {}
50
+ end
51
+
52
+ private
53
+ def snake_case(camel_cased_word)
54
+ camel_cased_word.to_s.gsub(/::/, '/').
55
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
56
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
57
+ tr("-", "_").
58
+ downcase
59
+ end
60
+ end
61
+ end
62
+
63
+ __END__
64
+
65
+ require './lib/global_assets'
66
+ class EMEGlobalAssets; include GlobalAssets; end
67
+ EMEGlobalAssets.snippet(:test)
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: global_assets
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Reister
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: minitest
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Share all your assets between all your projects via personal gem/git
28
+ repo.
29
+ email:
30
+ - chris@chrisreister.com
31
+ executables: []
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - Rakefile
36
+ - lib/global_assets.rb
37
+ homepage: https://github.com/chrisftw/global_assets
38
+ licenses:
39
+ - MIT
40
+ metadata: {}
41
+ post_install_message:
42
+ rdoc_options: []
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ! '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ requirements: []
56
+ rubyforge_project:
57
+ rubygems_version: 2.2.2
58
+ signing_key:
59
+ specification_version: 4
60
+ summary: Global asset manager for Ruby projects that share assets.
61
+ test_files: []