sproutcore 1.5.0.pre.4 → 1.5.0.pre.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +6 -0
- data/VERSION.yml +1 -1
- data/lib/Buildfile +1 -1
- data/lib/buildtasks/build.rake +14 -6
- data/lib/buildtasks/manifest.rake +171 -72
- data/lib/frameworks/sproutcore/Buildfile +3 -5
- data/lib/frameworks/sproutcore/CHANGELOG.md +9 -0
- data/lib/frameworks/sproutcore/apps/test_controls/resources/main_page.js +2 -1
- data/lib/frameworks/sproutcore/apps/test_controls/resources/progress_page.js +7 -17
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +7 -1
- data/lib/frameworks/sproutcore/frameworks/bootstrap/system/loader.js +14 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/event.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +14 -3
- data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record.js +2 -2
- data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +6 -0
- data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/alert.js +49 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/menu.js +8 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/panes/panel.js +46 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/button.js +32 -5
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/checkbox.js +32 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/disclosure.js +31 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/progress.js +15 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/radio.js +28 -7
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/segmented.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/slider.js +20 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/render_delegates/well.js +2 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/alert/ui.js +40 -34
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/menu/ui.js +35 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/panel/ui.js +43 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/methods.js +6 -16
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +21 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/disclosure/ui.js +41 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +128 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +93 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroll/ui.js +13 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/scroller.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/methods.js +47 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +51 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/method.js +33 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/toolbar/ui.js +29 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/checkbox.js +28 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/disclosure.js +9 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +148 -134
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_item.js +18 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/menu_scroll.js +30 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/progress.js +9 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/radio.js +52 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroll.js +2 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/scroller.js +36 -3
- data/lib/frameworks/sproutcore/frameworks/desktop/views/segmented.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/slider.js +9 -1
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split.js +15 -4
- data/lib/frameworks/sproutcore/frameworks/desktop/views/split_divider.js +1 -6
- data/lib/frameworks/sproutcore/frameworks/desktop/views/tab.js +4 -2
- data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +7 -0
- data/lib/frameworks/sproutcore/frameworks/desktop/views/well.js +1 -2
- data/lib/frameworks/sproutcore/frameworks/forms/views/form.js +3 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/english.lproj/bootstrap.rhtml +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/auto_resize.js +0 -9
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/editable.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/mixins/flowed_layout.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/label.js +25 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/system/chance.js +64 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +34 -27
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +42 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +62 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -8
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +12 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/text_field/ui.js +48 -1
- data/lib/frameworks/sproutcore/frameworks/foundation/views/field.js +19 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +2 -0
- data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +11 -5
- data/lib/frameworks/sproutcore/frameworks/foundation/views/text_field.js +152 -74
- data/lib/frameworks/sproutcore/frameworks/runtime/private/observer_queue.js +12 -9
- data/lib/frameworks/sproutcore/frameworks/runtime/system/logger.js +1476 -176
- data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +0 -2
- data/lib/frameworks/sproutcore/frameworks/runtime/tests/system/logger.js +227 -32
- data/lib/frameworks/sproutcore/frameworks/statechart/system/state.js +11 -11
- data/lib/frameworks/sproutcore/frameworks/statechart/system/statechart.js +1 -1
- data/lib/frameworks/sproutcore/frameworks/testing/system/runner.js +10 -0
- data/lib/frameworks/sproutcore/lib/index.rhtml +30 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/18px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/24px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/30px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/44px/segmented.css +4 -4
- data/lib/frameworks/sproutcore/themes/ace/resources/segmented/segmented.css +4 -0
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.css +5 -1
- data/lib/frameworks/sproutcore/themes/ace/resources/slider/ace/slider.js +11 -3
- data/lib/frameworks/sproutcore/themes/ace/resources/well/well.css +7 -8
- data/lib/frameworks/sproutcore/themes/ace/resources/well/well.js +2 -4
- data/lib/gen/app/templates/apps/@target_name@/Buildfile +14 -0
- data/lib/gen/app/templates/apps/@target_name@/theme.js +27 -0
- data/lib/gen/html_app/templates/apps/@target_name@/resources/stylesheets/@target_name@.css +4 -0
- data/lib/gen/project/templates/@filename@/Buildfile +7 -2
- data/lib/gen/theme/templates/themes/@target_name@/Buildfile +3 -0
- data/lib/gen/theme/templates/themes/@target_name@/theme.js +23 -0
- data/lib/sproutcore/builders.rb +2 -0
- data/lib/sproutcore/builders/chance.rb +64 -0
- data/lib/sproutcore/builders/chance_file.rb +59 -0
- data/lib/sproutcore/builders/combine.rb +0 -45
- data/lib/sproutcore/builders/html.rb +1 -1
- data/lib/sproutcore/builders/minify.rb +5 -17
- data/lib/sproutcore/builders/module.rb +2 -2
- data/lib/sproutcore/builders/string_wrapper.rb +13 -15
- data/lib/sproutcore/helpers.rb +1 -1
- data/lib/sproutcore/helpers/minifier.rb +56 -0
- data/lib/sproutcore/helpers/static_helper.rb +86 -40
- data/lib/sproutcore/models/generator.rb +16 -0
- data/lib/sproutcore/models/manifest_entry.rb +8 -1
- data/lib/sproutcore/models/target.rb +101 -33
- data/lib/sproutcore/tools.rb +0 -7
- data/lib/sproutcore/tools/build.rb +2 -37
- data/spec/buildtasks/manifest/prepare_build_tasks/chance_spec.rb +100 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/combine_spec.rb +86 -9
- data/spec/buildtasks/manifest/prepare_build_tasks/css_spec.rb +1 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/minify_spec.rb +1 -1
- data/spec/buildtasks/manifest/prepare_build_tasks/module_info_spec.rb +96 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/module_spec.rb +83 -0
- data/spec/buildtasks/manifest/prepare_build_tasks/packed_spec.rb +37 -4
- data/spec/buildtasks/manifest/spec_helper.rb +4 -0
- data/spec/fixtures/builder_tests/Buildfile +11 -9
- data/spec/fixtures/builder_tests/apps/chance_test/Buildfile +14 -0
- data/spec/fixtures/builder_tests/apps/chance_test/core.js +27 -0
- data/spec/fixtures/builder_tests/apps/chance_test/main.js +30 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/demo.css +6 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/last_file.css +7 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/loading.rhtml +9 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/main_page.js +24 -0
- data/spec/fixtures/builder_tests/apps/chance_test/resources/z_first_file.css +6 -0
- data/spec/fixtures/builder_tests/apps/chance_test/theme.js +27 -0
- data/spec/fixtures/builder_tests/apps/module_test/module.js +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/req_style_2.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/javascript.js +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/lib/alt_layout.rhtml +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/deferred_module/req_js_2.js +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/dynamic_req_js_1.js +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/dynamic_req_target_1/english.lproj/dynamic_req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/inlined_module/README +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/req_style_1.css +0 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/strings.js +4 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/english.lproj/test.rhtml +1 -0
- data/spec/fixtures/builder_tests/apps/module_test/modules/required_target/req_js_1.js +0 -0
- data/spec/fixtures/helper_tests/apps/minifier_test/core.js +8 -0
- data/spec/fixtures/real_world/Buildfile +11 -1
- data/spec/fixtures/real_world/apps/account/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/calendar/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/contacts/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/contacts/modules/printing/README +0 -0
- data/spec/fixtures/real_world/apps/mail/modules/preferences/README +0 -0
- data/spec/fixtures/real_world/apps/mail/modules/printing/README +0 -0
- data/spec/fixtures/real_world/apps/photos/modules/email/README +0 -0
- data/spec/fixtures/real_world/apps/photos/modules/preferences/README +0 -0
- data/spec/lib/builders/chance_file_spec.rb +63 -0
- data/spec/lib/builders/chance_spec.rb +81 -0
- data/spec/lib/builders/module_spec.rb +133 -0
- data/spec/lib/helpers/minifier.rb +31 -0
- data/spec/lib/models/project/find_targets_for_spec.rb +1 -1
- data/vendor/chance/lib/chance/imagers/data_url.rb +68 -17
- data/vendor/chance/lib/chance/instance.rb +55 -30
- data/vendor/chance/lib/chance/parser.rb +1 -1
- data/vendor/chance/lib/chance/slicing.rb +39 -3
- metadata +52 -7
- data/lib/frameworks/sproutcore/frameworks/foundation/system/logger.js +0 -163
- data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/logger.js +0 -44
- data/spec/buildtasks/manifest/prepare_build_tasks/bundle_spec.rb +0 -254
- data/spec/fixtures/builder_tests/apps/bundle_test/bundle.js +0 -1
- data/spec/lib/builders/bundle_spec.rb +0 -295
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
*SproutCore 1.5.0.pre.4.1 (March 1, 2011)*
|
2
|
+
|
3
|
+
* Fix bug in SC.TemplateCollectionView that was causing Todos demo not to work
|
4
|
+
in Firefox.
|
5
|
+
* Added default CSS for HTML-based projects.
|
6
|
+
|
1
7
|
*SproutCore 1.5.0.pre.4 (February 28, 2011)*
|
2
8
|
|
3
9
|
* We are beginning to move API that we don't believe will be ready before 1.5
|
data/VERSION.yml
CHANGED
data/lib/Buildfile
CHANGED
@@ -71,7 +71,7 @@ mode :all do
|
|
71
71
|
|
72
72
|
# name a framework to use as the theme. will be included in required
|
73
73
|
# frameworks automatically if found.
|
74
|
-
:theme => 'sproutcore/
|
74
|
+
:theme => 'sproutcore/ace',
|
75
75
|
|
76
76
|
# use default bootstrap framework
|
77
77
|
:bootstrap_inline => 'sproutcore/bootstrap:javascript',
|
data/lib/buildtasks/build.rake
CHANGED
@@ -20,16 +20,19 @@ namespace :build do
|
|
20
20
|
SC::Builder::Stylesheet.build env[:entry], env[:dst_path]
|
21
21
|
end
|
22
22
|
|
23
|
+
desc "builds an image file"
|
24
|
+
build_task :image do |task, env|
|
25
|
+
# by default, just copy images
|
26
|
+
require 'fileutils'
|
27
|
+
FileUtils.mkdir_p(File.dirname(env[:dst_path]))
|
28
|
+
FileUtils.cp_r(env[:src_path], env[:dst_path])
|
29
|
+
end
|
30
|
+
|
23
31
|
desc "converts a Handlebars file to JavaScript"
|
24
32
|
build_task :handlebars do |task, env|
|
25
33
|
SC::Builder::Handlebars.build env[:entry], env[:dst_path]
|
26
34
|
end
|
27
35
|
|
28
|
-
desc "stub task for images"
|
29
|
-
build_task :image do |task, env|
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
36
|
desc "builds a single sass file"
|
34
37
|
build_task :sass do |task, env|
|
35
38
|
SC::Builder::Sass.build env[:entry], env[:dst_path]
|
@@ -67,7 +70,12 @@ namespace :build do
|
|
67
70
|
|
68
71
|
desc "adds all the css and image files in the target to chance and lets it run on a per-target basis"
|
69
72
|
build_task :chance do |task, env|
|
70
|
-
SC::Builder::
|
73
|
+
SC::Builder::Chance.build env[:entry], env[:dst_path]
|
74
|
+
end
|
75
|
+
|
76
|
+
desc "extracts a file from the Chance entries"
|
77
|
+
build_task :chance_file do |task, env|
|
78
|
+
SC::Builder::ChanceFile.build env[:entry], env[:dst_path]
|
71
79
|
end
|
72
80
|
|
73
81
|
desc "wraps the entry into a string for prefetched modules"
|
@@ -202,7 +202,7 @@ namespace :manifest do
|
|
202
202
|
namespace :prepare_build_tasks do
|
203
203
|
|
204
204
|
desc "main entrypoint for preparing all build tasks. This should invoke all needed tasks"
|
205
|
-
task :all => %w(css handlebars javascript module_info sass
|
205
|
+
task :all => %w(css handlebars javascript module_info sass less combine string_wrap minify string_wrap html strings tests packed)
|
206
206
|
|
207
207
|
desc "executes prerequisites needed before one of the subtasks can be invoked. All subtasks that have this as a prereq"
|
208
208
|
task :setup => %w(manifest:catalog manifest:hide_buildfiles manifest:localize)
|
@@ -283,7 +283,6 @@ namespace :manifest do
|
|
283
283
|
:entry_type => :javascript
|
284
284
|
entry.discover_build_directives!
|
285
285
|
end
|
286
|
-
|
287
286
|
end
|
288
287
|
|
289
288
|
desc "scans for css files, creates a transform and annotates them"
|
@@ -291,26 +290,53 @@ namespace :manifest do
|
|
291
290
|
manifest = env[:manifest]
|
292
291
|
config = env[:target].config
|
293
292
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
end
|
293
|
+
# select all original entries with with ext of css
|
294
|
+
entries = manifest.entries.select do |e|
|
295
|
+
e.original? && ['css', 'scss'].include?(e[:ext])
|
296
|
+
end
|
299
297
|
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
entry
|
310
|
-
|
298
|
+
# add transform & tag with build directives.
|
299
|
+
entries.each do |entry|
|
300
|
+
filename = entry[:filename]
|
301
|
+
|
302
|
+
# We want it to appear as CSS
|
303
|
+
filename.gsub! /\.scss$/, '.css'
|
304
|
+
|
305
|
+
entry = manifest.add_transform entry,
|
306
|
+
:filename => ['source', filename].join('/'),
|
307
|
+
:build_path => File.join(manifest[:build_root], 'source', entry[:filename]),
|
308
|
+
:url => [manifest[:url_root], 'source', entry[:filename]].join("/"),
|
309
|
+
:build_task => 'build:css',
|
310
|
+
:resource => 'stylesheet',
|
311
|
+
:entry_type => :css,
|
312
|
+
:ext => 'css',
|
313
|
+
:from_scss => (entry[:ext] == 'scss') # for testing
|
314
|
+
entry.discover_build_directives!
|
311
315
|
end
|
312
316
|
end
|
313
317
|
|
318
|
+
desc "scans for image files, creates a transform and annotates them"
|
319
|
+
task :images => :setup do |task, env|
|
320
|
+
manifest = env[:manifest]
|
321
|
+
config = env[:target].config
|
322
|
+
|
323
|
+
# select all original entries with with ext of png
|
324
|
+
entries = manifest.entries.select do |e|
|
325
|
+
e.original? && e[:ext] == 'png'
|
326
|
+
end
|
327
|
+
|
328
|
+
# add transform & tag with build directives.
|
329
|
+
entries.each do |entry|
|
330
|
+
entry = manifest.add_transform entry,
|
331
|
+
:filename => ['source', entry[:filename]].join('/'),
|
332
|
+
:build_path => File.join(manifest[:build_root], 'source', entry[:filename]),
|
333
|
+
:url => [manifest[:url_root], 'source', entry[:filename]].join("/"),
|
334
|
+
:build_task => 'build:image',
|
335
|
+
:entry_type => :image
|
336
|
+
end
|
337
|
+
|
338
|
+
end
|
339
|
+
|
314
340
|
desc "scans for Handlebars templates and converts them to JavaScript"
|
315
341
|
task :handlebars => %w(setup) do |task, env|
|
316
342
|
manifest = env[:manifest]
|
@@ -337,18 +363,20 @@ namespace :manifest do
|
|
337
363
|
config = CONFIG
|
338
364
|
|
339
365
|
# Populate module_info for all deferred_modules frameworks.
|
340
|
-
# Add :
|
366
|
+
# Add :debug_required and :test_required depending on
|
341
367
|
# the build mode.
|
342
368
|
debug = config[:load_debug]
|
343
369
|
test = config[:load_tests]
|
344
370
|
|
345
371
|
# find all of the modules required by this target
|
346
372
|
targets = target.modules({ :debug => debug, :test => test, :theme => true })
|
347
|
-
targets.each do |target|
|
348
|
-
target.manifest_for(manifest.variation).build!
|
349
|
-
end
|
350
373
|
|
351
374
|
unless targets.size == 0
|
375
|
+
|
376
|
+
targets.each do |target|
|
377
|
+
target.manifest_for(manifest.variation).build!
|
378
|
+
end
|
379
|
+
|
352
380
|
manifest.add_entry 'module_info.js',
|
353
381
|
:dynamic => true, # required to get correct timestamp for cacheable_url
|
354
382
|
:build_task => 'build:module_info',
|
@@ -366,50 +394,127 @@ namespace :manifest do
|
|
366
394
|
|
367
395
|
task :module_info => :tests # IMPORTANT! to avoid JS including unit tests.
|
368
396
|
|
369
|
-
desc "generates combined entries for
|
370
|
-
task :
|
397
|
+
desc "generates combined entries for CSS"
|
398
|
+
task :chance => %w(setup images javascript module_info css sass less) do |task, env|
|
399
|
+
config = CONFIG
|
400
|
+
manifest = env[:manifest]
|
401
|
+
|
402
|
+
# the image files will be shared between all css_entries-- that is,
|
403
|
+
# all instances of Chance created
|
404
|
+
global_chance_entries = []
|
405
|
+
|
406
|
+
# For each "resource" a separate css entry will be created.
|
407
|
+
css_entries = {}
|
408
|
+
|
409
|
+
manifest.entries.each do |entry|
|
410
|
+
# Chance needs to know about image files so it can embed as data URIs in the
|
411
|
+
# CSS. For this reason, if Chance is enabled, we need to send entries for image
|
412
|
+
# files to the 'build:chance' buildtask.
|
413
|
+
is_chance_file = File.extname(entry[:filename]) === '.png'
|
414
|
+
|
415
|
+
next if entry[:resource].nil? and not is_chance_file
|
416
|
+
|
417
|
+
if is_chance_file
|
418
|
+
global_chance_entries << entry
|
419
|
+
elsif entry[:entry_type] == :css
|
420
|
+
(css_entries[entry[:resource]] ||= []) << entry
|
421
|
+
entry.hide! if config[:combine_stylesheets]
|
422
|
+
end
|
423
|
+
|
424
|
+
end
|
425
|
+
|
426
|
+
chance_entries = []
|
427
|
+
|
428
|
+
# We need a collection of source paths for our mhtml and JS files to
|
429
|
+
# check mtimes against.
|
430
|
+
source_paths = []
|
431
|
+
|
432
|
+
# build combined CSS entry
|
433
|
+
css_entries.each do |resource_name, entries|
|
434
|
+
# Send image files to the build task if Chance is being used
|
435
|
+
entries.concat global_chance_entries
|
436
|
+
|
437
|
+
# Add a composite entry for the combined CSS.
|
438
|
+
# Note that we manually hid the CSS entries above, but, if Chance
|
439
|
+
# is enabled, we need to keep the images visible so they are still
|
440
|
+
# copied into the final product.
|
441
|
+
entry = manifest.add_composite resource_name.ext('css'),
|
442
|
+
:build_task => 'build:chance',
|
443
|
+
:source_entries => entries,
|
444
|
+
:hide_entries => false, # We hid entries manually above
|
445
|
+
:ordered_entries => SC::Helpers::EntrySorter.sort(entries),
|
446
|
+
:entry_type => :css,
|
447
|
+
:combined => true
|
448
|
+
|
449
|
+
chance_entries << entry
|
450
|
+
|
451
|
+
|
452
|
+
# ADD A 2X version
|
453
|
+
# Because the @2x file is not a _real_ composite entry, and as such has
|
454
|
+
# no true source entries (because we don't want to stage them as that
|
455
|
+
# adversely impacts performance), we need to give a set of source paths
|
456
|
+
# for the entry to compare mtimes with to know if it needs to update.
|
457
|
+
entry_source_paths = entries.map {|e| e[:source_path] }
|
458
|
+
|
459
|
+
# Rather than run Chance an extra time for 2x, we create a composite entry
|
460
|
+
# referencing the chance entry as a source
|
461
|
+
manifest.add_entry resource_name + "@2x.css",
|
462
|
+
:variation => manifest.variation,
|
463
|
+
:build_task => 'build:chance_file',
|
464
|
+
:chance_entry => entry,
|
465
|
+
:entry_type => :css,
|
466
|
+
:combined => true,
|
467
|
+
:chance_file => "chance@2x.css",
|
468
|
+
|
469
|
+
# For cache-busting, we must support timestamped urls, but the entry
|
470
|
+
# will be unable to calculate the timestamp for this on its own. So, we
|
471
|
+
# must supply the calculated timestamp.
|
472
|
+
:timestamp => entry.timestamp,
|
473
|
+
|
474
|
+
:source_paths => entry_source_paths
|
475
|
+
|
476
|
+
# We also have a set of all source paths for the chance task. We need
|
477
|
+
# to keep it up-to-date so that the MHTML and JS tasks can compare mtimes
|
478
|
+
# with the entries.
|
479
|
+
source_paths += entry_source_paths
|
480
|
+
end
|
481
|
+
|
482
|
+
manifest.add_entry "__sc_chance.js",
|
483
|
+
:build_task => 'build:chance_file',
|
484
|
+
:chance_entries => chance_entries,
|
485
|
+
:entry_type => :javascript,
|
486
|
+
:resource => "javascript",
|
487
|
+
:chance_file => "chance.js",
|
488
|
+
:timestamp => chance_entries.map {|e| e.timestamp }.max,
|
489
|
+
:source_paths => source_paths
|
490
|
+
|
491
|
+
manifest.add_entry "__sc_chance_mhtml.txt",
|
492
|
+
:build_task => 'build:chance_file',
|
493
|
+
:chance_entries => chance_entries,
|
494
|
+
:entry_type => :mhtml,
|
495
|
+
:chance_file => "chance-mhtml.txt",
|
496
|
+
:timestamp => chance_entries.map {|e| e.timestamp }.max,
|
497
|
+
:source_paths => source_paths
|
498
|
+
|
499
|
+
end
|
500
|
+
|
501
|
+
desc "generates combined entries for javascript"
|
502
|
+
task :combine => %w(setup chance javascript module_info) do |task, env|
|
371
503
|
config = env[:target].config
|
372
504
|
manifest = env[:manifest]
|
373
505
|
config = CONFIG
|
374
506
|
|
375
|
-
chance_types = [
|
376
|
-
'.css',
|
377
|
-
'.jpg',
|
378
|
-
'.png',
|
379
|
-
'.gif'
|
380
|
-
]
|
381
|
-
|
382
|
-
# sort entries...
|
383
|
-
css_entries = []
|
384
507
|
javascript_entries = {}
|
508
|
+
|
385
509
|
manifest.entries.each do |entry|
|
386
|
-
is_chance_file = false
|
387
|
-
if not config[:no_chance] and chance_types.include?(File.extname(entry[:filename]))
|
388
|
-
is_chance_file = true
|
389
|
-
end
|
390
|
-
|
391
510
|
# we can only combine entries with a resource property.
|
392
|
-
next if entry[:resource].nil?
|
511
|
+
next if entry[:resource].nil?
|
393
512
|
|
394
|
-
|
395
|
-
if entry[:entry_type] == :css or (is_chance_file and File.extname(entry[:filename]) == '.css')
|
396
|
-
css_entries << entry
|
397
|
-
entry.hide! if config[:combine_stylesheets]
|
398
|
-
elsif is_chance_file
|
399
|
-
css_entries << entry
|
400
|
-
elsif entry[:entry_type] == :javascript
|
513
|
+
if entry[:entry_type] == :javascript
|
401
514
|
(javascript_entries[entry[:resource]] ||= []) << entry
|
402
515
|
end
|
403
516
|
end
|
404
517
|
|
405
|
-
# build combined CSS entry
|
406
|
-
manifest.add_composite 'stylesheet.css',
|
407
|
-
:build_task => config[:no_chance] ? 'build:combine' : 'build:chance',
|
408
|
-
:source_entries => css_entries,
|
409
|
-
:hide_entries => false, # we hide entries manually above
|
410
|
-
:ordered_entries => SC::Helpers::EntrySorter.sort(css_entries),
|
411
|
-
:entry_type => :css,
|
412
|
-
:combined => true
|
413
518
|
|
414
519
|
# build combined JS entry
|
415
520
|
javascript_entries.each do |resource_name, entries|
|
@@ -424,11 +529,10 @@ namespace :manifest do
|
|
424
529
|
:entry_type => :javascript,
|
425
530
|
:combined => true
|
426
531
|
end
|
427
|
-
|
428
532
|
end
|
429
533
|
|
430
534
|
desc "Wraps the javascript.js file into a string if the target is a prefetched module"
|
431
|
-
task :string_wrap => %w(setup css javascript module_info sass
|
535
|
+
task :string_wrap => %w(setup css javascript module_info sass less combine minify) do |task, env|
|
432
536
|
manifest = env[:manifest]
|
433
537
|
target = env[:target]
|
434
538
|
|
@@ -483,36 +587,39 @@ namespace :manifest do
|
|
483
587
|
target = env[:target]
|
484
588
|
manifest = env[:manifest]
|
485
589
|
|
486
|
-
|
590
|
+
%w(stylesheet stylesheet@2x).each {|resource|
|
487
591
|
|
488
592
|
# Handle CSS version. get all required targets and find their
|
489
593
|
# stylesheet.css. Build packed css from that.
|
490
|
-
targets = target.expand_required_targets
|
594
|
+
targets = target.expand_required_targets + [target]
|
491
595
|
entries = targets.map do |target|
|
492
596
|
m = target.manifest_for(manifest.variation).build!
|
493
597
|
|
494
598
|
# need to find the version that is not minified
|
495
|
-
entry = m.entry_for(
|
599
|
+
entry = m.entry_for(resource + ".css")
|
496
600
|
entry = entry.source_entry while entry && entry.minified?
|
497
601
|
entry
|
498
602
|
end
|
499
603
|
|
500
604
|
entries.compact!
|
501
|
-
manifest.add_composite '
|
605
|
+
manifest.add_composite resource + '-packed.css',
|
502
606
|
:build_task => 'build:combine',
|
503
607
|
:source_entries => entries,
|
504
608
|
:hide_entries => false,
|
505
609
|
:entry_type => :css,
|
506
610
|
:combined => true,
|
507
|
-
:ordered_entries => entries, #
|
611
|
+
:ordered_entries => entries, # ordered by load order
|
508
612
|
:targets => targets,
|
509
613
|
:packed => true
|
510
614
|
|
615
|
+
}
|
616
|
+
|
511
617
|
end
|
618
|
+
|
512
619
|
task :minify => :packed # IMPORTANT: don't want minified version
|
513
620
|
|
514
|
-
#Create builder tasks for sass
|
515
|
-
[:sass, :
|
621
|
+
#Create builder tasks for sass and less in a DRY way
|
622
|
+
[:sass, :less].each do |csscompiler|
|
516
623
|
desc sprintf("create a builder task for all %s files to create css files", csscompiler.to_s)
|
517
624
|
task csscompiler => :setup do |task, env|
|
518
625
|
manifest = env[:manifest]
|
@@ -575,7 +682,6 @@ namespace :manifest do
|
|
575
682
|
end
|
576
683
|
(entries_by_resource[entry[:resource]] ||= []) << entry
|
577
684
|
end
|
578
|
-
|
579
685
|
end
|
580
686
|
|
581
687
|
# even if no resource was found for the index.html, add one anyway if
|
@@ -629,12 +735,11 @@ namespace :manifest do
|
|
629
735
|
is_hidden = true if (rep_cnt>=2) && !is_pref_lang
|
630
736
|
end
|
631
737
|
end
|
632
|
-
|
633
738
|
end
|
634
739
|
end
|
635
740
|
|
636
741
|
desc "creates transform entries for all css and Js entries to minify them if needed"
|
637
|
-
task :minify => %w(setup javascript module_info css combine sass
|
742
|
+
task :minify => %w(setup javascript module_info css combine sass less) do |task, env|
|
638
743
|
manifest = env[:manifest]
|
639
744
|
config = CONFIG
|
640
745
|
|
@@ -664,9 +769,7 @@ namespace :manifest do
|
|
664
769
|
:packed => entry.packed? # carry forward
|
665
770
|
end
|
666
771
|
end
|
667
|
-
|
668
772
|
end
|
669
|
-
|
670
773
|
end
|
671
774
|
|
672
775
|
desc "adds a loc strings entry that generates a yaml file server-side functions can use"
|
@@ -691,9 +794,5 @@ namespace :manifest do
|
|
691
794
|
desc "..."
|
692
795
|
task :image => :setup do
|
693
796
|
end
|
694
|
-
|
695
|
-
|
696
797
|
end
|
697
|
-
|
698
|
-
|
699
798
|
end
|
@@ -81,13 +81,11 @@ config :standard_theme,
|
|
81
81
|
|
82
82
|
config :ace,
|
83
83
|
:required => :empty_theme,
|
84
|
-
:theme_name =>
|
84
|
+
:theme_name => nil,
|
85
85
|
:test_required => ['sproutcore/testing'],
|
86
86
|
:debug_required => ['sproutcore/debug'],
|
87
87
|
:css_theme => 'ace'
|
88
88
|
|
89
|
-
# CONFIGURE APPS
|
90
|
-
|
91
89
|
# CONFIGURE APPS
|
92
90
|
config :core_tools, :required => [:desktop, :datastore, :animation, :forms]
|
93
91
|
|
@@ -100,11 +98,11 @@ config :core_tools, :required => [:desktop, :datastore, :animation, :forms]
|
|
100
98
|
:required => [:desktop, :datastore, :core_tools],
|
101
99
|
:theme => :ace,
|
102
100
|
:html5_history => true
|
103
|
-
|
101
|
+
|
104
102
|
# mode :debug do
|
105
103
|
# config app_target, :combine_javascript => false
|
106
104
|
# end
|
107
|
-
|
105
|
+
|
108
106
|
end
|
109
107
|
|
110
108
|
config :test_controls, :css_theme => 'ace.test-controls'
|