breezy 0.6.0 → 0.7.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: 180ec22718cca06ce353a6b67d975c7f7f7a3633
4
- data.tar.gz: 7650ea18f750cb26180a388f0ff151d552282def
3
+ metadata.gz: 771f9d31bef6c944ac17451b327c874eeb0d3b84
4
+ data.tar.gz: 6d3b19c6baa857e945254e11fc21b9352f78310d
5
5
  SHA512:
6
- metadata.gz: '08465297490eb25c96f3c88ae2388eb70e49e1528a4f40ed2053a3fcdbc26767ef4282dd9e5cbcdd2214a21695acf50ecaffa312894e9875d371bcf80a7d94d0'
7
- data.tar.gz: cb3cb587d99b46ae64038439dd87d2642d137eec7f80326d886c0e57cc0c97e4b0045275d8f13bec2b7fd24b71c81fd77f5188612bd95d0b533c319537e3e8b6
6
+ metadata.gz: 3e64b71d987909c4493fc0d71aba31c7229e149f7dd7d75d56ab49b2b3d87de1be87666ab63ec037fba02fe8292b2d5b700c7a53a1c1a352d4bcd99231058ee2
7
+ data.tar.gz: 53cfe54342341a4964ae02dc45c4d440e561a09a3c58dcc329797f1c6f2a2f8e0411e5fe66b49e5c25ad3c71bc3c8ee94de32a7879c4afe3dbe1f60418447c4c
data/lib/breezy.rb CHANGED
@@ -20,10 +20,8 @@ module Breezy
20
20
  end
21
21
 
22
22
  if base.respond_to?(:helper_method)
23
- base.helper_method :breezy_tag
24
- base.helper_method :breezy_silient?
25
23
  base.helper_method :breezy_snippet
26
- base.helper_method :use_breezy_html
24
+ base.helper_method :use_breezy
27
25
  base.helper_method :breezy_filter
28
26
  end
29
27
  end
@@ -1,24 +1,14 @@
1
1
  module Breezy
2
2
  module Helpers
3
- def breezy_tag
4
- if defined?(@breezy) && @breezy
5
- "<script type='text/javascript'>Breezy.replace(#{@breezy});</script>".html_safe
6
- end
7
- end
8
-
9
3
  def breezy_snippet
10
- if defined?(@breezy) && @breezy
11
- snippet = @breezy.gsub(/\;$/, '')
4
+ if defined?(@_breezy_snippet) && @_breezy_snippet
5
+ snippet = @_breezy_snippet.gsub(/\;$/, '')
12
6
  "#{snippet};".html_safe
13
7
  end
14
8
  end
15
9
 
16
- def use_breezy_html
17
- @_use_breezy_html = true
18
- end
19
-
20
- def breezy_silient?
21
- !!request.headers["X-SILENT"]
10
+ def use_breezy
11
+ @_use_breezy = true
22
12
  end
23
13
 
24
14
  def breezy_filter
data/lib/breezy/render.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Breezy
2
2
  module Render
3
3
  def default_render(*args)
4
- if @_use_breezy_html
4
+ if @_use_breezy
5
5
  render(*args)
6
6
  else
7
7
  super
@@ -9,28 +9,26 @@ module Breezy
9
9
  end
10
10
 
11
11
  def render(*args, &block)
12
- render_options = args.extract_options!
13
- breezy = render_options.delete(:breezy)
14
-
15
- if breezy == true
16
- breezy = {}
12
+ if !@_use_breezy
13
+ return super
17
14
  end
18
15
 
19
- if !breezy && @_use_breezy_html
16
+ render_options = args.extract_options!
17
+ breezy_options = render_options.delete(:breezy)
18
+
19
+ if !breezy_options
20
20
  breezy = {}
21
21
  end
22
22
 
23
- if breezy
24
- render_options[:locals] ||= {}
25
- render_options[:locals][:breezy] = breezy
26
- end
23
+ render_options[:locals] ||= {}
24
+ render_options[:locals][:breezy] = breezy
27
25
 
28
- if @_use_breezy_html && request.format == :html
29
- original_formats = self.formats
26
+ if request.format == :html
27
+ original_formats = self.formats
28
+ @_breezy_snippet = render_to_string(*args, render_options.merge(formats: [:js]))
29
+ self.formats = original_formats
30
30
 
31
- @breezy = render_to_string(*args, render_options.merge(formats: [:js]))
32
- self.formats = original_formats
33
- render_options.reverse_merge!(formats: original_formats, template: 'breezy/response')
31
+ render_options.reverse_merge!(formats: original_formats, template: 'breezy/response')
34
32
  end
35
33
 
36
34
  super(*args, render_options, &block)
@@ -19,15 +19,6 @@ module Breezy
19
19
 
20
20
  if request.xhr? && request.headers["X-BREEZY-REQUEST"]
21
21
  self.status = 200
22
-
23
- if params['_bz'] && !url.include?('_bz')
24
- parsed_url = URI.parse(url)
25
- qry_with_bz = URI.decode_www_form(String(parsed_url.query)) << ["_bz", params['_bz']]
26
- parsed_url.query = URI.encode_www_form(qry_with_bz)
27
-
28
- url = parsed_url.to_s
29
- end
30
-
31
22
  response.headers["X-BREEZY-LOCATION"] = url
32
23
  end
33
24
 
@@ -5,9 +5,9 @@ require_dependency "<%= namespaced_path %>/application_controller"
5
5
  <% module_namespacing do -%>
