joosy 1.0.0.RC3 → 1.0.0.RC4

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.
@@ -101,12 +101,17 @@ class Joosy.Layout extends Joosy.Module
101
101
  # $.get '/rumbas', (@data) => complete()
102
102
  #
103
103
  @fetch: (callback) ->
104
- @::__fetch = callback
104
+ @::__fetch = (complete) ->
105
+ @data = {}
106
+ callback.call this, =>
107
+ @dataFetched = true
108
+ complete()
105
109
 
106
110
  #
107
- # Defaults to `false` to ease beforePaint state check.
111
+ # Prefetched page data.
108
112
  #
109
113
  data: false
114
+ dataFetched: false
110
115
 
111
116
  #
112
117
  # @param [Hash] params List of route params
@@ -85,14 +85,20 @@ Joosy.Modules.Renderer =
85
85
  stack.template = template
86
86
  stack.locals = locals
87
87
 
88
- isResource = Joosy.Module.hasAncestor locals.constructor, Joosy.Resource.Generic
89
- isCollection = Joosy.Module.hasAncestor locals.constructor, Joosy.Resource.Collection
88
+ # If template was given as a lambda, parameters should
89
+ # be passed as a context, not as a argument
90
+ assignContext = false
91
+
92
+ isResource = Joosy.Module.hasAncestor locals.constructor, Joosy.Resource.Generic
93
+ isCollection = Joosy.Module.hasAncestor locals.constructor, Joosy.Resource.Collection
90
94
 
91
95
  if Object.isString template
92
96
  if @__renderSection?
93
97
  template = Joosy.Application.templater.resolveTemplate @__renderSection(), template, this
94
98
 
95
99
  template = Joosy.Application.templater.buildView template
100
+ else if Object.isFunction template
101
+ assignContext = true
96
102
  else if !Object.isFunction template
97
103
  throw new Error "#{Joosy.Module.__className @}> template (maybe @view) does not look like a string or lambda"
98
104
 
@@ -104,6 +110,8 @@ Joosy.Modules.Renderer =
104
110
  @render template, locals, stack
105
111
  renderDynamic: (template, locals={}) =>
106
112
  @renderDynamic template, locals, stack
113
+ renderInline: (locals={}, template) =>
114
+ @renderDynamic template, locals, stack
107
115
 
108
116
  context = =>
109
117
  data = {}
@@ -117,7 +125,11 @@ Joosy.Modules.Renderer =
117
125
  Joosy.Module.merge data, renderers
118
126
  data
119
127
 
120
- result = -> template(context())
128
+ result = ->
129
+ if assignContext
130
+ template.call(context())
131
+ else
132
+ template(context())
121
133
 
122
134
  if dynamic
123
135
  morph = Metamorph result()
@@ -52,6 +52,7 @@ class Joosy.Page extends Joosy.Module
52
52
  # Prefetched page data.
53
53
  #
54
54
  data: false
55
+ dataFetched: false
55
56
 
56
57
  #
57
58
  # Sets layout for current page
@@ -133,7 +134,9 @@ class Joosy.Page extends Joosy.Module
133
134
  @fetch: (callback) ->
134
135
  @::__fetch = (complete) ->
135
136
  @data = {}
136
- callback.call(this, complete)
137
+ callback.call this, =>
138
+ @dataFetched = true
139
+ complete()
137
140
 
138
141
  #
139
142
  # Sets the several separate methods that will fetch data in parallel.
@@ -114,6 +114,9 @@ class Joosy.Resource.Collection extends Joosy.Module
114
114
  #
115
115
  find: (description) ->
116
116
  @data.find description
117
+
118
+ sortBy: (params...) ->
119
+ @data.sortBy params...
117
120
 
118
121
  #
119
122
  # Gets resource by id
@@ -72,7 +72,8 @@ class Joosy.Resource.Generic extends Joosy.Module
72
72
  class clone extends this
73
73
 
74
74
  if entity instanceof Joosy.Resource.Generic
75
- clone.__source = entity.memberPath()
75
+ clone.__source = entity.memberPath()
76
+ clone.__source += '/' + @::__entityName.pluralize() if @::__entityName
76
77
  else
77
78
  clone.__source = entity
78
79
 
@@ -1,5 +1,5 @@
1
1
  module Joosy
2
2
  module Rails
3
- VERSION = "1.0.0.RC3"
3
+ VERSION = "1.0.0.RC4"
4
4
  end
5
5
  end
@@ -8,10 +8,8 @@ module Joosy
8
8
  def create_files
9
9
  super
10
10
 
11
- empty_directory "#{app_path}/layouts"
12
11
  template "app/layouts/template.js.coffee", "#{app_path}/layouts/#{file_name}.js.coffee"
13
12
 
