Class: Closure::Compiler::Util
- Inherits:
-
Object
- Object
- Closure::Compiler::Util
- Defined in:
- lib/closure/compiler.rb
Overview
Closure Script extends compiler.jar by transforming the arguments in novel ways. The most obvious augmentation is to support –ns for compiling namespaces. We can also expand paths to a new base, work with modules, and much more. These all will directly modify args.
Class Method Summary collapse
-
.arg_values(args, options) ⇒ Array<String>
Extracts the values for a options in the arguments.
-
.augment(args, sources, env = {}) ⇒ Array<Hash>
Main function to convert –ns arguments into –js arguments.
-
.expand_paths(args, base) ⇒ Array<String>
Expands all filesystem argument values to a specified folder.
-
.module_info(mods, var = 'MODULE_INFO') ⇒ Object
The javascript snippet for module info.
-
.module_path(path, var = 'MODULE_PATH') ⇒ Object
The javascript snippet for module info.
-
.module_uris_compiled(mods, sources, prefix, var = 'MODULE_URIS') ⇒ Object
The javascript snippet for compiled module file locations.
-
.module_uris_raw(mods, sources, var = 'MODULE_URIS') ⇒ Object
The javascript snippet for raw module file locations.
Class Method Details
.arg_values(args, options) ⇒ Array<String>
Extracts the values for a options in the arguments. Use Array#last to emulate compiler.jar for single options. Will collect from an array of options.
242 243 244 245 246 247 248 249 250 251 252 253 |
# File 'lib/closure/compiler.rb', line 242 def self.arg_values(args, ) = [].flatten unless .kind_of? Array values = [] args_index = 0 while args_index < args.length if .include? args[args_index] values << args[args_index+1] end args_index = args_index + 2 end values end |
.augment(args, sources, env = {}) ⇒ Array<Hash>
Main function to convert –ns arguments into –js arguments. Returns module info when modules are processed.
225 226 227 228 229 230 231 232 233 |
# File 'lib/closure/compiler.rb', line 225 def self.augment(args, sources, env={}) mods = extract_modules args if mods module_augment args, sources, mods, env else namespace_augment args, sources, [], env end mods end |
.expand_paths(args, base) ⇒ Array<String>
Expands all filesystem argument values to a specified folder.
163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/closure/compiler.rb', line 163 def self.(args, base) = INPUT_OPTIONS + OUTPUT_OPTIONS args_index = 0 while args_index < args.length option, value = args[args_index, 2] value = File. value, base if .include? option args[args_index+1] = value end args_index = args_index + 2 end args end |
.module_info(mods, var = 'MODULE_INFO') ⇒ Object
The javascript snippet for module info
187 188 189 190 191 192 193 194 |
# File 'lib/closure/compiler.rb', line 187 def self.module_info(mods, var = 'MODULE_INFO') js = "var #{var} = {" js += mods.map do |mod| reqs = mod[:requires].map{ |r| r.dump } "#{mod[:name].dump}: [#{reqs.join ', '}]" end.join ', ' js += "};\n" end |
.module_path(path, var = 'MODULE_PATH') ⇒ Object
The javascript snippet for module info
180 181 182 |
# File 'lib/closure/compiler.rb', line 180 def self.module_path(path, var = 'MODULE_PATH') js = "var #{var} = #{path.dump};\n" end |
.module_uris_compiled(mods, sources, prefix, var = 'MODULE_URIS') ⇒ Object
The javascript snippet for compiled module file locations
211 212 213 214 215 216 217 218 |
# File 'lib/closure/compiler.rb', line 211 def self.module_uris_compiled(mods, sources, prefix, var = 'MODULE_URIS') js = "var #{var} = {\n" js += mods.map do |mod| file = sources.src_for prefix + mod[:name] + '.js' "#{mod[:name].dump}: [#{file.dump}]" end.join ",\n" js += "\n};\n" end |
.module_uris_raw(mods, sources, var = 'MODULE_URIS') ⇒ Object
The javascript snippet for raw module file locations
199 200 201 202 203 204 205 206 |
# File 'lib/closure/compiler.rb', line 199 def self.module_uris_raw(mods, sources, var = 'MODULE_URIS') js = "var #{var} = {\n" js += mods.map do |mod| files = mod[:files].map{ |r| (sources.src_for r).dump } "#{mod[:name].dump}: [\n#{files.join ",\n"}]" end.join ",\n" js += "\n};\n" end |