breezy_template 0.4.1 → 0.5.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: 9c2b857cf1d23307564ac5087d3326f0aded20ff
4
- data.tar.gz: b2f0dfda63e22e889463d4a54aa5d7adf907a4b7
3
+ metadata.gz: dcc3ba9f23a74e82348d910f9416e89261fbe158
4
+ data.tar.gz: 915a033140bc98f1a30767d349c511fe4bd4decf
5
5
  SHA512:
6
- metadata.gz: 592aec8e09ed01ae5f7396c9aa7ef31c078564a2f0137a250cefcf0cb1d6469f2fcc281cf5df56e8a7e1ecdc7a3701b24885b985e3e386ae07e7af475b8cb995
7
- data.tar.gz: b5e854fd1f4e205cf1e9c88be3159fe5d74030b5e1feefa2220084e1187bedabe9720593af629e2f94c31d3aef0ea254a4a1a7d57349a792d8b60a8d9a396118
6
+ metadata.gz: acd0a3eef49b95f992b091e264d464f1de67c7691b50a6aadf04932703d166bbe7de0b2f08e05ea724e2c778ce3fff88c2f8ec6baae5c4d972e0dd8d2722754d
7
+ data.tar.gz: f309c6efe2251650ae1648bc6cf3959a4ab537ef4df1dcce0b65b013598c3fb00c20d203e4a0dd016a3aacac3e99cef4700fc56aefc0664817a409396b6b8b40
@@ -1,23 +1,15 @@
1
1
  # https://github.com/rails/jbuilder/issues/204
2
- if Rails.version >= '4.1'
3
- module ActiveSupport
4
- module JSON
5
- module Encoding
6
- class JSONGemEncoder
7
- alias_method :original_jsonify, :jsonify
2
+ module ActiveSupport
3
+ module JSON
4
+ module Encoding
5
+ class JSONGemEncoder
6
+ alias_method :original_jsonify, :jsonify
8
7
 
9
- def jsonify(value)
10
- if ::BreezyTemplate::Digest === value
11
- value
12
- elsif ::BreezyTemplate::JointVar === value
13
- value
14
- elsif ::BreezyTemplate::DeferVar === value
15
- value
16
- elsif ::BreezyTemplate::Undefined === value
17
- value
18
- else
19
- original_jsonify(value)
20
- end
8
+ def jsonify(value)
9
+ if ::BreezyTemplate::Var === value
10
+ value
11
+ else
12
+ original_jsonify(value)
21
13
  end
22
14
  end
23
15
  end
@@ -2,24 +2,6 @@ require 'breezy_template/breezy_template'
2
2
 
3
3
  class BreezyTemplate
4
4
  module CacheExtension
5
- class Digest
6
- def initialize(digest)
7
- @digest = "cache[\"#{digest}\"]"
8
- end
9
-
10
- def to_json(*)
11
- @digest
12
- end
13
-
14
- def as_json(*)
15
- self
16
- end
17
-
18
- def encode_json(*)
19
- @digest
20
- end
21
- end
22
-
23
5
  def _result(value, *args)
24
6
  options = _cache_options(args[0])
25
7
  if options
@@ -154,7 +136,7 @@ class BreezyTemplate
154
136
  else
155
137
  v = blank_or_value
156
138
  @js.push(v)
157
- Digest.new(key)
139
+ ::BreezyTemplate::Var.new("cache[\"#{key}\"]")
158
140
  end
159
141
  end
160
142
 
@@ -2,10 +2,11 @@ require 'breezy_template/breezy_template'
2
2
 
3
3
  class BreezyTemplate
4
4
  class Configuration
5
- attr_accessor :track_assets
5
+ attr_accessor :track_sprockets_assets, :track_pack_assets
6
6
 
7
7
  def initialize
8
- @track_assets = ['application.js', 'application.css']
8
+ @track_sprockets_assets = ['application.js', 'application.css']
9
+ @track_pack_assets = ['application.js']
9
10
  end
10
11
  end
11
12
 
@@ -1,24 +1,6 @@
1
1
  require 'breezy_template/breezy_template'
2
2
 
3
3
  class BreezyTemplate
4
- class Undefined
5
- def initialize
6
- @value = "undefined"
7
- end
8
-
9
- def to_json(*)
10
- @value
11
- end
12
-
13
- def as_json(*)
14
- self
15
- end
16
-
17
- def encode_json(*)
18
- @value
19
- end
20
- end
21
-
22
4
  module DefermentExtension
23
5
  ACTIVE_MODES = [:auto, :manual].freeze
24
6
 
@@ -28,7 +10,7 @@ class BreezyTemplate
28
10
  if _deferment_auto?(options)
