cjoiner 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -63,11 +63,14 @@ This is the skeleton for the configuration file or the data object:
63
63
  * `common_dependencies`: _{array}_ general dependencies array
64
64
  * `common_path`: _{string}_ common path for all items
65
65
  * `common_output`: _{string}_ common output path for all files
66
+ * undebugjs : _{boolean}_ remove _console_ statements
67
+ * undebugjs_prefix : _{string}_ set the _console_ prefix
66
68
  * `files`: define files
67
69
  * `file`: _{string}_ path and name for file (assuming `common_path` as root) to process, ex: `javascripts/all.js`
68
70
  * `name`: _{string}_ output name
69
71
  * `extension`: _{string}_ output extension
70
72
  * `type`: _{string}_ file type, `sass`, `js` or `yaml`, this is optional as `cjoiner` can guess by the extension
73
+ * undebugjs : _{boolean}_ remove _console_ statements per file configuration
71
74
  * `major`: _{int}_ major release
72
75
  * `minor`: _{int}_ minor release
73
76
  * `bugfix`: _{int}_ bugfix number
@@ -77,6 +80,18 @@ This is the skeleton for the configuration file or the data object:
77
80
  * `dependencies`: _{array}_ custom dependencies array for this file
78
81
  * `output`: _{string}_ file output assuming `common_output` as root
79
82
 
