Module: Dashboard::BowerHelpers
- Included in:
- Sinatra::AssetPack::Options
- Defined in:
- lib/rubyneat_dashboard/bower_dsl.rb
Instance Method Summary collapse
- #bower_no_deps?(mod) ⇒ Boolean
-
#bower_packages ⇒ Object
generates a list of Bower package names and their json manifests [pkgname, manifest].
-
#bower_resolve(modspec) ⇒ Object
The parameter may either be a module (string), or a [module, ver] pair.
- #bower_root(path = 'bower_components') ⇒ Object
- #bower_route(path = '/bower') ⇒ Object
- #bower_serve ⇒ Object
- #gem_root ⇒ Object
- #path_to(pkg, files) ⇒ Object
Instance Method Details
#bower_no_deps?(mod) ⇒ Boolean
52 53 54 |
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 52 def bower_no_deps?(mod) bower_resolve(mod)[:deps].nil? or bower_resolve(mod)[:deps].empty? end |
#bower_packages ⇒ Object
generates a list of Bower package names and their json manifests [pkgname, manifest]
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 38 def bower_packages @bower_packages ||= Dir["#{File.(bower_root, gem_root)}/*/.bower.json"]. map{ |path| [File.basename(File.dirname(path)), File.read(path)] }. map{ |pkg, json| [pkg, JSON::Stream::Parser.parse(json) ]}. map{ |pkg, manifest| [pkg, manifest['main'], manifest['version'], manifest['dependencies']] }. map{ |pkg, files, ver, deps| [pkg, ver, files || "#{pkg}.js", deps]}. inject({}){ |memo, (pkg, ver, files, deps)| memo[pkg] = { files: path_to(pkg, files.kind_of?(String)? [files] : files), deps: deps, version: ver} memo } end |
#bower_resolve(modspec) ⇒ Object
The parameter may either be a module (string), or a [module, ver] pair. Find and return the matchinng module, or throw an exception if the resolution fails.
59 60 61 62 63 64 65 66 67 |
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 59 def bower_resolve(modspec) mod, verspec = if modspec.kind_of?(Array) modspec else [modspec, '>=0.0.0'] end raise DashboardException.new("Missing Asset Module #{mod} version #{verspec}") if bower_packages[mod].nil? bower_packages[mod] # FIXME: must check for version match too!!! end |
#bower_root(path = 'bower_components') ⇒ Object
19 20 21 |
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 19 def bower_root(path = 'bower_components') @bower_root ||= path end |
#bower_route(path = '/bower') ⇒ Object
23 24 25 |
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 23 def bower_route(path = '/bower') @bower_route ||= path end |
#bower_serve ⇒ Object
27 28 29 |
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 27 def bower_serve serve bower_route(), from: bower_root end |
#gem_root ⇒ Object
17 |
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 17 def gem_root; @gem_root ||= Dashboard::BowerDSL.gem_root; end |
#path_to(pkg, files) ⇒ Object
31 32 33 34 35 |
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 31 def path_to(pkg, files) files.map do |file| File. file, File.(pkg, bower_route) end end |