14
- empty_directory "#{app_path}/templates/layouts"
15
13
  create_file("#{app_path}/templates/layouts/#{file_name}.jst.#{options[:template_kind]}")
16
14
  end
17
15
 
@@ -8,10 +8,8 @@ module Joosy
8
8
  def create_files
9
9
  super
10
10
 
11
- empty_directory "#{app_path}/pages/#{namespace_path}"
12
11
  template "app/pages/template.js.coffee", "#{app_path}/pages/#{namespace_path}/#{file_name}.js.coffee"
13
12
 
14
- empty_directory "#{app_path}/templates/pages/#{namespace_path}"
15
13
  create_file "#{app_path}/templates/pages/#{namespace_path}/#{file_name}.jst.#{options[:template_kind]}"
16
14
  end
17
15
 
@@ -18,10 +18,8 @@ HELP
18
18
 
19
19
  template "app_preloader.js.coffee.erb", "app/assets/javascripts/#{file_name}_preloader.js.coffee.erb"
20
20
 
21
- empty_directory "app/controllers"
22
21
  template "app_controller.rb", "app/controllers/#{file_name}_controller.rb"
23
22
 
24
- empty_directory "app/views/layouts"
25
23
  template "preload.html.#{options[:template_engine]}",
26
24
  "app/views/layouts/#{file_name}.html.#{options[:template_engine]}"
27
25
 
@@ -8,7 +8,6 @@ module Joosy
8
8
  def create_files
9
9
  super
10
10
 
11
- empty_directory "#{app_path}/resources"
12
11
  template "app/resources/template.js.coffee", "#{app_path}/resources/#{file_name}.js.coffee"
13
12
  end
14
13
 
@@ -1,2 +1,2 @@
1
- #page{:style => 'font-family: "Lucida Grande", "Verdana"; text-align: center'}
1
+ #page{:style => 'text-align: center'}
2
2
  .content{:id => @yield()}
@@ -8,10 +8,8 @@ module Joosy
8
8
  def create_files
9
9
  super
10
10
 
11
- empty_directory "#{app_path}/widgets"
12
11
  template "app/widgets/template.js.coffee", "#{app_path}/widgets/#{file_name}.js.coffee"
13
12
 
14
- empty_directory "#{app_path}/templates/widgets"
15
13
  create_file "#{app_path}/templates/widgets/#{file_name}.jst.#{options[:template_kind]}"
16
14
  end
17
15
 
@@ -24,8 +24,7 @@ describe "Joosy.Modules.Renderer", ->
24
24
 
25
25
  it "updates contents, but only while it is bound to DOM", ->
26
26
  @TestContainer.view (locals) ->
27
- template = (locals) ->
28
- "#{locals.object.value}"
27
+ template = -> @object.value
29
28
 
30
29
  @renderDynamic(template, locals)
31
30
 
@@ -57,8 +56,7 @@ describe "Joosy.Modules.Renderer", ->
57
56
  data = Joosy.Resource.Generic.build zombie: 'rock'
58
57
 
59
58
  @TestContainer.view (locals) ->
60
- template = (locals) ->
61
- "#{locals.zombie}"
59
+ template = -> @zombie
62
60
 
63
61
  @renderDynamic(template, locals)
64
62
 
@@ -92,8 +90,7 @@ describe "Joosy.Modules.Renderer", ->
92
90
  ]
93
91
 
94
92
  @TestContainer.view (locals) ->
95
- template = (locals) ->
96
- "#{locals.data[1] 'zombie'}"
93
+ template = -> @data[1] 'zombie'
97
94
 
98
95
  @renderDynamic(template, locals)
99
96
 
@@ -118,8 +115,7 @@ describe "Joosy.Modules.Renderer", ->
118
115
 
119
116
  it "debounces morpher updates", ->
120
117
  @TestContainer.view (locals) ->
121
- template = (locals) ->
122
- "#{locals.object.value}"
118
+ template = -> @object.value
123
119
 
124
120
  @renderDynamic(template, locals)
125
121
 
@@ -155,8 +151,7 @@ describe "Joosy.Modules.Renderer", ->
155
151
  @TestContainer.helpers "Hoge"
156
152
 
157
153
  @TestContainer.view (locals) ->
158
- template = (locals) ->
159
- "#{locals.multiplier(10)}"
154
+ template = (locals) -> @multiplier(10)
160
155
 
161
156
  @render(template, locals)
162
157
 
@@ -172,8 +167,7 @@ describe "Joosy.Modules.Renderer", ->
172
167
  value * 6
173
168
 
174
169
  @TestContainer.view (locals) ->
175
- template = (locals) ->
176
- "#{locals.globalMultiplier(10)}"
170
+ template = (locals) -> @globalMultiplier(10)
177
171
 
178
172
  @render(template, locals)
179
173
 
@@ -192,7 +186,7 @@ describe "Joosy.Modules.Renderer", ->
192
186
  callback = sinon.spy()
