coffeefile 0.0.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/.document ADDED
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/.gitignore ADDED
@@ -0,0 +1,49 @@
1
+ # rcov generated
2
+ coverage
3
+
4
+ # rdoc generated
5
+ rdoc
6
+
7
+ # yard generated
8
+ doc
9
+ .yardoc
10
+
11
+ # bundler
12
+ .bundle
13
+
14
+ # jeweler generated
15
+ pkg
16
+
17
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
18
+ #
19
+ # * Create a file at ~/.gitignore
20
+ # * Include files you want ignored
21
+ # * Run: git config --global core.excludesfile ~/.gitignore
22
+ #
23
+ # After doing this, these files will be ignored in all your git projects,
24
+ # saving you from having to 'pollute' every project you touch with them
25
+ #
26
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
27
+ #
28
+ # For MacOS:
29
+ #
30
+ #.DS_Store
31
+
32
+ # For TextMate
33
+ #*.tmproj
34
+ #tmtags
35
+
36
+ # For emacs:
37
+ #*~
38
+ #\#*
39
+ #.\#*
40
+
41
+ # For vim:
42
+ #*.swp
43
+
44
+ # For redcar:
45
+ #.redcar
46
+
47
+ # For rubinius:
48
+ #*.rbc
49
+ *.gem
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Robert R Evans
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
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # Coffeefile
2
+
3
+ Coffeefile example:
4
+
5
+ app/app.coffee
6
+ app/api.coffee
7
+ app/views/**/*.coffee
8
+
9
+ Add as many files as you have to your "Coffeefile" (no extension). Supports globbing as well.
data/Rakefile ADDED
@@ -0,0 +1,7 @@
1
+ require 'rake/testtask'
2
+
3
+ task :default => :test
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.warning = true
7
+ end
data/bin/coffeefile ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ require 'coffeefile'
3
+ if ARGV.first.nil?
4
+ Coffeefile.compile('app')
5
+ else
6
+ Coffeefile.compile(ARGV.first)
7
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ Gem::Specification.new do |s|
4
+ s.name = 'coffeefile'
5
+ s.version = '0.0.1'
6
+ s.platform = Gem::Platform::RUBY
7
+ s.authors = ["Robert R Evans"]
8
+ s.date = '2011-07-13'
9
+ s.email = 'robert@codewranglers.org'
10
+ s.homepage = 'http://github.com/codewranglers/coffeefile'
11
+ s.summary = "Multiple coffee-script file compiler"
12
+ s.description = <<-EOS
13
+ Use a Coffeefile to add all your coffee files that require compiling. Then use the coffefile command to compile.
14
+ EOS
15
+ s.license = "MIT"
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+
22
+ s.add_runtime_dependency(%q<coffee-script>, ["~> 2.2.0"])
23
+ s.add_development_dependency(%q<rocco>, ["~> 0.6"])
24
+ end
data/lib/coffeefile.rb ADDED
@@ -0,0 +1,36 @@
1
+ require 'coffee-script'
2
+ require 'pathname'
3
+
4
+ module Coffeefile
5
+ VERSION = '0.0.1'
6
+
7
+ module Source
8
+ def self.path
9
+ @path ||= Pathname.new(Dir.pwd).join('Coffeefile')
10
+ end
11
+
12
+ def self.contents
13
+ @contents ||= path.read.split("\n").compact.delete_if { |l| l.include?("#") }.collect do |f|
14
+ Dir.glob(f)
15
+ end.flatten!.uniq
16
+ end
17
+ end
18
+
19
+ class << self
20
+ def version
21
+ VERSION
22
+ end
23
+
24
+ def compile(output, options={})
25
+ contents = Source.contents.collect { |source| File.read(source) }.join("\n")
26
+ data = CoffeeScript.compile(contents, options)
27
+ fileout = output =~ /(\.js)$/ ? output : "#{output}.js"
28
+ File.open(File.join(Dir.pwd, fileout), 'w+') { |f| f.puts data }
29
+ end
30
+
31
+ def files_to_compile
32
+ Source.contents
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,76 @@
1
+ require 'coffeefile'
2
+ require 'test/unit'
3
+ require 'fileutils'
4
+
5
+ class TestCoffeefile < Test::Unit::TestCase
6
+ COFFEEFILE = File.join(Dir.pwd, 'Coffeefile')
7
+ def setup
8
+ FileUtils.touch(COFFEEFILE)
9
+ File.open(COFFEEFILE, 'w+') do |file|
10
+ file.puts "# List of files in order of load"
11
+ file.puts "temp/app.coffee"
12
+ file.puts "temp/api.coffee"
13
+ file.puts "temp/views/**/*.coffee"
14
+ end
15
+ FileUtils.mkdir_p('temp/views/users')
16
+ FileUtils.mkdir_p('temp/views/bars')
17
+ FileUtils.touch('temp/app.coffee')
18
+ File.open('temp/app.coffee', 'w+') do |f|
19
+ f.puts "app: (options) ->"
20
+ f.puts " true"
21
+ end
22
+ FileUtils.touch('temp/api.coffee')
23
+ File.open('temp/api.coffee', 'w+') do |f|
24
+ f.puts "api: (options) ->"
25
+ f.puts " true"
26
+ end
27
+ FileUtils.touch('temp/views/main.coffee')
28
+ File.open('temp/views/main.coffee', 'w+') do |f|
29
+ f.puts "main: (options) ->"
30
+ f.puts " true"
31
+ end
32
+ FileUtils.touch('temp/views/detail.coffee')
33
+ FileUtils.touch('temp/views/users/main.coffee')
34
+ FileUtils.touch('temp/views/users/detail.coffee')
35
+ FileUtils.touch('temp/views/bars/main.coffee')
36
+ FileUtils.touch('temp/views/bars/detail.coffee')
37
+ end
38
+
39
+ def test_path
40
+ assert_equal File.join(Dir.pwd, 'Coffeefile'), Coffeefile::Source.path.to_s
41
+ end
42
+
43
+ def test_reading_coffeefile
44
+ assert_equal ["temp/app.coffee",
45
+ "temp/api.coffee",
46
+ "temp/views/bars/detail.coffee",
47
+ "temp/views/bars/main.coffee",
48
+ "temp/views/detail.coffee",
49
+ "temp/views/main.coffee",
50
+ "temp/views/users/detail.coffee",
51
+ "temp/views/users/main.coffee"], Coffeefile::Source.contents
52
+ end
53
+
54
+
55
+ def test_version_output
56
+ assert_equal '0.0.1', Coffeefile.version
57
+ end
58
+
59
+ def test_compiling_of_coffeescripts_with_no_extension
60
+ Coffeefile.compile('app')
61
+ assert_equal "(function() {\n ({\n app: function(options) {\n return true;\n },\n api: function(options) {\n return true;\n },\n main: function(options) {\n return true;\n }\n });\n}).call(this);\n", File.read(File.join(Dir.pwd, 'app.js'))
62
+ FileUtils.rm('app.js')
63
+ end
64
+
65
+ def test_compiling_of_coffeescripts_with_no_extension
66
+ Coffeefile.compile('program.js', :bare => true)
67
+ assert_equal "({\n app: function(options) {\n return true;\n },\n api: function(options) {\n return true;\n },\n main: function(options) {\n return true;\n }\n});\n", File.read(File.join(Dir.pwd, 'program.js'))
68
+ FileUtils.rm('program.js')
69
+ end
70
+
71
+
72
+ def teardown
73
+ FileUtils.rm(COFFEEFILE)
74
+ FileUtils.rm_rf('temp')
75
+ end
76
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: coffeefile
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Robert R Evans
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-07-13 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: coffee-script
16
+ requirement: &2158049660 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.2.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2158049660
25
+ - !ruby/object:Gem::Dependency
26
+ name: rocco
27
+ requirement: &2158049060 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '0.6'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *2158049060
36
+ description: ! ' Use a Coffeefile to add all your coffee files that require compiling.
37
+ Then use the coffefile command to compile.
38
+
39
+ '
40
+ email: robert@codewranglers.org
41
+ executables:
42
+ - coffeefile
43
+ extensions: []
44
+ extra_rdoc_files: []
45
+ files:
46
+ - .document
47
+ - .gitignore
48
+ - LICENSE
49
+ - README.md
50
+ - Rakefile
51
+ - bin/coffeefile
52
+ - coffeefile.gemspec
53
+ - lib/coffeefile.rb
54
+ - test/test_coffeefile.rb
55
+ homepage: http://github.com/codewranglers/coffeefile
56
+ licenses:
57
+ - MIT
58
+ post_install_message:
59
+ rdoc_options: []
60
+ require_paths:
61
+ - lib
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 1.8.5
77
+ signing_key:
78
+ specification_version: 3
79
+ summary: Multiple coffee-script file compiler
80
+ test_files:
81
+ - test/test_coffeefile.rb