Class: Ninjs::Project
- Inherits:
-
Object
- Object
- Ninjs::Project
- Defined in:
- lib/ninjs/project.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#modules ⇒ Object
readonly
Returns the value of attribute modules.
-
#root ⇒ Object
Returns the value of attribute root.
Instance Method Summary collapse
- #add_scripts_to_models(directory) ⇒ Object
- #compile_application_file(file) ⇒ Object
- #compile_module(module_file, module_name) ⇒ Object
- #compile_modules ⇒ Object
- #compress_application ⇒ Object
- #create ⇒ Object
- #create_ninjs_application_file ⇒ Object
- #create_ninjs_lib_file ⇒ Object
- #create_project_scaffold ⇒ Object
- #create_utility_lib_file ⇒ Object
- #get_directory_script_files ⇒ Object
- #get_modules ⇒ Object
- #import_rakefile ⇒ Object
- #import_spec_file(src, dest) ⇒ Object
- #import_spec_files ⇒ Object
-
#initialize(options = nil) ⇒ Project
constructor
A new instance of Project.
- #update ⇒ Object
- #update_application_file ⇒ Object
- #write_autoload(file) ⇒ Object
- #write_core(file) ⇒ Object
- #write_dependencies(file) ⇒ Object
Constructor Details
#initialize(options = nil) ⇒ Project
Returns a new instance of Project.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/ninjs/project.rb', line 7 def initialize( = nil) settings = { name: nil, root: Dir.getwd } settings.merge!() unless .nil? @name = settings[:name] @root = File.(settings[:root]) if @name.nil? raise ArgumentError, "Ninjs::Project.new({ name: 'Name' }): name is required without a configuration file" unless File.exists? "#{@root}/ninjs.conf" end @modules = Array.new @config = Ninjs::Configuration.new @root @config.name = @name unless @name.nil? end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
3 4 5 |
# File 'lib/ninjs/project.rb', line 3 def config @config end |
#modules ⇒ Object (readonly)
Returns the value of attribute modules.
3 4 5 |
# File 'lib/ninjs/project.rb', line 3 def modules @modules end |
#root ⇒ Object
Returns the value of attribute root.
3 4 5 |
# File 'lib/ninjs/project.rb', line 3 def root @root end |
Instance Method Details
#add_scripts_to_models(directory) ⇒ Object
137 138 139 140 141 142 |
# File 'lib/ninjs/project.rb', line 137 def add_scripts_to_models(directory) Dir["#{directory}/*.js"].each do |file| module_filename = file.gsub(directory, '') @modules << "#{directory}#{module_filename}" unless module_filename.match(/^\/_/) end end |
#compile_application_file(file) ⇒ Object
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/ninjs/project.rb', line 205 def compile_application_file(file) begin ninjs_lib_secretary = Sprockets::Secretary.new( :root => "#{Ninjs::BASE_DIR}", :asset_root => @config.asset_root, :load_path => ["repository"], source_files: ["#{file}"], interpolate_constants: false ) application_file = ninjs_lib_secretary.concatenation ninjs_lib_secretary.install_assets application_file.save_to "#{file}" rescue Exception => error @errors = true puts Ninjs::Notification.error "Sprockets error: #{error.}" end end |
#compile_module(module_file, module_name) ⇒ Object
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/ninjs/project.rb', line 151 def compile_module(module_file, module_name) begin ninjs_lib_secretary = Sprockets::Secretary.new( :root => "#{Ninjs::BASE_DIR}", :asset_root => @config.asset_root, :load_path => ["repository"], source_files: ["#{module_file}"], interpolate_constants: false ) module_file = ninjs_lib_secretary.concatenation = File.exists?("#{@root}/#{@config.dest_dir}/#{module_name}.js") ? "\e[32m>>>\e[0m #{@config.dest_dir}/#{module_name}.js updated" : "\e[32m>>>\e[0m #{@config.dest_dir}/#{module_name}.js created" module_file.save_to "#{@root}/#{@config.dest_dir}/#{module_name}.js" ninjs_lib_secretary.install_assets rescue Exception => error @errors = true puts Ninjs::Notification.error "Sprockets error: #{error.}" end end |
#compile_modules ⇒ Object
144 145 146 147 148 149 |
# File 'lib/ninjs/project.rb', line 144 def compile_modules @modules.each do |module_file| module_filename = Ninjs::Helpers.get_filename module_file compile_module module_file, module_filename end end |
#compress_application ⇒ Object
224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/ninjs/project.rb', line 224 def compress_application app_root = File. "#{@config.dest_dir}" modules = Dir.entries(app_root) modules.reject! { |file| file =~ /^\./ } modules.each do |module_file| full_path = "#{app_root}/#{module_file}" uncompressed = File.open(full_path, "r").readlines.join('') File.open(full_path, "w+") do |module_file| module_file << JSMin.minify(uncompressed) end end end |
#create ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/ninjs/project.rb', line 33 def create puts Ninjs::Notification.notice "Creating the #{@config.name} project in #{@root}" create_project_scaffold @config.write create_ninjs_lib_file create_utility_lib_file create_ninjs_application_file import_rakefile import_spec_files end |
#create_ninjs_application_file ⇒ Object
79 80 81 82 83 84 85 |
# File 'lib/ninjs/project.rb', line 79 def create_ninjs_application_file File.open("#{@root}/application/#{@config.name.downcase}.js", "w+") do |file| file << "//-- This file was automatically generated by Ninjs @ #{Time.now.to_s} DO NOT EDIT THIS FILE --//\n" file << File.open("#{@root}/lib/nin.js", 'r').readlines.join('') file << "\nvar #{@config.name} = new NinjsApplication();" end end |
#create_ninjs_lib_file ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/ninjs/project.rb', line 52 def create_ninjs_lib_file operation = File.exists?("#{@root}/lib/nin.js") ? 'updated' : 'created' ninjs_lib_secretary = Sprockets::Secretary.new( :root => "#{Ninjs::BASE_DIR}", :load_path => ["repository"], source_files: ["repository/ninjs/core/nin.js"], interpolate_constants: false ) ninjs_lib_secretary.concatenation.save_to "#{@root}/lib/nin.js" puts Ninjs::Notification.added "lib/nin.js #{operation}" end |
#create_project_scaffold ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/ninjs/project.rb', line 44 def create_project_scaffold Dir.mkdir "#{@root}" unless File.exists? "#{@root}" Ninjs::Manifest.directories.each do |folder| puts Ninjs::Notification.added "#{folder} created" unless File.exists? "#{@root}/#{folder}" Dir.mkdir "#{@root}/#{folder}" unless File.exists? "#{@root}/#{folder}" end end |
#create_utility_lib_file ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/ninjs/project.rb', line 66 def create_utility_lib_file utility_lib_secretary = Sprockets::Secretary.new( root: "#{Ninjs::BASE_DIR}", load_path: ["repository"], source_files: ["repository/ninjs/utilities/all.js"], interpolate_constants: false ) utility_lib_secretary.concatenation.save_to "#{@root}/lib/utilities.js" puts Ninjs::Notification.added "lib/utilities.js created" end |
#get_directory_script_files ⇒ Object
119 120 121 122 123 124 |
# File 'lib/ninjs/project.rb', line 119 def get_directory_script_files script_files = Array.new Dir["#{@root}/**/*.js"].each do |file| script_files << file unless file.match(/application\/|tests\//) end end |
#get_modules ⇒ Object
126 127 128 129 130 131 132 133 134 135 |
# File 'lib/ninjs/project.rb', line 126 def get_modules @modules = Array.new if @config.src_dir.is_a? Array @config.src_dir.each do |directory| add_scripts_to_models File.(directory, @root) end else add_scripts_to_models File.(@config.src_dir, @root) end end |
#import_rakefile ⇒ Object
87 88 89 |
# File 'lib/ninjs/project.rb', line 87 def import_rakefile FileUtils.cp "#{Ninjs::BASE_DIR}/repository/ninjs/Rakefile", "#{@root}/Rakefile" end |
#import_spec_file(src, dest) ⇒ Object
106 107 108 |
# File 'lib/ninjs/project.rb', line 106 def import_spec_file(src, dest) FileUtils.cp "#{Ninjs::BASE_DIR}/#{src}", "#{@root}/#{dest}" end |
#import_spec_files ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/ninjs/project.rb', line 91 def import_spec_files { 'repository/ninjs/spec/javascripts/application_spec.js' => 'spec/javascripts/', 'repository/ninjs/spec/javascripts/array_utility_spec.js' => 'spec/javascripts/', 'repository/ninjs/spec/javascripts/existence_spec.js' => 'spec/javascripts/', 'repository/ninjs/spec/javascripts/extension_spec.js' => 'spec/javascripts/', 'repository/ninjs/spec/javascripts/module_spec.js' => 'spec/javascripts/', 'repository/ninjs/spec/javascripts/string_utility_spec.js' => 'spec/javascripts/', 'repository/ninjs/spec/javascripts/support/jasmine_config.rb' => 'spec/javascripts/support', 'repository/ninjs/spec/javascripts/support/jasmine_runner.rb' => 'spec/javascripts/support', 'templates/test-index.html' => 'spec/index.html', 'templates/jasmine.yml' => 'spec/javascripts/support/' }.each { |src, dest| import_spec_file src, dest } end |
#update ⇒ Object
110 111 112 113 114 115 116 117 |
# File 'lib/ninjs/project.rb', line 110 def update get_modules compile_modules update_application_file compress_application if @config.output == 'compressed' puts Ninjs::Notification.log "application updated" unless @errors @errors = false end |
#update_application_file ⇒ Object
172 173 174 175 176 177 178 179 180 181 |
# File 'lib/ninjs/project.rb', line 172 def update_application_file application_file = "#{@root}/#{@config.dest_dir}/#{@config.name.downcase}.js" File.open(application_file, "w+") do |file| write_dependencies(file) write_core(file) write_autoload(file) end compile_application_file application_file end |
#write_autoload(file) ⇒ Object
197 198 199 200 201 202 203 |
# File 'lib/ninjs/project.rb', line 197 def write_autoload(file) @config.autoload.each do |auto_file| file << "/*---------- Ninjs autoload #{auto_file} ----------*/" file << "\n//= require #{auto_file}\n\n" if auto_file.match(/^\<.+\>$/) file << "\n//= require \"#{auto_file}\"\n\n" if auto_file.match(/^[^\<].+|[^\>]$/) end end |
#write_core(file) ⇒ Object
191 192 193 194 195 |
# File 'lib/ninjs/project.rb', line 191 def write_core(file) file << "/*---------- Ninjs core ../lib/nin.js ----------*/\n" file << "//= require \"../lib/nin.js\"\n\n" file << "\nvar #{@config.name} = new NinjsApplication();\n\n" end |
#write_dependencies(file) ⇒ Object
183 184 185 186 187 188 189 |
# File 'lib/ninjs/project.rb', line 183 def write_dependencies(file) @config.dependencies.each do |dependency| file << "/*---------- #{dependency} ----------*/" file << "\n//= require #{dependency}\n\n" if dependency.match(/^\<.+\>$/) file << "\n//= require \"#{dependency}\"\n\n" if dependency.match(/^[^\<].+|[^\>]$/) end end |