83
+ ##### Remove _console_ statements
84
+ This option must be activated globally or per-file configuration and only works for uncompressed files.
85
+ This _engine_ is basically a simple _regex_ that remove all those lines matching [console statements](https://developers.google.com/chrome-developer-tools/docs/console-api).
86
+
87
+ Also, you can set your own _console_ prefix. for example:
88
+
89
+ ```
90
+ undebugjs_prefix : APP
91
+ ```
92
+
93
+ will remove `APP.log([...])`, `APP.warn([...])`...
94
+
80
95
  ##### Join text files
81
96
  Set file type to `yaml` and define sources in another `yaml` file:
82
97
 
@@ -93,6 +108,7 @@ Set file type to `yaml` and define sources in another `yaml` file:
93
108
  config :
94
109
  common_path : /work/project/
95
110
  common_output : /work/project/output/
111
+ undebugjs : true
96
112
  debug : true
97
113
  common_dependencies : [
98
114
  javascripts/src/,
data/example/config.yaml CHANGED
@@ -3,6 +3,8 @@ config :
3
3
  common_output : output/
4
4
  debug : true
5
5
  compress : true
6
+ undebugjs : true
7
+ undebugjs_prefix : 'APP'
6
8
  common_dependencies : [
7
9
  javascripts/src/,
8
10
  javascripts/src/lib/,
@@ -4,6 +4,7 @@ require "cjoiner/engines/css"
4
4
  require "cjoiner/engines/compressor"
5
5
  require "cjoiner/engines/jsjoiner"
6
6
  require "cjoiner/engines/joiner"
7
+ require "cjoiner/engines/undebugjs"
7
8
 
8
9
  module Cjoiner
9
10
  # all the engines
@@ -1,5 +1,28 @@
1
1
  require 'sprockets'
2
2
 
3
+ #NOTE: underscore.js interpolation hash(<%=(.*?)%>) conflicts with Sprockets
4
+ # and raises UndefinedConstantError.
5
+ #
6
+ # In order to avoid this behavior I just avoid the raise statement
7
+ # and always return the value
8
+
9
+ module Sprockets
10
+ class SourceLine
11
+ protected
12
+ def interpolate_constants!(result, constants)
13
+ result.gsub!(/<%=(.*?)%>/) do
14
+ constant = $1.strip
15
+ if value = constants[constant]
16
+ value
17
+ else
18
+ puts "WARNING: couldn't find constant `#{constant}' in #{inspect}"
19
+ "<%=#{constant}%>"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+
3
26
  module Cjoiner
4
27
  module Engines
5
28
  # engine for js files
@@ -0,0 +1,49 @@
1
+ module Cjoiner
2
+ module Engines
3
+ # eliminates js debug statements
4
+ class UndebugJS < Cjoiner::Engines::Engine
5
+ def initialize(opts)
6
+ @keywords = []
7
+ set_keywords!
8
+ @engine = replace(opts[:content], opts[:prefix])
9
+ end
10
+
11
+ def add_keyword(keyword)
12
+ @keywords << keyword
13
+ end
14
+
15
+ def set_keywords!
16
+ add_keyword 'assert'
17
+ add_keyword 'clear'
18
+ add_keyword 'count'
19
+ add_keyword 'debug'
20
+ add_keyword 'dir'
21
+ add_keyword 'dirxml'
22
+ add_keyword 'error'
23
+ add_keyword 'group'
24
+ add_keyword 'groupCollapsed'
25
+ add_keyword 'groupEnd'
26
+ add_keyword 'info'
27
+ add_keyword 'log'
28
+ add_keyword 'profile'
29
+ add_keyword 'profileEnd'
30
+ add_keyword 'time'
31
+ add_keyword 'timeEnd'
32
+ add_keyword 'timeStamp'
33
+ add_keyword 'trace'
34
+ add_keyword 'warn'
35
+ add_keyword 'debugger'
36
+ add_keyword 'ungroup'
37
+ end
38
+
39
+ protected
40
+ def replace(str, prefix)
41
+ output = str
42
+ @keywords.each do|keyword|
43
+ output.gsub!(/^(\s*)?#{prefix}\.#{keyword}\(.*\);?\n?/, '')
44
+ end
45
+ output
46
+ end
47
+ end
48
+ end
49
+ end
@@ -1,4 +1,4 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  module Cjoiner
3
- VERSION = "1.5.2" #:nodoc
3
+ VERSION = "1.6.0" #:nodoc
4
4
  end
data/lib/cjoiner.rb CHANGED
@@ -68,6 +68,22 @@ module Cjoiner #:nodoc
68
68
  :files => files
69
69
  }).render
70
70
  end
71
+
72
+ # save debug file
73
+ if debug
74
+ write_file debug_file, concatenation
75
+ end
76
+
77
+ #undebugjs
78
+ if file_opts["extension"].to_sym == :js
79
+ if @config["undebugjs"] and file_opts["undebugjs"].nil? or file_opts["undebugjs"]
80
+ concatenation = Cjoiner::Engines::UndebugJS.new(
81
+ :prefix => @config['undebugjs_prefix'],
82
+ :content => concatenation
83
+ ).render
84
+ end
85
+ end
86
+
71
87
  # compress
72
88
  if @config["compress"] and file_opts["compress"].nil? or file_opts["compress"]
73
89
  compressed = Cjoiner::Engines::Compressor.new(
@@ -78,12 +94,10 @@ module Cjoiner #:nodoc
78
94
  :content => concatenation
79
95
  }).render
80
96
  end
81
- # save debug file
82
- if debug
83
- write_file debug_file, concatenation
84
- end
97
+
85
98
  # save final file
86
99
  write_file output_file, compressed != "" ? compressed : concatenation
100
+
87
101
  # set custom output
88
102
  if custom_output
89
103
  output = @config["common_output"] ? @config["common_output"] : ""
@@ -100,13 +114,15 @@ module Cjoiner #:nodoc
100
114
  def initialize(config = {})
101
115
  @config =
102
116
  {
103
- "yui" => false,
104
- "munge" => true,
105
- "charset" => 'utf-8',
106
- "debug" => false,
107
- "debug_suffix" => 'debug',
108
- "compress" => false,
109
- "common_path" => ''
117
+ "yui" => false,
118
+ "munge" => true,
119
+ "charset" => 'utf-8',
120
+ "debug" => false,
121
+ "debug_suffix" => 'debug',
122
+ "compress" => false,
123
+ "undebugjs" => false,
124
+ "undebugjs_prefix" => 'console',
125
+ "common_path" => ''
110
126
  }.merge(config)
111
127
  end
112
128
  end
metadata CHANGED
@@ -1,81 +1,72 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: cjoiner
3
- version: !ruby/object:Gem::Version
4
- hash: 7
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.6.0
5
5
  prerelease:
6
- segments:
7
- - 1
8
- - 5
9
- - 2
10
- version: 1.5.2
11
6
  platform: ruby
12
- authors:
13
- - "Alejandro El Inform\xC3\xA1tico"
7
+ authors:
8
+ - Alejandro El Informático
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-01-15 00:00:00 +01:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2013-07-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: sass
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 5
30
- segments:
31
- - 3
32
- - 2
33
- - 5
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
34
21
  version: 3.2.5
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: sprockets
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.5
30
+ - !ruby/object:Gem::Dependency
31
+ name: sprockets
32
+ requirement: !ruby/object:Gem::Requirement
41
33
  none: false
42
- requirements:
43
- - - "="
44
- - !ruby/object:Gem::Version
45
- hash: 19
46
- segments:
47
- - 1
48
- - 0
49
- - 2
34
+ requirements:
35
+ - - '='
36
+ - !ruby/object:Gem::Version
50
37
  version: 1.0.2
51
38
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: yui-compressor
55
39
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
57
41
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 55
62
- segments:
63
- - 0
64
- - 9
65
- - 6
42
+ requirements:
43
+ - - '='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: yui-compressor
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
66
53
  version: 0.9.6
67
54
  type: :runtime
68
- version_requirements: *id003
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.6
69
62
  description: Join css and js assets and create a versioned file.
70
- email:
63
+ email:
71
64
  - aeinformatico@gmail.com
72
- executables:
65
+ executables:
73
66
  - cjoiner
74
67
  extensions: []
75
-
76
68
  extra_rdoc_files: []
77
-
78
- files:
69
+ files:
79
70
  - .gitignore
80
71
  - Gemfile
81
72
  - README.md
@@ -104,43 +95,34 @@ files:
104
95
  - lib/cjoiner/engines/css.rb
105
96
  - lib/cjoiner/engines/joiner.rb
106
97
  - lib/cjoiner/engines/jsjoiner.rb
98
+ - lib/cjoiner/engines/undebugjs.rb
107
99
  - lib/cjoiner/errors.rb
108
100
  - lib/cjoiner/helpers.rb
109
101
  - lib/cjoiner/version.rb
110
102
  - license
111
- has_rdoc: true
112
103
  homepage: https://github.com/ainformatico/cjoiner
113
104
  licenses: []
114
-
115
105
  post_install_message:
116
106
  rdoc_options: []
117
-
118
- require_paths:
107
+ require_paths:
119
108
  - lib
120
- required_ruby_version: !ruby/object:Gem::Requirement
109
+ required_ruby_version: !ruby/object:Gem::Requirement
121
110
  none: false
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- hash: 3
126
- segments:
127
- - 0
128
- version: "0"
129
- required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
116
  none: false
131
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- hash: 3
135
- segments:
136
- - 0
137
- version: "0"
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
138
121
  requirements: []
139
-
140
122
  rubyforge_project:
141
- rubygems_version: 1.6.2
123
+ rubygems_version: 1.8.23
142
124
  signing_key:
143
125
  specification_version: 3
144
- summary: Simple tool for joining css and js assets and create a versioned file using a yaml file as configuration. Output format is 'filename.0.0.0.0.extension'
126
+ summary: Simple tool for joining css and js assets and create a versioned file using
127
+ a yaml file as configuration. Output format is 'filename.0.0.0.0.extension'
145
128
  test_files: []
146
-