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.
248 249 250 251 252 253 254 255 256 257 258 259 |
# File 'lib/closure/compiler.rb', line 248 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.
231 232 233 234 235 236 237 238 239 |
# File 'lib/closure/compiler.rb', line 231 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.
169 170 171 172 173 174 175 176 177 178 179 180 181 |
# File 'lib/closure/compiler.rb', line 169 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
193 194 195 196 197 198 199 200 |
# File 'lib/closure/compiler.rb', line 193 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
186 187 188 |
# File 'lib/closure/compiler.rb', line 186 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
217 218 219 220 221 222 223 224 |
# File 'lib/closure/compiler.rb', line 217 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
205 206 207 208 209 210 211 212 |
# File 'lib/closure/compiler.rb', line 205 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 |