roda-component 0.1.5 → 0.1.6

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: 6709c88bb551e2d62fc3991f8faaec4d71f5105e
4
- data.tar.gz: 8487b6adbe4e685e24bb7184632f6547dd34ac59
3
+ metadata.gz: d0d11690e0fcadcb8e039e0da837a1e66d87f128
4
+ data.tar.gz: 383600a90a2d5ba621a5ad2208923a056e5a7416
5
5
  SHA512:
6
- metadata.gz: b054a490aac393f350a01c8a3bd9986d94e3f1365f0aabe6ea5b2b4bb7239a82173341837aeb2a520f33fe5fe3b3222f3495afb51375d92d452b804335e3b7e2
7
- data.tar.gz: a896624d7dfd0734d2a90abaf80a81bfae32e7bc27b2d2514e1cfdfd916b689b493df230048b18c1997dd8e8ba9330ea907a71c758d6f1ba41b4216b5b48b189
6
+ metadata.gz: dfbd1b842323e8bd39b3f822e80cd1c7e537bb7c6e4df5f729fe3df69793867d17d30dfcb22e4776150cbc6339a9785305a6a9459ca2e06583043a2a3cb0bb6d
7
+ data.tar.gz: 8d37da4c0faf072c3cfa0553404f5f7ad1b01a1913ba9f6e5df4f264a11cb97ff29859968e60f324851f4e1ec900eb90ea0649005620f1d21e7de4277258cb79
data/README.md CHANGED
@@ -1,31 +1,6 @@
1
1
  # Roda::Component
2
2
 