193
187
 
194
188
  Box.view (locals) ->
195
- template = (locals) -> locals.onRefresh -> callback()
189
+ template = -> @onRefresh -> callback()
196
190
  @render(template, locals)
197
191
 
198
192
  box = new Box
@@ -45,11 +45,17 @@ describe "Joosy.Resource.Generic", ->
45
45
 
46
46
  it "handles @at", ->
47
47
  class Fluffy extends Joosy.Resource.Generic
48
+ @entity 'fluffy'
48
49
 
49
50
  clone = Fluffy.at('rumbas!')
50
51
 
51
52
  expect(clone.__source).toEqual 'rumbas!'
52
53
  expect(Joosy.Module.hasAncestor clone, Fluffy).toBeTruthy()
54
+
55
+ clone = Fluffy.at Test.build(1)
56
+
57
+ expect(clone.__source).toEqual '/tests/1/fluffies'
58
+ expect(Joosy.Module.hasAncestor clone, Fluffy).toBeTruthy()
53
59
  # clone won't be instanceof Fluffy in IE
54
60
  #expect(clone.build({}) instanceof Fluffy).toBeTruthy()
55
61
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joosy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.RC3
4
+ version: 1.0.0.RC4
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -12,11 +12,11 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-06-09 00:00:00.000000000 Z
15
+ date: 2012-06-19 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
19
- requirement: &70260746932080 !ruby/object:Gem::Requirement
19
+ requirement: &70267714575100 !ruby/object:Gem::Requirement
20
20
  none: false
21
21
  requirements:
22
22
  - - ! '>='
@@ -24,10 +24,10 @@ dependencies:
24
24
  version: 3.1.0
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *70260746932080
27
+ version_requirements: *70267714575100
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: coffee-rails
30
- requirement: &70260746931660 !ruby/object:Gem::Requirement
30
+ requirement: &70267714574680 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
@@ -35,10 +35,10 @@ dependencies:
35
35
  version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
- version_requirements: *70260746931660
38
+ version_requirements: *70267714574680
39
39
  - !ruby/object:Gem::Dependency
40
40
  name: jquery-rails
41
- requirement: &70260746931200 !ruby/object:Gem::Requirement
41
+ requirement: &70267714574220 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ! '>='
@@ -46,10 +46,10 @@ dependencies:
46
46
  version: '0'
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *70260746931200
49
+ version_requirements: *70267714574220
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: haml_coffee_assets
52
- requirement: &70260746930780 !ruby/object:Gem::Requirement
52
+ requirement: &70267714609360 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ! '>='
@@ -57,10 +57,10 @@ dependencies:
57
57
  version: '0'
58
58
  type: :runtime
59
59
  prerelease: false
60
- version_requirements: *70260746930780
60
+ version_requirements: *70267714609360
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: i18n-js
63
- requirement: &70260746930360 !ruby/object:Gem::Requirement
63
+ requirement: &70267714608940 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ! '>='
@@ -68,10 +68,10 @@ dependencies:
68
68
  version: '0'
69
69
  type: :runtime
70
70
  prerelease: false
71
- version_requirements: *70260746930360
71
+ version_requirements: *70267714608940
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: guard
74
- requirement: &70260746929940 !ruby/object:Gem::Requirement
74
+ requirement: &70267714608520 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ! '>='
@@ -79,10 +79,10 @@ dependencies:
79
79
  version: '0'
80
80
  type: :development
81
81
  prerelease: false
82
- version_requirements: *70260746929940
82
+ version_requirements: *70267714608520
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-coffeescript
85
- requirement: &70260746929520 !ruby/object:Gem::Requirement
85
+ requirement: &70267714608100 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ! '>='
@@ -90,10 +90,10 @@ dependencies:
90
90
  version: '0'
91
91
  type: :development
92
92
  prerelease: false
93
- version_requirements: *70260746929520
93
+ version_requirements: *70267714608100
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: guard-sprockets
96
- requirement: &70260746929100 !ruby/object:Gem::Requirement
96
+ requirement: &70267714607680 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ! '>='
@@ -101,10 +101,10 @@ dependencies:
101
101
  version: '0'
102
102
  type: :development
103
103
  prerelease: false
104
- version_requirements: *70260746929100
104
+ version_requirements: *70267714607680
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: jasmine
107
- requirement: &70260746928680 !ruby/object:Gem::Requirement
107
+ requirement: &70267714607260 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
110
  - - ! '>='
@@ -112,7 +112,7 @@ dependencies:
112
112
  version: '0'
113
113
  type: :development
114
114
  prerelease: false
115
- version_requirements: *70260746928680
115
+ version_requirements: *70267714607260
116
116
  description: A gem wrapper to include Joosy via the asset pipeline.
117
117
  email: boris@roundlake.ru
118
118
  executables: []