judojs 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. data/LICENSE.markdown +29 -0
  2. data/bin/jpm +52 -0
  3. data/bin/judojs +52 -0
  4. data/lib/judojs/command.rb +136 -0
  5. data/lib/judojs/configuration.rb +77 -0
  6. data/lib/judojs/dependencies.rb +14 -0
  7. data/lib/judojs/helpers.rb +16 -0
  8. data/lib/judojs/jpm.rb +62 -0
  9. data/lib/judojs/project.rb +193 -0
  10. data/lib/judojs.rb +31 -0
  11. data/repository/jquery/1.1.4.js +2508 -0
  12. data/repository/jquery/1.2.6.js +32 -0
  13. data/repository/jquery/1.3.2.js +19 -0
  14. data/repository/jquery/1.4.2.js +154 -0
  15. data/repository/jquery/latest.js +1 -0
  16. data/repository/judojs/core/existence.js +41 -0
  17. data/repository/judojs/core/extend.js +22 -0
  18. data/repository/judojs/core/judo.js +26 -0
  19. data/repository/judojs/tests/index.html +21 -0
  20. data/repository/judojs/tests/judojs.test.js +109 -0
  21. data/repository/judojs/tests/judojs.utilities.test.js +149 -0
  22. data/repository/judojs/utilities/all.js +2 -0
  23. data/repository/judojs/utilities/array.js +34 -0
  24. data/repository/judojs/utilities/string.js +66 -0
  25. data/repository/modernizr/1.5.js +28 -0
  26. data/repository/modernizr/latest.js +1 -0
  27. data/repository/selectivizr/1.0.js +5 -0
  28. data/repository/selectivizr/latest.js +1 -0
  29. data/tests/fixtures/global.js +6 -0
  30. data/tests/fixtures/global.module.js +3 -0
  31. data/tests/fixtures/judojs.conf +5 -0
  32. data/tests/fixtures/myapplication.js +90 -0
  33. data/tests/fixtures/test.elements.js +4 -0
  34. data/tests/fixtures/test.js +2 -0
  35. data/tests/fixtures/test.model.js +3 -0
  36. data/tests/fixtures/test.module.js +12 -0
  37. data/tests/fixtures/update.judojs.conf +4 -0
  38. data/tests/fixtures/updated.myapplication.js +27 -0
  39. data/tests/fixtures/utilities.js +100 -0
  40. data/tests/jpm_test.rb +10 -0
  41. data/tests/judo_test.rb +12 -0
  42. data/tests/project_test.rb +91 -0
  43. data/tests/update_test.rb +70 -0
  44. metadata +165 -0
