breezy 0.6.0 → 0.7.0

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.
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