6
6
  class <%= controller_class_name %>Controller < ApplicationController
7
7
  before_action :set_<%= singular_table_name %>, only: [:show, :edit, :update, :destroy]
8
- # `use_breezy_html` returns a blank template, allowing for JS to take over
8
+ # `use_breezy` enables breezy functionality
9
9
  # on application.html.erb
10
- before_action :use_breezy_html
10
+ before_action :use_breezy
11
11
 
12
12
  # GET <%= route_url %>
13
13
  def index
data/lib/install/web.rb CHANGED
@@ -85,8 +85,7 @@ say "Adding required member methods to ApplicationRecord"
85
85
  add_member_methods
86
86
 
87
87
  say "Installing React, Redux, and Breezy"
88
- run "yarn add react-redux redux react react-dom babel-preset-react prop-types formik @jho406/breezy --save"
89
- run "yarn add babel-plugin-module-resolver --save-dev"
88
+ run "yarn add babel-plugin-module-resolver babel-preset-react formik history prop-types react-redux redux-thunk redux react react-dom @jho406/breezy --save"
90
89
 
91
90
  say "Updating webpack paths to include .jsx file extension"
92
91
  insert_into_file Webpacker.config.config_path, " - .jsx\n", after: /extensions:\n/
data/test/breezy_test.rb CHANGED
@@ -2,7 +2,7 @@ require 'test_helper'
2
2
 
3
3
  class BreezyController < TestController
4
4
  before_action do
5
- @_use_breezy_html = false
5
+ @_use_breezy = false
6
6
  end
7
7
 
8
8
  def simple_action
data/test/render_test.rb CHANGED
@@ -8,16 +8,19 @@ class RenderController < TestController
8
8
  'render/action.html.erb' => 'john smith',
9
9
  'render/implied_render_with_breezy.js.breezy' => 'json.author "john smith"',
10
10
  'render/implied_render_with_breezy.html.erb' => 'john smith',
11
- 'layouts/application.html.erb' => "<html><head><%=breezy_tag%></head><body><%=yield%></body></html>"
11
+ 'layouts/application.html.erb' => <<~HTML
12
+ <html>
13
+ <head>
14
+ <script><%= breezy_snippet %></script>
15
+ </head>
16
+ <body><%=yield%></body>
17
+ </html>
18
+ HTML
12
19
  ))
13
20
 
14
21
  layout 'application'
15
22
 
16
- before_action do
17
- @_use_breezy_html = false
18
- end
19
-
20
- before_action :use_breezy_html, only: [:simple_render_with_breezy, :implied_render_with_breezy]
23
+ before_action :use_breezy, only: [:simple_render_with_breezy, :implied_render_with_breezy]
21
24
 
22
25
  def render_action
23
26
  render :action
@@ -31,7 +34,7 @@ class RenderController < TestController
31
34
  end
32
35
 
33
36
  def render_action_with_breezy_false
34
- render :action, breezy: false
37
+ render :action
35
38
  end
36
39
 
37
40
  def form_authenticity_token
@@ -60,12 +63,12 @@ class RenderTest < ActionController::TestCase
60
63
 
61
64
  test "simple render with breezy" do
62
65
  get :simple_render_with_breezy
63
- assert_breezy_html({author: "john smith"}, screen: :action)
66
+ assert_breezy_html({author: "john smith"}, screen: 'render/action')
64
67
  end
65
68
 
66
69
  test "implied render with breezy" do
67
70
  get :implied_render_with_breezy
68
- assert_breezy_html({author: "john smith"}, screen: :implied_render_with_breezy)
71
+ assert_breezy_html({author: "john smith"}, screen: 'render/implied_render_with_breezy')
69
72
  end
70
73
 
71
74
  test "simple render with breezy via get js" do
@@ -102,7 +105,16 @@ class RenderTest < ActionController::TestCase
102
105
  def assert_breezy_html(content, opts={})
103
106
  assert_response 200
104
107
 
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
108
+ rendered = <<~HTML
109
+ <html>
110
+ <head>
111
+ <script>(function(){var joints={};var cache={};var defers=[];return ({"data":#{content.to_json},"screen":"#{opts[:screen]}","csrf_token":"secret","assets":["/app.js"],"joints":joints,"defers":defers});})();</script>
112
+ </head>
113
+ <body></body>
114
+ </html>
115
+ HTML
116
+
117
+ assert_equal rendered, @response.body
106
118
  assert_equal 'text/html', @response.content_type
107
119
  end
108
120
 
@@ -120,7 +132,17 @@ class RenderTest < ActionController::TestCase
120
132
 
121
133
  def assert_normal_render(content)
122
134
  assert_response 200
123
- assert_equal "<html><head></head><body>#{content}</body></html>", @response.body
135
+
136
+ rendered = <<~HTML
137
+ <html>
138
+ <head>
139
+ <script></script>
140
+ </head>
141
+ <body>#{content}</body>
142
+ </html>
143
+ HTML
144
+
145
+ assert_equal rendered, @response.body
124
146
  assert_equal 'text/html', @response.content_type
125
147
  end
126
148
  end
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.6.0
4
+ version: 0.7.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-05 00:00:00.000000000 Z
11
+ date: 2018-10-12 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.6.0
33
+ version: 0.7.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.6.0
40
+ version: 0.7.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: webpacker
43
43
  requirement: !ruby/object:Gem::Requirement