Module: Compass::Frameworks

Extended by:
Frameworks
Included in:
Frameworks
Defined in:
lib/compass/frameworks.rb

Defined Under Namespace

Classes: Framework

Constant Summary collapse

ALL =
[]
DEFAULT_FRAMEWORKS_PATH =
File.join(Compass.lib_directory, 'compass', 'frameworks')

Instance Method Summary collapse

Instance Method Details

#[](name) ⇒ Object



38
39
40
# File 'lib/compass/frameworks.rb', line 38

def [](name)
  ALL.detect{|f| f.name.to_s == name.to_s}
end

#discover(frameworks_directory) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/compass/frameworks.rb', line 42

def discover(frameworks_directory)
  frameworks_directory = DEFAULT_FRAMEWORKS_PATH if frameworks_directory == :defaults
  frameworks_directory = Dir.new(frameworks_directory) unless frameworks_directory.is_a?(Dir)
  frameworks_directory.entries.reject{|e| e[0] == ?.}.each do |framework|
    register_directory File.join(frameworks_directory.path, framework)
  end
end

#register(name, *arguments) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/compass/frameworks.rb', line 30

def register(name, *arguments)
  if idx = ALL.index(self[name])
    ALL[idx] = Framework.new(name, *arguments)
  else
    ALL << Framework.new(name, *arguments)
  end
end

#register_directory(directory) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/compass/frameworks.rb', line 50

def register_directory(directory)
  loaders = [
    File.join(directory, "compass_init.rb"),
    File.join(directory, 'lib', File.basename(directory)+".rb"),
    File.join(directory, File.basename(directory)+".rb")
  ]
  loader = loaders.detect{|l| File.exists?(l)}
  if loader
    require loader
  else
    register File.basename(directory), directory
  end
end

#template_exists?(template) ⇒ Boolean

Returns:

  • (Boolean)


64
65
66
67
68
69
70
71
# File 'lib/compass/frameworks.rb', line 64

def template_exists?(template)
  framework_name, template = template.split(%r{/}, 2)
  template ||= "project"
  if framework = self[framework_name]
    return File.directory?(File.join(framework.templates_directory, template))
  end
  false
end

#template_usage(template) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/compass/frameworks.rb', line 73

def template_usage(template)
  framework_name, template = template.split(%r{/}, 2)
  framework = self[framework_name]
  template ||= "project"
  usage_file = File.join(framework.templates_directory, template, "USAGE.markdown")
  if File.exists?(usage_file)
    File.read(usage_file)
  elsif help = framework.manifest(template).help
    help
  else
    <<-END.gsub(/^ {8}/, '')
      No Usage!
    END
  end
end