29
11
  @js.push(_breezy_visit_current(@path))
30
12
  end
31
- return _set_value key, Undefined.new
13
+ return _set_value key, ::BreezyTemplate::Var.new('undefined')
32
14
  else
33
15
  super
34
16
  end
@@ -1,50 +1,39 @@
1
1
  # This was taken from jbuilder
2
2
  require 'breezy_template/breezy_template'
3
+ require 'action_view'
4
+ require 'action_view/dependency_tracker'
3
5
 
4
- dependency_tracker = false
6
+ dependency_tracker = ::ActionView::DependencyTracker
5
7
 
6
- begin
7
- require 'action_view'
8
- require 'action_view/dependency_tracker'
9
- dependency_tracker = ::ActionView::DependencyTracker
10
- rescue LoadError
11
- begin
12
- require 'cache_digests'
13
- dependency_tracker = ::CacheDigests::DependencyTracker
14
- rescue LoadError
15
- end
16
- end
8
+ class BreezyTemplate
9
+ module DependencyTrackerMethods
10
+ # Matches:
11
+ # json.partial! partial: "comments/comment"
12
+ # json.comments @post.comments, partial: "comments/comment", as: :comment
13
+ # json.array! @posts, partial: "posts/post", as: :post
14
+ # = render partial: "account"
15
+ #
16
+ INDIRECT_RENDERS = /
17
+ (?::partial\s*=>|partial:) # partial: or :partial =>
18
+ \s* # optional whitespace
19
+ \[* # optional Bracket
20
+ \s* # optional whitespace
21
+ (['"])([^'"]+)\1 # quoted value
22
+ /x
17
23
 
18
- if dependency_tracker
19
- class BreezyTemplate
20
- module DependencyTrackerMethods
21
- # Matches:
22
- # json.partial! partial: "comments/comment"
23
- # json.comments @post.comments, partial: "comments/comment", as: :comment
24
- # json.array! @posts, partial: "posts/post", as: :post
25
- # = render partial: "account"
26
- #
27
- INDIRECT_RENDERS = /
28
- (?::partial\s*=>|partial:) # partial: or :partial =>
29
- \s* # optional whitespace
30
- \[* # optional Bracket
31
- \s* # optional whitespace
32
- (['"])([^'"]+)\1 # quoted value
33
- /x
34
-
35
- def dependencies
36
- indirect_dependencies + explicit_dependencies
37
- end
24
+ def dependencies
25
+ indirect_dependencies + explicit_dependencies
26
+ end
38
27
 
39
- private
28
+ private
40
29
 
41
- def indirect_dependencies
42
- source.scan(INDIRECT_RENDERS).map(&:second)
43
- end
30
+ def indirect_dependencies
31
+ source.scan(INDIRECT_RENDERS).map(&:second)
44
32
  end
45
33
  end
46
-
47
- ::BreezyTemplate::DependencyTracker = Class.new(dependency_tracker::ERBTracker)
48
- ::BreezyTemplate::DependencyTracker.send :include, ::BreezyTemplate::DependencyTrackerMethods
49
- dependency_tracker.register_tracker :breezy, ::BreezyTemplate::DependencyTracker
50
34
  end
35
+
36
+ ::BreezyTemplate::DependencyTracker = Class.new(dependency_tracker::ERBTracker)
37
+ ::BreezyTemplate::DependencyTracker.send :include, ::BreezyTemplate::DependencyTrackerMethods
38
+
39
+ ::ActionView::DependencyTracker.register_tracker :breezy, ::BreezyTemplate::DependencyTracker
@@ -21,14 +21,21 @@ class BreezyTemplate
21
21
  json.csrf_token form_authenticity_token
22
22
  end
23
23
 
24
- if ::BreezyTemplate.configuration.track_assets.any?
25
- json.assets do
26
- json.array! (::BreezyTemplate.configuration.track_assets || []).map{|assets|
27
- asset_path(assets)
28
- }
24
+ __sprockets_assets = (::BreezyTemplate.configuration.track_sprockets_assets || []).map do |asset|
25
+ asset_path(asset)
26
+ end
27
+
28
+ __pack_assets = []
29
+ if defined?(asset_pack_path)
30
+ __pack_assets = (::BreezyTemplate.configuration.track_pack_assets || []).map do |asset|
31
+ asset_pack_path(asset)
29
32
  end
30
33
  end
31
34
 
35
+ if __sprockets_assets.any? || __pack_assets.any?
36
+ json.assets (__sprockets_assets + __pack_assets)
37
+ end
38
+
32
39
  if defined?(breezy_filter) && !!breezy_filter
33
40
  json.action 'graft'
34
41
  json.path breezy_filter
@@ -38,8 +45,8 @@ class BreezyTemplate
38
45
  session.delete(:breezy_filter)
39
46
  end
40
47
 
41
- json.joints ::BreezyTemplate::PartialExtension::JointVar.new
42
- json.defers ::BreezyTemplate::PartialExtension::DeferVar.new
48
+ json.joints ::BreezyTemplate::Var.new('joints')
49
+ json.defers ::BreezyTemplate::Var.new('defers')
43
50
 
44
51
  json.target!
45
52
  end
@@ -2,42 +2,6 @@ require 'breezy_template/breezy_template'
2
2
 
3
3
  class BreezyTemplate
4
4
  module PartialExtension
5
- class DeferVar
6
- def initialize
7
- @digest = "defers"
8
- end
9
-
10
- def to_json(*)
11
- @digest
12
- end
13
-
14
- def as_json(*)
15
- self
16
- end
17
-
18
- def encode_json(*)
19
- @digest
20
- end
21
- end
22
-
23
- class JointVar
24
- def initialize
25
- @digest = "joints"
26
- end
27
-
28
- def to_json(*)
29
- @digest
30
- end
31
-
32
- def as_json(*)
33
- self
34
- end
35
-
36
- def encode_json(*)
37
- @digest
38
- end
39
- end
40
-
41
5
  def set!(key, value = BLANK, *args)
42
6
  options = args.last || {}
43
7
 
@@ -0,0 +1,19 @@
1
+ class BreezyTemplate
2
+ class Var
3
+ def initialize(var)
4
+ @var = var
5
+ end
6
+
7
+ def to_json(*)
8
+ @var
9
+ end
10
+
11
+ def as_json(*)
12
+ self
13
+ end
14
+
15
+ def encode_json(*)
16
+ @var
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,7 @@
1
1
  require 'breezy_template/breezy_template'
2
2
 
3
3
  require 'breezy_template/blank'
4
+ require 'breezy_template/var'
4
5
  require 'breezy_template/key_formatter'
5
6
  require 'breezy_template/errors'
6
7
 
@@ -51,7 +51,8 @@ end
51
51
  class BreezyTemplateTest < ActionView::TestCase
52
52
  setup do
53
53
  self.request_forgery = false
54
- BreezyTemplate.configuration.track_assets = []
54
+ BreezyTemplate.configuration.track_sprockets_assets = []
55
+ BreezyTemplate.configuration.track_pack_assets = []
55
56
 
56
57
  # this is a stub. Normally this would be set by the
57
58
  # controller locals
@@ -73,6 +74,10 @@ class BreezyTemplateTest < ActionView::TestCase
73
74
  @breezy_filter
74
75
  end
75
76
 
77
+ def asset_pack_path(asset)
78
+ return asset
79
+ end
80
+
76
81
  def request
77
82
  @request
78
83
  end
@@ -96,7 +101,9 @@ class BreezyTemplateTest < ActionView::TestCase
96
101
  end
97
102
 
98
103
  def action_controller_test_request
99
- if ::Rails.version.start_with?('5')
104
+ if ::Rails.version.start_with?('5.1')
105
+ ::ActionController::TestRequest.create({})
106
+ elsif ::Rails.version.start_with?('5')
100
107
  ::ActionController::TestRequest.create
101
108
  else
102
109
  ::ActionController::TestRequest.new
@@ -188,9 +195,10 @@ class BreezyTemplateTest < ActionView::TestCase
188
195
 
189
196
  assert_equal expected, result
190
197
  end
191
- #
198
+
192
199
  test "render with asset tracking" do
193
- BreezyTemplate.configuration.track_assets = ['test.js', 'test.css']
200
+ BreezyTemplate.configuration.track_sprockets_assets = ['test.js', 'test.css']
201
+ BreezyTemplate.configuration.track_pack_assets = ['test_pack.js', 'test_pack.css']
194
202
 
195
203
  result = jbuild(<<-TEMPLATE)
196
204
  json.content "hello"
@@ -201,7 +209,7 @@ class BreezyTemplateTest < ActionView::TestCase
201
209
  var joints={};
202
210
  var cache={};
203
211
  var defers=[];
204
- return ({"data":{"content":"hello"},"assets":["/test.js","/test.css"],"joints":joints,"defers":defers});
212
+ return ({"data":{"content":"hello"},"assets":["/test.js","/test.css","test_pack.js","test_pack.css"],"joints":joints,"defers":defers});
205
213
  })()
206
214
  JS
207
215
 
@@ -231,7 +239,7 @@ class BreezyTemplateTest < ActionView::TestCase
231
239
  end
232
240
 
233
241
  test "wrapping jbuilder contents inside Breezy with additional options" do
234
- BreezyTemplate.configuration.track_assets = ['test.js', 'test.css']
242
+ BreezyTemplate.configuration.track_sprockets_assets = ['test.js', 'test.css']
235
243
  self.breezy = { title: 'this is fun' }
236
244
 
237
245
  result = jbuild(<<-TEMPLATE)
@@ -1013,12 +1021,17 @@ class BreezyTemplateTest < ActionView::TestCase
1013
1021
  end
1014
1022
 
1015
1023
  test "filtering for a node of a AR relation in a tree by id via an appended where clause" do
1016
- result = jbuild(<<-JBUILDER, breezy_filter: 'hit.hit2.id=1')
1017
- post = Post.create
1018
- post.notes.create title: 'first'
1019
- post.notes.create title: 'second'
1024
+ Post.delete_all
1025
+ Note.delete_all
1026
+
1027
+ post = Post.create
1028
+ first_note = post.notes.create(title: 'first')
1029
+ post.notes.create(title: 'second')
1020
1030
 
1021
- post.notes.expects(:where).once().with('id'=>1).returns([{id: 1, title: 'first'}])
1031
+ result = jbuild(<<-JBUILDER, breezy_filter: "hit.hit2.id=#{first_note.id}")
1032
+ post = Post.first
1033
+ first_note = Note.where(title: 'first').first
1034
+ post.notes.expects(:where).once().with('id'=>first_note.id).returns([{id: first_note.id, title: 'first'}])
1022
1035
 
1023
1036
  json.hit do
1024
1037
  json.hit2 do
@@ -1031,14 +1044,14 @@ class BreezyTemplateTest < ActionView::TestCase
1031
1044
  JBUILDER
1032
1045
 
1033
1046
  Rails.cache.clear
1034
-
1047
+ id = Note.where(title: 'first').first.id
1035
1048
  expected = strip_format(<<-JS)
1036
1049
  (function(){
1037
1050
  var joints={};
1038
1051
  var cache={};
1039
1052
  var defers=[];
1040
1053
  return (
1041
- {"data":{"title":"first"},"action":"graft","path":"hit.hit2.id=1","joints":joints,"defers":defers}
1054
+ {"data":{"title":"first"},"action":"graft","path":"hit.hit2.id=#{id}","joints":joints,"defers":defers}
1042
1055
  );
1043
1056
  })()
1044
1057
  JS
@@ -1290,3 +1303,5 @@ class BreezyTemplateTest < ActionView::TestCase
1290
1303
  assert_equal expected, result
1291
1304
  end
1292
1305
  end
1306
+
1307
+
@@ -76,7 +76,7 @@ class TemplateTest < ActiveSupport::TestCase
76
76
  end
77
77
 
78
78
  assert result.has_key?('content')
79
- assert_equal nil, result['content']
79
+ assert_nil result['content']
80
80
  end
81
81
 
82
82
  test 'multiple keys' do
@@ -156,7 +156,7 @@ class TemplateTest < ActiveSupport::TestCase
156
156
  end
157
157
  end
158
158
 
159
- assert_equal nil, result['author']['name']
159
+ assert_nil result['author']['name']
160
160
  assert_equal 32, result['author']['age']
161
161
  end
162
162
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: breezy_template
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.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-03-06 00:00:00.000000000 Z
11
+ date: 2018-05-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.0
19
+ version: 5.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.2.0
26
+ version: 5.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.2.0
33
+ version: 5.0.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: 4.2.0
40
+ version: 5.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: multi_json
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -56,16 +56,30 @@ dependencies:
56
56
  name: mocha
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.2'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: '1.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '12.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '0'
82
+ version: '12.0'
69
83
  description: Breezy Templates for React props
70
84
  email: jho406@gmail.com
71
85
  executables: []
@@ -86,6 +100,7 @@ files:
86
100
  - lib/breezy_template/key_formatter.rb
87
101
  - lib/breezy_template/partial_extension.rb
88
102
  - lib/breezy_template/search_extension.rb
103
+ - lib/breezy_template/var.rb
89
104
  - test/dependency_tracker_test.rb
90
105
  - test/extensions_test.rb
91
106
  - test/template_test.rb
@@ -102,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
102
117
  requirements:
103
118
  - - ">="
104
119
  - !ruby/object:Gem::Version
105
- version: 1.9.3
120
+ version: 2.2.2
106
121
  required_rubygems_version: !ruby/object:Gem::Requirement
107
122
  requirements:
108
123
  - - ">="