web_blocks 2.0.1.dev → 2.0.2.dev

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDI0MzQ5MmMwNmJhNzI0MGY4MGFhNTEwYTJiZTI4Mjg2YzJjNjdiZA==
4
+ NjlhYjg1NWE1YWEzNDNjMmU2MGZmYTczZWQ3ODE0ZmQwZjYyYzViYg==
5
5
  data.tar.gz: !binary |-
6
- ZDIwODg5ZWFkZjcyN2IzYzc0ZTJiOTA4NjkxMjdmOTA2YTIwY2NlOQ==
6
+ NzcyNTM0NzQ0NTAxMTY5OWM1ZjE3NTVmOTBhM2QxZTc4NmQ0ZjZjZg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YjVkZDAxNzJkNTQ3Yjk3ZjQ0ODE2ZWM1MjMzM2ZkNWJmMzZhZDU1ZjcwMzJk
10
- YjM1YzUxOTEyNTMxZTJlNzM3NDg4OTI3OGE0N2NiNGQ2NmE2ZjM4OTM3Yjc3
11
- M2VkNmM1OWQzNWNhZDE2NDkyMzBjNzc2OTI0NWNlYTcxMDBlY2Q=
9
+ MThlZWJiMWJmZDdkYzFjZWQzM2Y4OWVlMGVlMjViNGI2MDk5YWNkNTFkNzUy
10
+ ZGY1ZmMxMzMzOWVkMzkxZTIwY2VmZGUzZTA4ZTIzN2JlOThhZjNhYWFjZmU1
11
+ OTFlYTZmYTBhOGE5NTMzMzdjZWRlMzczMGQ0M2U4YzgxMDRhZTI=
12
12
  data.tar.gz: !binary |-