data/LICENSE.markdown ADDED
@@ -0,0 +1,29 @@
1
+ Copyright (c) 2010 Dayton D. Nolan
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+ No attribution is required by products that make use of this software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+
23
+ Except as contained in this notice, the name(s) of the above copyright
24
+ holders shall not be used in advertising or otherwise to promote the sale,
25
+ use or other dealings in this Software without prior written authorization.
26
+
27
+ Contributors to this project agree to grant all rights to the copyright
28
+ holder of the primary product. Attribution is maintained in the source
29
+ control history of the product.
data/bin/jpm ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ root = File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
4
+
5
+ begin
6
+ require "simpleconsole"
7
+ require "fileutils"
8
+ require "#{root}/judojs.rb"
9
+ rescue LoadError
10
+ require "rubygems"
11
+ require "simpleconsole"
12
+ require "fileutils"
13
+ require "#{root}/judojs.rb"
14
+ end
15
+
16
+ class Controller < SimpleConsole::Controller
17
+ params :bool => {:h => :help}
18
+
19
+ def default
20
+ Judojs::PackageManager.help
21
+ end
22
+
23
+ def install
24
+ packages = ARGV.uniq!.reject{ |a| a.match(/^install$/) }
25
+ Judojs::PackageManager.install(packages)
26
+ end
27
+
28
+ def import
29
+ package = ARGV[1]
30
+ Judojs::PackageManager.import(package)
31
+ end
32
+
33
+ def uninstall
34
+ packages = ARGV.uniq!.reject{ |a| a.match(/^uninstall$/) }
35
+ puts "Are you sure you wish to uninstall the following packages (y/n)? : \e[31m" + packages.join(", ") + "\e[0m"
36
+ confirm = STDIN.gets.chomp
37
+ confirmed_uninstall = confirm.match(/^y/i) ? true : false
38
+ Judojs::PackageManager.uninstall(packages) if confirmed_uninstall
39
+ end
40
+ end
41
+
42
+ class View < SimpleConsole::View
43
+ def default
44
+
45
+ end
46
+
47
+ def import
48
+
49
+ end
50
+ end
51
+
52
+ SimpleConsole::Application.run(ARGV, Controller, View)
data/bin/judojs ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ root = File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
4
+
5
+ begin
6
+ require "simpleconsole"
7
+ require "fssm"
8
+ require "#{root}/judojs.rb"
9
+ rescue LoadError
10
+ require "rubygems"
11
+ require "simpleconsole"
12
+ require "fssm"
13
+ require "#{root}/judojs.rb"
14
+ end
15
+ # TODO get rid of the SimpleConsole dependency
16
+ class Controller < SimpleConsole::Controller
17
+ params :string => {:n => :name,
18
+ :d => :directory},
19
+ :bool => {:h => :help}
20
+
21
+ def default
22
+ Judojs::Command.help
23
+ end
24
+
25
+ def help
26
+ Judojs::Command.help
27
+ end
28
+
29
+ def create
30
+ name = params[:name]
31
+ directory = params[:directory] || '/'
32
+ raise 'name is undefined: judojs create -n "MyAppName"' if name.nil?
33
+ Judojs::Command.create(name, directory)
34
+ end
35
+
36
+ def compile
37
+ Judojs::Command.compile
38
+ end
39
+
40
+ def watch
41
+ Judojs::Command.watch
42
+ end
43
+
44
+ def import
45
+ Judojs::Command.import
46
+ end
47
+ end
48
+
49
+ class View < SimpleConsole::View
50
+ end
51
+
52
+ SimpleConsole::Application.run(ARGV, Controller, View)
@@ -0,0 +1,136 @@
1
+ module Judojs
2
+ module Command
3
+ def watch
4
+ require "fssm"
5
+ project_path = Dir.getwd << '/'
6
+ raise "judojs.conf was not located in #{project_path}" unless File.exists? "#{project_path}judojs.conf"
7
+ color_start = "\e[33m"
8
+ color_end = "\e[0m"
9
+ puts "\e[32m>>>#{color_end} Judojs is watching for changes. Press Ctrl-C to stop."
10
+ project = Judojs::Project.init_with_config(project_path)
11
+ project.update
12
+
13
+ FSSM.monitor do
14
+ path "#{project_path}elements" do
15
+ glob "**/*.js"
16
+
17
+ update do |base, relative|
18
+ puts "#{color_start}<<<#{color_end} change detected in #{relative}"
19
+ project.update
20
+ end
21
+
22
+ create do |base, relative|
23
+ puts "#{relative} created"
24
+ project.update
25
+ end
26
+ end
27
+
28
+ path "#{project_path}models" do
29
+ glob "**/*.js"
30
+
31
+ update do |base, relative|
32
+ puts "#{@color_start}<<<#{@color_end} change detected in #{relative}"
33
+ project.update
34
+ end
35
+
36
+ create do |base, relative|
37
+ puts "#{relative} created"
38
+ project.update
39
+ end
40
+ end
41
+
42
+ path "#{project_path}modules" do
43
+ glob "**/*.js"
44
+
45
+ update do |base, relative|
46
+ puts "#{color_start}<<<#{color_end} change detected in #{relative}"
47
+ project.update
48
+ end
49
+
50
+ create do |base, relative|
51
+ puts "#{relative} created"
52
+ project.update
53
+ end
54
+ end
55
+
56
+ path "#{project_path}lib" do
57
+ glob "**/*.js"
58
+
59
+ update do |base, relative|
60
+ puts "#{color_start}<<<#{color_end} change detected in #{relative}"
61
+ project.config.read
62
+ project.update_application_file
63
+ project.update
64
+ end
65
+
66
+ create do |base, relative|
67
+ puts "+++ created #{relative}"
68
+ project.update
69
+ end
70
+ end
71
+
72
+ path "#{project_path}" do
73
+ glob "**/*.conf"
74
+
75
+ update do |base, relative|
76
+ puts "#{color_start}<<<#{color_end} change detected in #{relative}"
77
+ project.config.read
78
+ project.update_application_file
79
+ project.update
80
+ end
81
+ end
82
+
83
+ end
84
+
85
+ end
86
+
87
+ def create(name, directory = false)
88
+ raise 'you must specify a project name: judojs create -n "ProjectName"' if name.nil?
89
+ project = directory ? Judojs::Project.new(name, directory) : Judojs::Project.new(name)
90
+ project.create
91
+ end
92
+
93
+ def compile
94
+ project_path = Dir.getwd << '/'
95
+ raise "judojs.conf was not located in #{project_path}" unless File.exists? "#{project_path}/judojs.conf"
96
+ project = Judojs::Project.init_with_config(project_path)
97
+ project.update
98
+ end
99
+
100
+ def import(package)
101
+ Judojs::PackageManager.import(package)
102
+ end
103
+
104
+ def help
105
+ puts <<-DOC
106
+
107
+ Description:
108
+ The judojs command line tool will compile your judojs application into modules.
109
+ To compile your judojs application into module files:
110
+
111
+ Usage: judojs [action] [options]
112
+
113
+ Actions:
114
+ compile Compiles the judojs project in the current working directory
115
+ watch Watches the current working directory for
116
+ file changes and compiles when files change
117
+ create Generates judojs application architecture and files
118
+
119
+ Options:
120
+ -n, --name Name of the judojs application to create
121
+ -d, --directory Optional install directory for a new judojs project
122
+ (creates the folder if it does not exist)
123
+
124
+ Example:
125
+ // Generate a new judojs application in the js folder
126
+ // (creates folder if it doesn't exist)
127
+ judojs create -n "MyApplication" -d "js"
128
+
129
+ // cd to the judojs root folder (ie. js)
130
+ judojs watch -or- judojs compile
131
+ DOC
132
+ end
133
+
134
+ module_function :create, :watch, :compile, :help, :import
135
+ end
136
+ end
@@ -0,0 +1,77 @@
1
+ module Judojs
2
+ class Configuration
3
+
4
+ attr_reader :project_path,
5
+ :name,
6
+ :app_filename,
7
+ :directory,
8
+ :output,
9
+ :autoload,
10
+ :config_path,
11
+ :asset_root
12
+
13
+ def initialize(project_path, name = 'JudoApplication')
14
+ @project_path = project_path
15
+ @asset_root = project_path
16
+ @name = name
17
+ @output = 'expanded'
18
+ @autoload = Array.new
19
+ end
20
+
21
+ def create
22
+ conf_exists = File.exists? "#{@project_path}judojs.conf"
23
+
24
+ if conf_exists
25
+ autoload = @autoload.empty? ? 'autoload: []' : 'autoload: ["' << @autoload.join('", "') << '"]'
26
+ else
27
+ autoload = @autoload.empty? ? '#autoload: ["<judojs/utilities/all>", "../plugins/local_lib_file"]' : @autoload.join('", "')
28
+ end
29
+
30
+ conf_content = <<-CONF
31
+ project_path: #{@project_path}
32
+ asset_root: #{@project_path}
33
+ name: #{@name}
34
+ output: #{@output}
35
+ #{autoload}
36
+ CONF
37
+
38
+ File.open("#{@project_path}judojs.conf", "w+") do |conf_file|
39
+ conf_file << conf_content
40
+ end
41
+
42
+ message = conf_exists ? "judojs.conf updated" : "judojs.conf created"
43
+ puts message
44
+ end
45
+
46
+ def read
47
+ begin
48
+ raise IOError, "#{@project_path}judojs.conf does not exist", caller unless File.exists? "#{@project_path}judojs.conf"
49
+ config_yaml = File.open("#{@project_path}judojs.conf", "r").readlines.join('')
50
+ config = YAML::load config_yaml
51
+
52
+ @project_path = config['project_path']
53
+ @asset_root = config['asset_root']
54
+ @name = config['name']
55
+ @app_filename = config['name'].downcase
56
+ @output = config['output']
57
+ @autoload = config['autoload'] || Array.new
58
+ rescue RuntimeError => e
59
+ puts e.message
60
+ puts e.backtrace.inspect
61
+ end
62
+ end
63
+
64
+ def update
65
+ create
66
+ end
67
+
68
+ def set_config(config)
69
+ @name = config[:name] unless config[:name].nil?
70
+ @app_filename = config[:app_filename] unless config[:app_filename].nil?
71
+ @directory = '/'
72
+ @output = config[:output] unless config[:output].nil?
73
+ @autoload = config[:autoload] || nil
74
+ end
75
+
76
+ end
77
+ end
@@ -0,0 +1,14 @@
1
+ begin
2
+ require 'yaml'
3
+ require 'jsmin'
4
+ require 'tempfile'
5
+ require 'sprockets'
6
+ require 'ftools'
7
+ rescue LoadError
8
+ require 'rubygems'
9
+ require 'yaml'
10
+ require 'jsmin'
11
+ require 'tempfile'
12
+ require 'sprockets'
13
+ require 'ftools'
14
+ end
@@ -0,0 +1,16 @@
1
+ module Judojs
2
+ module Helpers
3
+
4
+ def create_module_filename(module_name)
5
+ split = module_name.split(/[\.\-\s]/)
6
+ module_filename = String.new
7
+ split.each do |piece|
8
+ module_filename << piece unless piece.match(/^module$|^js$/i)
9
+ end
10
+ module_filename
11
+ end
12
+
13
+ module_function :create_module_filename
14
+
15
+ end
16
+ end
data/lib/judojs/jpm.rb ADDED
@@ -0,0 +1,62 @@
1
+ module Judojs
2
+ module PackageManager
3
+
4
+ def import(package)
5
+ dir = Dir.getwd
6
+ package_path = dir + '/' + package
7
+ full_package_path = Judojs.repository_root + package
8
+
9
+ raise "#{package_path} is not a directory" unless File.directory? "#{package_path}"
10
+ raise "#{package_path} does not exist" unless File.exists? "#{package_path}"
11
+ raise "#{Judojs.repository_root}#{package} already exists" if File.exists? "#{Judojs.repository_root}#{package}"
12
+
13
+ Dir.mkdir(full_package_path) unless File.exists?(full_package_path)
14
+ FileUtils.cp_r(package_path, Judojs.repository_root)
15
+ end
16
+
17
+ def install(packages)
18
+ packages.each do |package|
19
+ import package
20
+ end
21
+ end
22
+
23
+ def uninstall(packages)
24
+ packages.each do |package|
25
+ package_path = Judojs.repository_root + package
26
+ raise "no program named #{package} installed" unless File.directory? "#{package_path}"
27
+
28
+ FileUtils.rm_r package_path
29
+ raise "Could not delete package. Try checking the file permissions in #{package_path}" if File.exists? package_path
30
+ puts "#{package} uninstalled successfully" unless File.exists? package_path
31
+ end
32
+ end
33
+
34
+ def list
35
+
36
+ end
37
+
38
+ def update
39
+
40
+ end
41
+
42
+ def help
43
+ puts <<-DOC
44
+
45
+ Description:
46
+ The jpm package managers enables you to manage the judojs packages installed on your system:
47
+
48
+ Usage: jpm [action]
49
+
50
+ Actions:
51
+ install Install a package
52
+
53
+ Example:
54
+ // Install the fancybox plugin from the judojs repository
55
+ jpm install fancybox
56
+ DOC
57
+ end
58
+
59
+ module_function :install, :import, :uninstall, :help
60
+
61
+ end
62
+ end
@@ -0,0 +1,193 @@
1
+ module Judojs
2
+ class Project
3
+
4
+ def self.init_with_config(project_path)
5
+ config = Judojs::Configuration.new project_path
6
+ config.read
7
+
8
+ project = Project.new
9
+ project.config = config
10
+ project.project_path = config.project_path
11
+ project.app_filename = config.name.downcase
12
+ project
13
+ end
14
+
15
+ attr_reader :app_filename,
16
+ :project_path,
17
+ :config,
18
+ :manifest
19
+ attr_writer :config,
20
+ :project_path,
21
+ :app_filename
22
+
23
+ def initialize(name = 'JudoApplication', project_dir = '/')
24
+ name.gsub!(/\s|\-|\./)
25
+ proj_dir = project_dir || '/'
26
+ proj_dir += '/' unless proj_dir.match(/\/$/)
27
+ proj_dir = '/' << proj_dir unless proj_dir.match(/^\//)
28
+
29
+ @color_start = "\e[32m"
30
+ @color_end = "\e[0m"
31
+
32
+ @app_filename = name.downcase
33
+ @project_path = "#{Judojs.root_directory}#{proj_dir}"
34
+ @config = Judojs::Configuration.new @project_path, name
35
+ @manifest = Array['application',
36
+ 'elements',
37
+ 'lib',
38
+ 'models',
39
+ 'modules',
40
+ 'plugins',
41
+ 'tests']
42
+ end
43
+
44
+ def create
45
+ puts "#{@color_start}>>>#{@color_end} Creating the #{@config.name} project in #{@project_path}"
46
+ create_project_structure
47
+ @config.create
48
+ create_judo_lib_file
49
+ create_utility_lib_file
50
+ create_judo_application_file
51
+ import_javascripts
52
+ end
53
+
54
+ def update
55
+ get_modules
56
+ compile_modules
57
+ update_application_file
58
+ compress_application if @config.output == 'compressed'
59
+ puts "#{@color_start}>>>#{@color_end} application updated"
60
+ end
61
+
62
+ def create_project_structure
63
+ Dir.mkdir "#{@project_path}" unless File.exists? "#{@project_path}"
64
+
65
+ @manifest.each do |folder|
66
+ puts "#{folder}/ created" unless File.exists? "#{@project_path}#{folder}"
67
+ Dir.mkdir "#{@project_path}#{folder}" unless File.exists? "#{@project_path}#{folder}"
68
+ end
69
+ end
70
+
71
+ def create_judo_lib_file
72
+ judo_lib_secretary = Sprockets::Secretary.new(
73
+ :root => "#{Judojs.base_directory}",
74
+ :asset_root => "#{@config.asset_root}",
75
+ :load_path => ["repository"],
76
+ :source_files => ["repository/judojs/core/judo.js"]
77
+ )
78
+
79
+ judo_lib = judo_lib_secretary.concatenation
80
+ judo_lib.save_to "#{@project_path}lib/judo.js"
81
+
82
+ puts "lib/judo.js created"
83
+ end
84
+
85
+ def create_utility_lib_file
86
+ utility_lib_secretary = Sprockets::Secretary.new(
87
+ :root => "#{Judojs.base_directory}",
88
+ :asset_root => "#{@config.asset_root}",
89
+ :load_path => ["repository"],
90
+ :source_files => ["repository/judojs/utilities/all.js"]
91
+ )
92
+
93
+ utility_lib = utility_lib_secretary.concatenation
94
+ utility_lib.save_to "#{@project_path}lib/utilities.js"
95
+
96
+ puts "lib/utilities.js created"
97
+ end
98
+
99
+ def create_judo_application_file
100
+ filename = "#{@project_path}application/#{@app_filename}.js"
101
+
102
+ #puts File.exists?("#{@project_path}application/#{@app_filename}.js") ? "application/#{@app_filename}.js updated" : "application/#{@app_filename}.js created"
103
+ File.open(filename, "w+") do |file|
104
+ file << "//-- Judojs #{Time.now.to_s} --//\n"
105
+ file << File.open("#{@project_path}lib/judo.js", 'r').readlines.join('')
106
+ file << "\nvar #{@config.name} = new JudoApplication();"
107
+ end
108
+ end
109
+
110
+ def import_javascripts
111
+ File.copy "#{Judojs.base_directory}/repository/judojs/tests/index.html", "#{@project_path}tests"
112
+ File.copy "#{Judojs.base_directory}/repository/judojs/tests/judojs.test.js", "#{@project_path}tests"
113
+ File.copy "#{Judojs.base_directory}/repository/judojs/tests/judojs.utilities.test.js", "#{@project_path}tests"
114
+ end
115
+
116
+ def get_modules
117
+ entries = Dir.entries "#{@project_path}modules"
118
+ @modules = entries.reject { |file| file.match(/^\./) }
119
+ end
120
+
121
+ def compile_modules
122
+ @modules.each do |module_file|
123
+ module_filename = Judojs::Helpers.create_module_filename module_file
124
+ create_module_file module_file, module_filename
125
+ end
126
+ end
127
+
128
+ def create_module_file(module_file, module_name)
129
+ module_src = "#{@project_path}modules/#{module_file}"
130
+
131
+ judo_lib_secretary = Sprockets::Secretary.new(
132
+ :root => "#{Judojs.base_directory}",
133
+ :asset_root => "#{@config.asset_root}",
134
+ :load_path => ["repository"],
135
+ :source_files => ["#{module_src}"]
136
+ )
137
+
138
+ module_file = judo_lib_secretary.concatenation
139
+ message = File.exists?("#{@project_path}application/#{module_name}.js") ? "application/#{module_name}.js updated" : "application/#{module_name}.js created"
140
+ module_file.save_to "#{@project_path}application/#{module_name}.js"
141
+ judo_lib_secretary.install_assets
142
+
143
+ #puts message
144
+ end
145
+
146
+ def update_application_file
147
+ message = File.exists?("#{@project_path}application/#{@app_filename}.js") ? "application/#{@app_filename}.js updated" : "application/#{@app_filename}.js created"
148
+
149
+ content = String.new
150
+ content << "/* Judojs #{Time.now.to_s} */\n"
151
+ content << "//= require \"../lib/judo.js\"\n\n"
152
+ content << "\nvar #{@config.name} = new JudoApplication();"
153
+
154
+ filename = "#{@project_path}application/#{@app_filename}.js"
155
+ File.open(filename, "w+") do |file|
156
+ file << content
157
+ @config.autoload.each do |auto_file|
158
+ file << "\n\n/*---------- Judojs autoload #{auto_file} ----------*/"
159
+ file << "\n//= require #{auto_file}\n" if auto_file.match(/^\<.+\>$/)
160
+ file << "\n//= require \"#{auto_file}\"\n" if auto_file.match(/^[^\<].+|[^\>]$/)
161
+ end
162
+ end
163
+
164
+ judo_lib_secretary = Sprockets::Secretary.new(
165
+ :root => "#{Judojs.base_directory}",
166
+ :asset_root => "#{@config.asset_root}",
167
+ :load_path => ["repository"],
168
+ :source_files => ["#{filename}"]
169
+ )
170
+
171
+ application_file = judo_lib_secretary.concatenation
172
+ judo_lib_secretary.install_assets
173
+ application_file.save_to "#{filename}"
174
+
175
+ #puts message
176
+ end
177
+
178
+ def compress_application
179
+ application = @project_path + 'application'
180
+ modules = Dir.entries(application)
181
+ modules.reject! { |file| file =~ /^\./ }
182
+
183
+ modules.each do |module_file|
184
+ full_path = application + "/#{module_file}"
185
+ uncompressed = File.open(full_path, "r").readlines.join('')
186
+ File.open(full_path, "w+") do |module_file|
187
+ module_file << JSMin.minify(uncompressed)
188
+ end
189
+ end
190
+ end
191
+
192
+ end
193
+ end
data/lib/judojs.rb ADDED
@@ -0,0 +1,31 @@
1
+ module Judojs
2
+ end
3
+
4
+ module Judojs
5
+ def version
6
+ '0.9.1'
7
+ end
8
+
9
+ def base_directory
10
+ File.expand_path(File.join(File.dirname(__FILE__), '..'))
11
+ end
12
+
13
+ def lib_directory
14
+ File.expand_path(File.join(File.dirname(__FILE__)))
15
+ end
16
+
17
+ def root_directory
18
+ Dir.getwd
19
+ end
20
+
21
+ def repository_root
22
+ base_directory + '/repository/'
23
+ end
24
+
25
+ module_function :base_directory, :lib_directory, :root_directory, :repository_root
26
+ end
27
+
28
+
29
+ %w(dependencies configuration helpers project command jpm).each do |lib|
30
+ require "#{Judojs.lib_directory}/judojs/#{lib}"
31
+ end