breezy 0.5.6 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6c761721a71765c3ed4b56408ee45634044b8227
4
- data.tar.gz: 4c22efd905a87bc5725fde7aa6aa04073ed4d770
3
+ metadata.gz: 180ec22718cca06ce353a6b67d975c7f7f7a3633
4
+ data.tar.gz: 7650ea18f750cb26180a388f0ff151d552282def
5
5
  SHA512:
6
- metadata.gz: a81fa42b4230d6116136d874dd75b347a81b4f84063c20c8aa16c42d153a22db8102a946b7c27a72854b6ac3b3f6b1bbac79e40738609838757ab66b9fb9bd9f
7
- data.tar.gz: 33cddac08eed8376c3e04ee7c70bcbeeafc108b1bea5674d1ba3bb5734862cf7be8ccc4144f2a83752caeff85ff51806061766180cfa20a22a5cf3f7820a6e26
6
+ metadata.gz: '08465297490eb25c96f3c88ae2388eb70e49e1528a4f40ed2053a3fcdbc26767ef4282dd9e5cbcdd2214a21695acf50ecaffa312894e9875d371bcf80a7d94d0'
7
+ data.tar.gz: cb3cb587d99b46ae64038439dd87d2642d137eec7f80326d886c0e57cc0c97e4b0045275d8f13bec2b7fd24b71c81fd77f5188612bd95d0b533c319537e3e8b6
data/lib/breezy/render.rb CHANGED
@@ -1,11 +1,5 @@
1
1
  module Breezy
2
2
  module Render
3
- DEFAULT_ACTIONS_FOR_VERBS = {
4
- :post => 'new',
5
- :patch => 'edit',
6
- :put => 'edit'
7
- }
8
-
9
3
  def default_render(*args)
10
4
  if @_use_breezy_html
11
5
  render(*args)
@@ -27,11 +21,6 @@ module Breezy
27
21
  end
28
22
 
29
23
  if breezy
30
- action = render_options[action] || DEFAULT_ACTIONS_FOR_VERBS[request.request_method_symbol] || action_name
31
- view_parts = _prefixes.reverse.push(action)[1..-1]
32
- view_name = view_parts.map(&:camelize).join.gsub('::', '')
33
-
34
- breezy[:screen] ||= view_name
35
24
  render_options[:locals] ||= {}
36
25
  render_options[:locals][:breezy] = breezy
37
26
  end
@@ -42,17 +42,14 @@ module Rails
42
42
  def append_mapping(action)
43
43
  app_js = 'app/javascript/packs/application.js'
44
44
 
45
- base_parts = class_path + [file_name]
46
- destination = File.join("views", base_parts)
47
-
48
- @js_filename = [plural_table_name, action].map(&:camelcase).join
45
+ component_name = [plural_table_name, action].map(&:camelcase).join
49
46
 
50
47
  inject_into_file app_js, after: "from '@jho406/breezy'" do
51
- "\nimport #{@js_filename} from 'views/#{controller_file_path}/#{action}'"
48
+ "\nimport #{component_name} from 'views/#{controller_file_path}/#{action}'"
52
49
  end
53
50
 
54
- inject_into_file app_js, after: 'const mapping = {' do
55
- "\n #{@js_filename},"
51
+ inject_into_file app_js, after: 'const screenToComponentMapping = {' do
52
+ "\n '#{[controller_file_path, action].join('/')}': #{component_name},"
56
53
  end
57
54
  end
58
55
 
@@ -39,7 +39,7 @@ class <%= controller_class_name %>Controller < ApplicationController
39
39
  <%- end -%>
40
40
  else
41
41
  response.set_header("content-location", new_<%= singular_table_name %>_path)
42
- render :new, breezy: {screen: '<%= plural_table_name.camelize %>New'}
42
+ render :new
43
43
  end
44
44
  end
45
45
 
@@ -53,7 +53,7 @@ class <%= controller_class_name %>Controller < ApplicationController
53
53
  <%- end -%>
54
54
  else
55
55
  response.set_header("content-location", edit_<%= singular_table_name %>_path(@<%= singular_table_name %>))
56
- render :edit, breezy: {screen: '<%= plural_table_name.camelize %>Edit'}
56
+ render :edit
57
57
  end
58
58
  end
59
59
 
@@ -1,15 +1,14 @@
1
1
  import React from 'react'
2
- import {combineReducers, createStore, applyMiddleware} from 'redux'
2
+ import {combineReducers, createStore, applyMiddleware, compose} from 'redux'
3
3
  import thunk from 'redux-thunk'
