Module: SproutCore

Defined in:
lib/sproutcore.rb

Constant Summary collapse

LIBPATH =

:stopdoc:

::File.expand_path(::File.dirname(__FILE__)) + ::File::SEPARATOR
PATH =
::File.dirname(LIBPATH) + ::File::SEPARATOR
VERSION_PATH =
PATH / 'VERSION.yml'
VERSION_INFO =
YAML.load_file(VERSION_PATH)
VERSION =
[VERSION_INFO[:major], VERSION_INFO[:minor], VERSION_INFO[:patch]].join('.')

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#logger=(value) ⇒ Object (writeonly)

Sets the attribute logger

Parameters:

  • value

    the value to set the attribute logger to.



98
99
100
# File 'lib/sproutcore.rb', line 98

def logger=(value)
  @logger = value
end

Class Method Details

.build_modeObject

Returns the current build mode. The build mode is determined based on the current environment build_mode settings. Note that for backwards compatibility reasons, :development and :debug are treated as being identical.



104
105
106
107
108
109
# File 'lib/sproutcore.rb', line 104

def self.build_mode
  ret = env.build_mode || :production
  ret = ret.to_sym unless ret.nil?
  ret = :debug if ret == :development # backwards compatibility
  ret
end

.build_mode=(new_mode) ⇒ Object



111
112
113
114
115
116
# File 'lib/sproutcore.rb', line 111

def self.build_mode=(new_mode)
  new_mode = new_mode.to_sym
  new_mode = :debug if new_mode == :development
  env.build_mode = new_mode
  self.build_mode
end

.builtin_projectObject

Returns a project instance representing the builtin library



119
120
121
# File 'lib/sproutcore.rb', line 119

def self.builtin_project
  @builtin_project ||= SC::Project.new(PATH)
end

.envObject

Global variable that can store specific environmental settings. This is where you will find the build mode among other things set by sc-build.



71
72
73
# File 'lib/sproutcore.rb', line 71

def self.env
  @env ||= HashStruct.new(:build_mode => :debug, :buildfile_names => %w(Buildfile sc-config sc-config.rb))
end

.env=(hash) ⇒ Object



74
# File 'lib/sproutcore.rb', line 74

def self.env=(hash); @env = HashStruct.new(hash); end

.libpath(*args) ⇒ Object

Returns the library path for the module. If any arguments are given, they will be joined to the end of the libray path using File.join.



43
44
45
# File 'lib/sproutcore.rb', line 43

def self.libpath( *args )
  args.empty? ? LIBPATH : ::File.join(LIBPATH, args.flatten)
end

.load_project(path = nil, opts = {}) ⇒ Object

Attempts to load a project for the current working directory or from the passed directory location. Returns nil if no project could be detected. This is just a shorthand for creating a Project object. It is useful when using the build tools as a Ruby library



132
133
134
135
136
137
138
139
# File 'lib/sproutcore.rb', line 132

def self.load_project(path = nil, opts = {})
  path = File.expand_path(path.nil? ? Dir.pwd : path)
  if FalseClass === opts[:discover]
    SC::Project.load path, :parent => SC.builtin_project
  else # attempt to autodiscover unless disabled
    SC::Project.load_nearest_project path, :parent => SC.builtin_project
  end
end

.loggerObject

Returns a standard logger object. You can replace this with your own logger to redirect all SproutCore log output if needed. Otherwise, a logger will bre created based on your env.log_level and env.logfile options.



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/sproutcore.rb', line 80

def self.logger 
  return @logger unless @logger.nil?
  
  if env.logfile
    @logger = Logger.new env.logfile, 10, 1024000
  else
    @logger = Logger.new $stderr
    
    # if we are logging to the screen, no reason to use a std loggin fmt
    @logger.formatter = lambda do |severity, time, progname, msg|
      [severity, '~', msg.to_s, "\n"].join(' ') 
    end
  end
  
  @logger.level = (env.log_level == :debug) ? Logger::DEBUG : ((env.log_level == :info) ? Logger::INFO : Logger::WARN)
  
  return @logger
end

.path(*args) ⇒ Object

Returns the lpath for the module. If any arguments are given, they will be joined to the end of the path using File.join.



51
52
53
# File 'lib/sproutcore.rb', line 51

def self.path( *args )
  args.empty? ? PATH : ::File.join(PATH, args.flatten)
end

.projectObject

Returns the current project, if defined. This is normally only set when you start sc-server in interactive mode.



125
# File 'lib/sproutcore.rb', line 125

def self.project; @project; end

.project=(project) ⇒ Object



126
# File 'lib/sproutcore.rb', line 126

def self.project=(project); @project = project; end

.require_all_libs_relative_to(fname, dir = nil) ⇒ Object

Utility method used to rquire all files ending in .rb that lie in the directory below this file that has the same name as the filename passed in. Optionally, a specific directory name can be passed in such that the filename does not have to be equivalent to the directory.



60
61
62
63
64
65
66
# File 'lib/sproutcore.rb', line 60

def self.require_all_libs_relative_to( fname, dir = nil )
  dir ||= ::File.basename(fname, '.*')
  search_me = ::File.expand_path(
      ::File.join(::File.dirname(fname), dir, '*.rb'))

  Dir.glob(search_me).sort.each {|rb| require rb}
end

.versionObject

Returns the version string for the library.



35
36
37
# File 'lib/sproutcore.rb', line 35

def self.version
  VERSION
end