13
- MTc4ZmY5YjNjYWZkZjU3MzUyMzkyZjUzZTEzNTg4OWQxZGMyNmVmZTk0ODlm
14
- OTNkNDQ0ZGYyZTY5YThmYzcxYjEwM2UxMDEyZDBlYmMxZGQ0ZTA3MjYzZGUx
15
- YjQzMDlkNzgzMzk3ZGM2NDk3ZmVkMDhkY2JlMmQyNzhkMWM0YTQ=
13
+ ZTgzZTA1YWFiODMzNmUxZDQwYzVlZDM2NGI3NTllNjI1ZmU3ZGQ0NDgwOTA2
14
+ NWUzOWY3NTNjYmJmMTgyMWM1ZmE2MzYwYWNjNGMxZGQ0OTA1NTI3YjVkZDc3
15
+ MTE5YTljNGViMmUwYWVmNzA2YjRlODY3ZDg4M2MwZDBiYzY1Yjc=
data/README.md CHANGED
@@ -4,7 +4,7 @@ WebBlocks is package, configuration and dependency manager for web assets (SCSS,
4
4
 
5
5
  ## Status
6
6
 
7
- [![Code Climate](https://codeclimate.com/github/WebBlocks/WebBlocks.png)](https://codeclimate.com/github/WebBlocks/WebBlocks) [![Build Status](https://travis-ci.org/WebBlocks/WebBlocks.png?branch=master)](https://travis-ci.org/WebBlocks/WebBlocks) [![Coverage Status](https://coveralls.io/repos/WebBlocks/WebBlocks/badge.png?branch=master)](https://coveralls.io/r/WebBlocks/WebBlocks?branch=master) [![Dependency Status](https://gemnasium.com/WebBlocks/WebBlocks.png)](https://gemnasium.com/WebBlocks/WebBlocks)
7
+ [![Gem Version](https://badge.fury.io/rb/web_blocks.png)](http://badge.fury.io/rb/web_blocks) [![Dependency Status](https://gemnasium.com/WebBlocks/WebBlocks.png)](https://gemnasium.com/WebBlocks/WebBlocks) [![Code Climate](https://codeclimate.com/github/WebBlocks/WebBlocks.png)](https://codeclimate.com/github/WebBlocks/WebBlocks) [![Build Status](https://travis-ci.org/WebBlocks/WebBlocks.png?branch=master)](https://travis-ci.org/WebBlocks/WebBlocks) [![Coverage Status](https://coveralls.io/repos/WebBlocks/WebBlocks/badge.png?branch=master)](https://coveralls.io/r/WebBlocks/WebBlocks?branch=master)
8
8
 
9
9
  This repository contains the code base for WebBlocks 2.0, which is currently **under development** and **not intended for use at this time**. For those interested in using WebBlocks today, please see WebBlocks 1 under the [ucla/WebBlocks](https://github.com/ucla/WebBlocks) repository.
10
10
 
@@ -24,6 +24,14 @@ WebBlocks is built on top of a number of outstanding open source platforms and p
24
24
 
25
25
  **NOTE** Assuming installation in one of the ways described as follows, this documentation uses `blocks` as a shell command; in cases where it's installed locally by bundle rather than globally, it may be necessary to use `bundle exec blocks` instead.
26
26
 
27
+ ### Pre-requisites
28
+
29
+ The following are required:
30
+
31
+ * Ruby, RubyGems and Budler
32
+ * Node.js and NPM
33
+ * Java 1.4+ (only for compression)
34
+
27
35
  ### Download
28
36
 
29
37
  #### From Source
data/demo/Blockfile.rb CHANGED
@@ -9,22 +9,13 @@
9
9
  # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
10
10
 
11
11
  #
12
- # CUSTOM BLOCK DEFINITIONS
13
- #
14
- # Ideally, frameworks and tools should include Blockfile.rb; however, this will not always be the case. In some cases,
15
- # frameworks may not explicitly support WebBlocks (even though, through this syntax, WebBlocks can support them), and,
16
- # in others, it may be advantageous simply to download a build product.
12
+ # BUILD SETTINGS
17
13
  #
18
14
 
19
- # Adding a jQuery block as jQuery does not include a Blockfile.rb defining it
20
- block 'jquery', :path => 'bower_components/jquery/dist' do
21
- js_file 'jquery.js'
22
- end
15
+ # Set where to build explicitly:
16
+ # set :build_path, 'build'
17
+
23
18
 
24
- # Adding a dependency on the jquery block for efx to include jquery if including efx
25
- block 'efx' do
26
- dependency framework.route 'jquery'
27
- end
28
19
 
29
20
  #
30
21
  # BLOCK INCLUSIONS
@@ -45,6 +36,21 @@ include 'efx', 'driver', 'toggle'
45
36
 
46
37
 
47
38
 
39
+
40
+ #
41
+ # CUSTOM BLOCK DEFINITIONS
42
+ #
43
+ # In some cases, the existing definitions do not behave as desired, so reopen and modify accordingly.
44
+ #
45
+
46
+ # The efx block does not enforce a dependency on jQuery so add that here.
47
+ block 'efx' do
48
+ dependency framework.route 'jquery'
49
+ end
50
+
51
+
52
+
53
+
48
54
  #
49
55
  # CUSTOM SOURCES
50
56
  #
@@ -21,7 +21,7 @@ module WebBlocks
21
21
 
22
22
  def save!
23
23
 
24
- yield task.base_path + task.root.get(:build_dir) if block_given?
24
+ yield task.base_path + task.root.get(:build_path) if block_given?
25
25
 
26
26
  end
27
27
 
@@ -1,6 +1,7 @@
1
1
  require 'fileutils'
2
2
  require 'web_blocks/manager/builder/base'
3
3
  require 'web_blocks/strategy/link/js'
4
+ require 'web_blocks/strategy/optimize/js'
4
5
 
5
6
  module WebBlocks
6
7
  module Manager
@@ -8,12 +9,14 @@ module WebBlocks
8
9
  class Js < Base
9
10
 
10
11
  attr_reader :link_strategy
12
+ attr_reader :optimize_strategy
11
13
 
12
14
  def initialize task
13
15
 
14
16
  super task
15
17
 
16
18
  @link_strategy = WebBlocks::Strategy::Link::Js.new(task)
19
+ @optimize_strategy = WebBlocks::Strategy::Optimize::Js.new(task)
17
20
 
18
21
  end
19
22
 
@@ -22,6 +25,7 @@ module WebBlocks
22
25
  super do
23
26
 
24
27
  link_strategy.execute!
28
+ optimize_strategy.execute!
25
29
 
26
30
  end
27
31
 
@@ -31,19 +35,19 @@ module WebBlocks
31
35
 
32
36
  super do |build_path|
33
37
 
34
- log.info do
35
-
36
- js_build_path = build_path + task.root.get(:js_build_dir)
37
- FileUtils.mkdir_p js_build_path
38
-
39
- source_path = link_strategy.product_path
40
- product_path = js_build_path + source_path.basename
41
- FileUtils.copy source_path, product_path
42
-
43
- "Saved JS build #{product_path}"
38
+ js_build_path = build_path
39
+ FileUtils.mkdir_p js_build_path
44
40
 
41
+ [link_strategy, optimize_strategy].each do |strategy|
42
+ log.info do
43
+ source_path = strategy.product_path
44
+ product_path = js_build_path + source_path.basename
45
+ FileUtils.copy source_path, product_path
46
+ "Saved JS build #{product_path}"
47
+ end
45
48
  end
46
49
 
50
+
47
51
  end
48
52
 
49
53
  end
@@ -1,6 +1,7 @@
1
1
  require 'web_blocks/manager/builder/base'
2
2
  require 'web_blocks/strategy/link/scss'
3
3
  require 'web_blocks/strategy/compile/scss'
4
+ require 'web_blocks/strategy/optimize/css'
4
5
 
5
6
  module WebBlocks
6
7
  module Manager
@@ -9,6 +10,7 @@ module WebBlocks
9
10
 
10
11
  attr_reader :link_strategy
11
12
  attr_reader :compile_strategy
13
+ attr_reader :optimize_strategy
12
14
 
13
15
  def initialize task
14
16
 
@@ -16,6 +18,7 @@ module WebBlocks
16
18
 
17
19
  @link_strategy = WebBlocks::Strategy::Link::Scss.new(task)
18
20
  @compile_strategy = WebBlocks::Strategy::Compile::Scss.new(task)
21
+ @optimize_strategy = WebBlocks::Strategy::Optimize::Css.new(task)
19
22
 
20
23
  end
21
24
 
@@ -25,6 +28,7 @@ module WebBlocks
25
28
 
26
29
  link_strategy.execute!
27
30
  compile_strategy.execute!
31
+ optimize_strategy.execute!
28
32
 
29
33
  end
30
34
 
@@ -34,17 +38,16 @@ module WebBlocks
34
38
 
35
39
  super do |build_path|
36
40
 
37
- log.info do
38
-
39
- css_build_path = build_path + task.root.get(:css_build_dir)
40
- FileUtils.mkdir_p css_build_path
41
-
42
- source_path = compile_strategy.product_path
43
- product_path = css_build_path + source_path.basename
44
- FileUtils.copy source_path, product_path
45
-
46
- "Saved CSS build #{product_path}"
41
+ css_build_path = build_path
42
+ FileUtils.mkdir_p css_build_path
47
43
 
44
+ [compile_strategy, optimize_strategy].each do |strategy|
45
+ log.info do
46
+ source_path = strategy.product_path
47
+ product_path = css_build_path + source_path.basename
48
+ FileUtils.copy source_path, product_path
49
+ "Saved CSS build #{product_path}"
50
+ end
48
51
  end
49
52
 
50
53
  end
@@ -0,0 +1,33 @@
1
+ module WebBlocks
2
+ module Strategy
3
+ module Optimize
4
+ class Base
5
+
6
+ attr_reader :task
7
+ attr_reader :log
8
+ attr_reader :product_path
9
+ attr_reader :source_path
10
+
11
+ def initialize task
12
+
13
+ @task = task
14
+ @log = task.log.scope 'Optimize'
15
+ @product_path = false
16
+ @source_path = false
17
+
18
+ end
19
+
20
+ def execute!
21
+
22
+ log.info { "Starting" }
23
+
24
+ yield if block_given?
25
+
26
+ log.info { "Finished" }
27
+
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,37 @@
1
+ require 'web_blocks/strategy/optimize/base'
2
+ require 'yui/compressor'
3
+
4
+ module WebBlocks
5
+ module Strategy
6
+ module Optimize
7
+ class Css < Base
8
+
9
+ def initialize task
10
+
11
+ super task
12
+
13
+ @log = task.log.scope 'CSS - Optimize'
14
+ @product_path = task.base_path + '.blocks/workspace/css/blocks.min.css'
15
+ @source_path = task.base_path + '.blocks/workspace/css/blocks.css'
16
+
17
+ end
18
+
19
+ def execute!
20
+
21
+ super do
22
+
23
+ File.open task.base_path + product_path, 'w' do |product|
24
+ File.open task.base_path + source_path, 'r' do |source|
25
+ compressor = YUI::CssCompressor.new
26
+ product.write compressor.compress source
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ require 'web_blocks/strategy/optimize/base'
2
+ require 'yui/compressor'
3
+
4
+ module WebBlocks
5
+ module Strategy
6
+ module Optimize
7
+ class Js < Base
8
+
9
+ def initialize task
10
+
11
+ super task
12
+
13
+ @log = task.log.scope 'JS - Optimize'
14
+ @product_path = task.base_path + '.blocks/workspace/js/blocks.min.js'
15
+ @source_path = task.base_path + '.blocks/workspace/js/blocks.js'
16
+
17
+ end
18
+
19
+ def execute!
20
+
21
+ super do
22
+
23
+ File.open task.base_path + product_path, 'w' do |product|
24
+ File.open task.base_path + source_path, 'r' do |source|
25
+ compressor = YUI::JavaScriptCompressor.new
26
+ product.write compressor.compress source
27
+ end
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
36
+ end
37
+ end
@@ -134,9 +134,7 @@ the APIs ad internals before release.
134
134
  def initialize_root!
135
135
 
136
136
  @root = framework do
137
- set :build_dir, 'build'
138
- set :css_build_dir, 'css'
139
- set :js_build_dir, 'js'
137
+ set :build_path, 'build'
140
138
  end
141
139
 
142
140
  end
@@ -22,6 +22,11 @@ module WebBlocks
22
22
  :default => nil,
23
23
  :desc => 'Paths to explicitly include'
24
24
 
25
+ class_option :build_path,
26
+ :type => :string,
27
+ :default => nil,
28
+ :desc => 'Path where WebBlocks should build products'
29
+
25
30
  no_commands do
26
31
 
27
32
  def prepare_blocks!
@@ -51,6 +56,7 @@ module WebBlocks
51
56
  load_blockfile! log
52
57
  include_own_routes! log
53
58
  include_routes_from_command_line! log if self.options.include
59
+ set_build_path_from_command_line!
54
60
 
55
61
  end
56
62
 
@@ -150,6 +156,12 @@ module WebBlocks
150
156
 
151
157
  end
152
158
 
159
+ def set_build_path_from_command_line!
160
+
161
+ root.set :build_path, self.options.build_path if self.options.build_path
162
+
163
+ end
164
+
153
165
  end
154
166
  end
155
167
  end
@@ -33,6 +33,7 @@ module WebBlocks
33
33
 
34
34
  if relink_needed
35
35
  root.remove_all_children
36
+ initialize_root!
36
37
  prepare_blocks!
37
38
  end
38
39
 
@@ -1,3 +1,3 @@
1
1
  module WebBlocks
2
- VERSION = "2.0.1.dev"
2
+ VERSION = "2.0.2.dev"
3
3
  end
data/web_blocks.gemspec CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency 'sass-css-importer'
28
28
  spec.add_dependency 'fork'
29
29
  spec.add_dependency 'fssm'
30
+ spec.add_dependency 'yui-compressor'
30
31
 
31
32
  spec.add_development_dependency 'bundler'
32
33
  spec.add_development_dependency 'rake'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web_blocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1.dev
4
+ version: 2.0.2.dev
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Bollens
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-03 00:00:00.000000000 Z
11
+ date: 2014-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ! '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: yui-compressor
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: bundler
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -202,6 +216,9 @@ files:
202
216
  - lib/web_blocks/strategy/link/base.rb
203
217
  - lib/web_blocks/strategy/link/js.rb
204
218
  - lib/web_blocks/strategy/link/scss.rb
219
+ - lib/web_blocks/strategy/optimize/base.rb
220
+ - lib/web_blocks/strategy/optimize/css.rb
221
+ - lib/web_blocks/strategy/optimize/js.rb
205
222
  - lib/web_blocks/structure.rb
206
223
  - lib/web_blocks/structure/attribute/dependency.rb
207
224
  - lib/web_blocks/structure/attribute/loose_dependency.rb