cuba-tools 0.0.3 → 0.0.4

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: 3bdced9844636ce9756c972e1f896b803385065d
4
- data.tar.gz: f05797ab1125e08880e094778755aba92adcba0c
3
+ metadata.gz: dddb504be2eddc1fcc13ab3fd58eb0a713ea24ce
4
+ data.tar.gz: 90fb4df33375f75721c0a077b833849ab11ac743
5
5
  SHA512:
6
- metadata.gz: 61784850e3b6ae80d5f523a168845266f3c9d4d7c84a637a8d2a819303f3931e6e74c6f8df7243be20a4408f8a5a088a4c7f6a68975f744fb3ab89f3e037320c
7
- data.tar.gz: 4920a0e969a0a36e689ca97a6007c70d31865f66ed5e940a8b04c7e51db36ea76cea3aaa996adf328c7c31f7e0847eb7220d7a86cf167dc3e8d7fd788a2f11f8
6
+ metadata.gz: 16701025a97e9dcbeaf51d4918eeca22658314dd462cb1bbef2b5ba2ea50742df7607e7846d2964b399ea70fcce9d79451b7cad1cb78a7f9d749fcb5003316c6
7
+ data.tar.gz: 618fdb605de746a6c1db196218493424c4863e11aa2ae7c2cc8ceb7448d1e766a2bd4625ab410116296329c6bb35ba5dd017d9bbbc1122b6e3dafbc66998105c
data/cuba-tools.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "cuba-tools"
7
- spec.version = "0.0.3"
7
+ spec.version = "0.0.4"
8
8
  spec.authors = ["cj"]
9
9
  spec.email = ["cjlazell@gmail.com"]
10
10
  spec.description = %q{Contains a group of tools to extend cuba}
@@ -15,7 +15,7 @@ module Cuba::Tools
15
15
  @events = events
16
16
  @widget_state = false
17
17
 
18
- events.add_observer self, :trigger
18
+ events.add_observer self, :trigger_event
19
19
  end
20
20
 
21
21
  def set_state state
@@ -34,12 +34,21 @@ module Cuba::Tools
34
34
  end
35
35
  end
36
36
 
37
- def trigger widget_name, widget_event, data = {}
37
+ def trigger widget_event, data = {}
38
+ widget_name = data.delete(:for)
39
+
40
+ req.env[:loaded_widgets].each do |n, w|
41
+ w.trigger_event (widget_name || req.params['widget_name']), widget_event,
42
+ data.to_deep_ostruct
43
+ end
44
+ end
45
+
46
+ def trigger_event widget_name, widget_event, data = {}
38
47
  if class_events = self.class.events
39
48
  class_events.each do |class_event, opts|
40
49
  if class_event.to_s == widget_event.to_s && (
41
- widget_name == name or
42
- opts[:for].to_s == widget_name
50
+ widget_name.to_s == name or
51
+ opts[:for].to_s == widget_name.to_s
43
52
  )
44
53
  if not opts[:with]
45
54
  e = widget_event
@@ -111,23 +120,19 @@ module Cuba::Tools
111
120
  end
112
121
 
113
122
  def replace state, opts = {}
114
- set_state state
115
-
116
123
  if !state.is_a? String
117
124
  opts[:state] = state
118
- content = render_state, opts
125
+ content = render state, opts
119
126
  selector = '#' + id_for(state)
120
127
  else
121
128
  if !opts.key?(:content) and !opts.key?(:with)
122
- content = render_state opts
129
+ content = render opts
123
130
  else
124
131
  content = opts[:content] || opts[:with]
125
132
  end
126
133
  selector = state
127
134
  end
128
135
 
129
- reset_state
130
-
131
136
  res.write '$("' + selector + '").replaceWith("' + escape(content) + '");'
132
137
  # scroll to the top of the page just as if we went to the url directly
133
138
  # if opts[:scroll_to_top]
@@ -7,6 +7,14 @@ module Cuba::Tools
7
7
  if path = Widget.config.view_path
8
8
  Dir["#{path}/**/*.rb"].each { |rb| require rb }
9
9
  end
10
+
11
+ if defined?(Slim) && defined?(Slim::Engine)
12
+ Slim::Engine.set_default_options \
13
+ disable_escape: true,
14
+ use_html_safe: false,
15
+ disable_capture: false,
16
+ pretty: false
17
+ end
10
18
  end
11
19
 
12
20
  def method_missing(meth, *args, &block)
@@ -30,9 +38,7 @@ module Cuba::Tools
30
38
  html = block.call widget
31
39
 
32
40
  mab do
33
- div(defaults) do
34
- text! html
35
- end
41
+ div(defaults) { html }
36
42
  end
37
43
  end
38
44
 
data/lib/cuba/tools.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'cuba'
1
2
  require 'cuba/tools/inflectors'
2
3
 
3
4
  module Cuba::Tools
@@ -1,7 +1,6 @@
1
1
  require_relative '../cutest_helper'
2
2
  require "slim"
3
3
  require "cuba/render"
4
- require 'cgi'
5
4
 
6
5
  setup do
7
6
  Cuba.reset!
@@ -16,6 +15,9 @@ setup do
16
15
  Cuba.use Cuba::Tools::Widget::Middleware
17
16
  Cuba.plugin Cuba::Tools::Widget::Helpers
18
17
  Cuba.plugin Cuba::Render
18
+ Cuba.settings[:render][:options] ||= {
19
+ default_encoding: Encoding.default_external
20
+ }
19
21
  Cuba.define do
20
22
  def test_helper
21
23
  'test_helper'
@@ -71,7 +73,7 @@ scope "cuba/tools/widget/middleware" do
71
73
  'rack.input' => {},
72
74
  'QUERY_STRING' => 'widget_name=some_widget&widget_event=test'
73
75
  })
74
- body = CGI.unescapeHTML resp.send('body').join
76
+ body = resp.send('body').join
75
77
 
76
78
  assert body[/moo/] != nil
77
79
  assert body[/cow/] != nil
@@ -84,19 +86,14 @@ scope "cuba/tools/widget/middleware" do
84
86
  'REQUEST_METHOD' => 'GET',
85
87
  'rack.input' => {}
86
88
  })
87
- # TODO: figure out why the html isn't decoded properly
88
- # body = CGI.unescapeHTML resp.send('body').join
89
89
  body = resp.send('body').join
90
90
 
91
91
  assert body['test_helper'] != nil
92
92
  assert body['display'] != nil
93
- assert body['some_widget_display'] != nil
93
+ assert body['id="some_widget_display"'] != nil
94
94
  assert body['some partial'] != nil
95
95
  assert body['some state'] != nil
96
96
  assert body['user_widget_method'] != nil
97
- # TODO: figure out why the html isn't decoded properly
98
- # and this is failing
99
- # assert body['id="some_widget_some_state"'] != nil
100
- assert body['some_widget_some_state'] != nil
97
+ assert body['id="some_widget_some_state"'] != nil
101
98
  end
102
99
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuba-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - cj