multiscript 0.1.1

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.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in multiscript.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,17 @@
1
+ Can compile multipl coffee and js file together, compress it ...
2
+
3
+ ###Sample
4
+
5
+ ```ruby
6
+ require 'multiscript'
7
+ sources = File.expand_path('../js/sources', __FILE__)
8
+
9
+ source_str = MultiScript.compress({
10
+ :source_type => 'config',
11
+ :source_folder => sources,
12
+ :config_file => 'config.yaml',
13
+ :out_type => 'string',
14
+ :minify => false
15
+ })
16
+ ````
17
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,57 @@
1
+ require_relative "multiscript/version"
2
+ require_relative "multiscript/packager"
3
+ require_relative "multiscript/compilers"
4
+
5
+ module MultiScript
6
+ class << self
7
+ def compress(params)
8
+ packages = get_packages(params)
9
+ codez = packages_to_string(packages)
10
+ if params[:minify]
11
+ codez = minify codez
12
+ end
13
+ unless params[:out_type]
14
+ params[:out_type] = 'string'
15
+ end
16
+ if params[:out_type] == 'file' || params[:out_type] == 'dir'
17
+ params[:out_folder] ||= 'source.js'
18
+ write_file(codez, params[:out_folder], params[:out_file])
19
+ else
20
+ return codez
21
+ end
22
+ end
23
+
24
+ #TODO validate code
25
+ private
26
+
27
+ def get_packages(params)
28
+ if params[:source_type] == 'config'
29
+ packages = MultiScript::Packager.package_config(params[:source_folder], params[:config_file])
30
+ else
31
+ raise 'not coded yet'
32
+ end
33
+ packages
34
+ end
35
+
36
+ def packages_to_string(packages)
37
+ code = []
38
+ code << "(function(){"
39
+ code << " #{MultiScript::CoffeeCompiler.compile(packages[:coffee])}"
40
+ code << " #{packages[:js]}"
41
+ code << "}).call(this);"
42
+ code.join("\n")
43
+ end
44
+
45
+ def write_file(codez, out_folder, out_file)
46
+ File.open(File.join(out_folder, out_file), 'w') do |file|
47
+ file.write(codez)
48
+ end
49
+ end
50
+
51
+ def minify(source)
52
+ require "uglifier"
53
+ Uglifier.compile(source)
54
+ end
55
+
56
+ end # class << self
57
+ end # module MultiScript
@@ -0,0 +1,10 @@
1
+ module MultiScript
2
+ class CoffeeCompiler
3
+ class << self
4
+ def compile(source)
5
+ require "coffee-script"
6
+ CoffeeScript.compile(source, :no_wrap => true)
7
+ end
8
+ end #class << self
9
+ end
10
+ end
@@ -0,0 +1,40 @@
1
+ module MultiScript
2
+ class Packager
3
+ class << self
4
+ def package_folder(folder)
5
+ entires = Dir.entries(folder)
6
+ coffee = entires.select{ |ent| ent.end_with?('.coffee')}
7
+ js = entires.select{ |ent| ent.end_with?('.js')}
8
+ package(folder, coffee, js)
9
+ end
10
+
11
+ def package_config(root_folder, config_file)
12
+ require "yaml" #lazy_load
13
+ config = YAML::load(File.read(File.join(root_folder, config_file)))
14
+ coffee, js = [], []
15
+ config['packages'].each do |package|
16
+ if package.end_with?('.coffee')
17
+ coffee << package
18
+ elsif package.end_with?('.js')
19
+ js << package
20
+ end
21
+ end
22
+ package(root_folder, coffee, js)
23
+ end
24
+
25
+ private
26
+ def package(folder, coffee, js)
27
+ coffee_source = ""
28
+ js_source = ""
29
+ coffee.each do |name|
30
+ coffee_source += File.read(File.join(folder, name)) + "\n"
31
+ end
32
+ js.each do |name|
33
+ js_source += File.read(File.join(folder, name)) + "\n"
34
+ end
35
+
36
+ {:coffee => coffee_source, :js => js_source}
37
+ end
38
+ end #class << self
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ module MultiScript
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "multiscript/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "multiscript"
7
+ s.version = MultiScript::VERSION
8
+ s.authors = ["Sokolov Ilya"]
9
+ s.email = ["falconmain@gmail.com"]
10
+ s.homepage = "https://github.com/Flcn/multiscript"
11
+ s.summary = "JavaScript files handling library"
12
+ s.description = "Can compile multipl coffee and js file together, compress it ..."
13
+
14
+ s.rubyforge_project = "multiscript"
15
+
16
+ s.add_development_dependency "uglifier", ['>= 0']
17
+ s.add_development_dependency "coffee-script", ['>= 0']
18
+
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
+ s.require_paths = ["lib"]
23
+
24
+ # specify any dependencies here; for example:
25
+ # s.add_development_dependency "rspec"
26
+ # s.add_runtime_dependency "rest-client"
27
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: multiscript
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.1
6
+ platform: ruby
7
+ authors:
8
+ - Sokolov Ilya
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-09-14 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: uglifier
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ type: :development
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: coffee-script
28
+ prerelease: false
29
+ requirement: &id002 !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ type: :development
36
+ version_requirements: *id002
37
+ description: Can compile multipl coffee and js file together, compress it ...
38
+ email:
39
+ - falconmain@gmail.com
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - .gitignore
48
+ - Gemfile
49
+ - README.md
50
+ - Rakefile
51
+ - lib/multiscript.rb
52
+ - lib/multiscript/compilers.rb
53
+ - lib/multiscript/packager.rb
54
+ - lib/multiscript/version.rb
55
+ - multiscript.gemspec
56
+ homepage: https://github.com/Flcn/multiscript
57
+ licenses: []
58
+
59
+ post_install_message:
60
+ rdoc_options: []
61
+
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: "0"
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: "0"
76
+ requirements: []
77
+
78
+ rubyforge_project: multiscript
79
+ rubygems_version: 1.8.5
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: JavaScript files handling library
83
+ test_files: []
84
+