3
- TODO: Write a gem description
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- ```ruby
10
- gem 'roda-component'
11
- ```
12
-
13
- And then execute:
14
-
15
- $ bundle
16
-
17
- Or install it yourself as:
18
-
19
- $ gem install roda-component
20
-
21
- ## Usage
22
-
23
- TODO: Write usage instructions here
24
-
25
- ## Contributing
26
-
27
- 1. Fork it ( https://github.com/[my-github-username]/roda-component/fork )
28
- 2. Create your feature branch (`git checkout -b my-new-feature`)
29
- 3. Commit your changes (`git commit -am 'Add some feature'`)
30
- 4. Push to the branch (`git push origin my-new-feature`)
31
- 5. Create a new Pull Request
3
+ ## todo
4
+ - create a simple store object for each component
5
+ - have a comp_id class method where you can put logic in for generating unique id
6
+ this is mainly used to the store
@@ -1,5 +1,5 @@
1
1
  class Roda
2
2
  class Component
3
- VERSION = "0.1.5"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
@@ -95,7 +95,13 @@ class Roda
95
95
  end
96
96
  EOF
97
97
 
98
- loaded_component_js << ("<script>" + Opal.compile(js) + "</script>")
98
+ loaded_component_js << ("<script>#{Opal.compile(js)}</script>")
99
+
100
+ file_path = comp.class.instance_methods(false).map { |m|
101
+ comp.class.instance_method(m).source_location.first
102
+ }.uniq.first.gsub("#{Dir.pwd}/#{component_opts[:path]}", '').gsub(/\.rb\Z/, '.js')
103
+
104
+ loaded_component_js << "<script type=\"text/javascript\" src=\"/#{component_opts[:assets_route]}#{file_path}\"></script>"
99
105
  end
100
106
 
101
107
  def component name, options = {}, &block
@@ -138,7 +144,7 @@ class Roda
138
144
  alias :roda_component :component
139
145
 
140
146
  def component_js
141
- loaded_component_js.join('\n').to_s
147
+ loaded_component_js.join(' ').to_s
142
148
  end
143
149
  end
144
150
 
@@ -175,33 +181,26 @@ class Roda
175
181
 
176
182
  module RequestMethods
177
183
  def components
178
- on self.class.component_assets_route_regex do |component, action|
179
- # Process the ruby code into javascript
180
- Opal::Processor.source_map_enabled = false
181
-
182
- opal = Opal::Server.new do |s|
183
- # Append the gems path
184
- s.append_path Dir.pwd
185
- s.append_path Gem::Specification.find_by_name("roda-component").gem_dir + '/lib'
186
- # s.append_path Gem::Specification.find_by_name("scrivener-cj").gem_dir + '/lib'
187
- # Append the path to the components folder
188
- s.append_path scope.component_opts[:path]
189
-
190
- s.main = 'application'
191
- end
184
+ opal = Opal::Server.new do |s|
185
+ # Append the gems path
186
+ s.debug = true
187
+ s.source_map = true
188
+ s.append_path Gem::Specification.find_by_name("roda-component").gem_dir + '/lib'
192
189
 
193
- sprockets = opal.sprockets
190
+ # Append the path to the components folder
191
+ s.append_path scope.component_opts[:path]
194
192
 
195
- js = sprockets['roda/component'].to_s
196
- # Loop through and and convert all the files to javascript
197
- Dir[scope.component_opts[:path] + '/**/*.rb'].each do |file|
198
- file = file.gsub(scope.component_opts[:path] + '/', '')
199
- js << sprockets[file].to_s
200
- end
201
- # Set the header to javascript
202
- response.headers["Content-Type"] = 'application/javascript; charset=UTF-8'
193
+ s.main = 'roda/component'
194
+ end
195
+
196
+ on self.class.component_assets_route_regex do |component, action|
197
+ path = scope.request.env['REQUEST_PATH']
203
198
 
204
- js
199
+ if path[/\.js\Z/]
200
+ run opal.sprockets
201
+ else
202
+ run Opal::SourceMapServer.new(opal.sprockets, path)
203
+ end
205
204
  end
206
205
 
207
206
  on self.class.component_route_regex do |comp, type, action|
@@ -41,7 +41,7 @@ class TestApp < Roda
41
41
  secret: "na"
42
42
 
43
43
  plugin :csrf, header: 'X-CSRF-TOKEN', skip: ['POST:/faye']
44
- plugin :component, { path: path, token: '687^*&SAD876asd87as6d*&8asd' }
44
+ plugin :component, { path: 'components', token: '687^*&SAD876asd87as6d*&8asd' }
45
45
  plugin :assets, {
46
46
  path: "#{path}/../public/chat",
47
47
  css_dir: '',
@@ -80,8 +80,8 @@ class TestApp < Roda
80
80
 
81
81
  r.root { component(:chat, js: true) }
82
82
 
83
- r.on('login') { component(:login, js: true) }
84
- r.on('logout') { component(:login, call: :logout, js: true) }
83
+ r.on('login') { component(:login, js: true) }
84
+ r.on('logout') { component(:login, call: :logout) }
85
85
 
86
86
  r.on 'session/:key/:value' do |key, value|
87
87
  session[key] = value
@@ -8,7 +8,7 @@ class LayoutComp < Roda::Component
8
8
  dom.at_css('head').add_child assets(:css)
9
9
  dom.at_css('html').add_child assets(:js)
10
10
  dom.at_css('html').add_child <<-EOF
11
- <script type="text/javascript" src="/assets/components"></script>
11
+ <script type="text/javascript" src="/assets/components/roda/component.js"></script>
12
12
  <script type="text/javascript" src="/faye/client.js"></script>
13
13
  EOF
14
14
  end
@@ -1,3 +1,5 @@
1
+ require_relative 'forms/login'
2
+
1
3
  class LoginComponent < Roda::Component
2
4
  comp_name :login
3
5
  comp_html "../public/chat/login.html"
@@ -17,7 +19,7 @@ class LoginComponent < Roda::Component
17
19
  end
18
20
 
19
21
  def logout
20
- logout(Models::User)
22
+ super(Models::User)
21
23
  request.redirect 'login'
22
24
  end
23
25
 
@@ -97,11 +99,6 @@ class LoginComponent < Roda::Component
97
99
 
98
100
  protected
99
101
 
100
- def logout
101
- logout(Models::User)
102
- request.redirect 'login'
103
- end
104
-
105
102
  def display_errors errors
106
103
  errors.each do |key, error|
107
104
  error = error.first
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roda-component
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - cj