4
4
  import { Provider } from 'react-redux'
5
5
  import { render } from 'react-dom'
6
6
  import createHistory from 'history/createBrowserHistory'
7
7
  import Breezy from '@jho406/breezy'
8
8
 
9
- // This mapping can be auto populate through
10
- // Breezy generators, for example:
11
- // Run `rails g breezy:view Post index`
12
- const mapping = {
9
+ // Mapping between your props template to Component
10
+ // e.g {'posts/new': PostNew}
11
+ const screenToComponentMapping = {
13
12
  }
14
13
 
15
14
  const history = createHistory({})
@@ -25,12 +24,15 @@ const {reducer, initialState, Nav, connect} = Breezy.start({
25
24
  history
26
25
  })
27
26
 
27
+
28
+ const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose
29
+
28
30
  const store = createStore(
29
31
  combineReducers({
30
32
  ...reducer,
31
33
  }),
32
34
  initialState,
33
- applyMiddleware(thunk)
35
+ composeEnhancers(applyMiddleware(thunk))
34
36
  )
35
37
 
36
38
  connect(store)
@@ -38,11 +40,11 @@ connect(store)
38
40
  class App extends React.Component {
39
41
  render() {
40
42
  return <Provider store={store}>
41
- <Nav mapping={mapping}/>
43
+ <Nav mapping={this.props.mapping}/>
42
44
  </Provider>
43
45
  }
44
46
  }
45
47
 
46
48
  document.addEventListener("DOMContentLoaded", function() {
47
- render(<App mapping={mapping}/>, document.getElementById('app'))
49
+ render(<App mapping={screenToComponentMapping}/>, document.getElementById('app'))
48
50
  })
data/test/render_test.rb CHANGED
@@ -60,12 +60,12 @@ class RenderTest < ActionController::TestCase
60
60
 
61
61
  test "simple render with breezy" do
62
62
  get :simple_render_with_breezy
63
- assert_breezy_html({author: "john smith"})
63
+ assert_breezy_html({author: "john smith"}, screen: :action)
64
64
  end
65
65
 
66
66
  test "implied render with breezy" do
67
67
  get :implied_render_with_breezy
68
- assert_breezy_html({author: "john smith"})
68
+ assert_breezy_html({author: "john smith"}, screen: :implied_render_with_breezy)
69
69
  end
70
70
 
71
71
  test "simple render with breezy via get js" do
@@ -99,16 +99,16 @@ class RenderTest < ActionController::TestCase
99
99
 
100
100
  private
101
101
 
102
- def assert_breezy_html(content)
102
+ def assert_breezy_html(content, opts={})
103
103
  assert_response 200
104
- view = @response.request.params['action'].camelcase
105
- assert_equal "<html><head><script type='text/javascript'>Breezy.replace((function(){var joints={};var cache={};var defers=[];return ({\"data\":#{content.to_json},\"screen\":\"Render#{view}\",\"csrf_token\":\"secret\",\"assets\":[\"/app.js\"],\"joints\":joints,\"defers\":defers});})());</script></head><body></body></html>", @response.body
104
+
105
+ assert_equal "<html><head><script type='text/javascript'>Breezy.replace((function(){var joints={};var cache={};var defers=[];return ({\"data\":#{content.to_json},\"screen\":\"render/#{opts[:screen].to_s}\",\"csrf_token\":\"secret\",\"assets\":[\"/app.js\"],\"joints\":joints,\"defers\":defers});})());</script></head><body></body></html>", @response.body
106
106
  assert_equal 'text/html', @response.content_type
107
107
  end
108
108
 
109
109
  def assert_breezy_js(content)
110
110
  assert_response 200
111
- assert_equal '(function(){var joints={};var cache={};var defers=[];return ({"data":' + content.to_json + ',"screen":"RenderSimpleRenderWithBreezy","csrf_token":"secret","assets":["/app.js"],"joints":joints,"defers":defers});})()', @response.body
111
+ assert_equal '(function(){var joints={};var cache={};var defers=[];return ({"data":' + content.to_json + ',"screen":"render/action","csrf_token":"secret","assets":["/app.js"],"joints":joints,"defers":defers});})()', @response.body
112
112
  assert_equal 'text/javascript', @response.content_type
113
113
  end
114
114
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: breezy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johny Ho
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-03 00:00:00.000000000 Z
11
+ date: 2018-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.6
33
+ version: 0.6.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.5.6
40
+ version: 0.6.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: webpacker
43
43
  requirement: !ruby/object:Gem::Requirement