Module: Dashboard::BowerHelpers

Included in:
Sinatra::AssetPack::Options
Defined in:
lib/rubyneat_dashboard/bower_dsl.rb

Instance Method Summary collapse

Instance Method Details

#bower_no_deps?(mod) ⇒ Boolean

Returns:

  • (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_packagesObject

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.expand_path(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.

Raises:



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_serveObject



27
28
29
# File 'lib/rubyneat_dashboard/bower_dsl.rb', line 27

def bower_serve
  serve bower_route(), from: bower_root
end

#gem_rootObject



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.expand_path file, File.expand_path(pkg, bower_route)
  end
end