Class: Wedge
- Inherits:
-
Object
show all
- Includes:
- Methods
- Defined in:
- lib/wedge.rb,
lib/wedge/dom.rb,
lib/wedge/html.rb,
lib/wedge/opal.rb,
lib/wedge/config.rb,
lib/wedge/events.rb,
lib/wedge/version.rb,
lib/wedge/component.rb,
lib/wedge/middleware.rb,
lib/wedge/plugins/form.rb,
lib/wedge/plugins/pjax.rb,
lib/wedge/utilis/methods.rb,
lib/wedge/plugins/history.rb,
lib/wedge/plugins/uploader.rb,
lib/wedge/plugins/validations.rb,
lib/wedge/utilis/indifferent_hash.rb
Defined Under Namespace
Modules: HTML, Methods, Plugins
Classes: Component, Config, DOM, Events, IndifferentHash, Middleware
Constant Summary
collapse
- ATTR_ACCESSORS =
%i{scope store config events}
- Opal =
Create our own opal instance.
::Opal.dup
- VERSION =
'0.1.13'
- Form =
Wedge::Plugins::Form
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Methods
#client?, included, #server?
Class Method Details
.[](name, *args, &block) ⇒ Wedge::Component#method
Used to call a component.
94
95
96
|
# File 'lib/wedge.rb', line 94
def [](name, *args, &block)
config.component_class[name].wedge_new self, *args, &block
end
|
.assets_url ⇒ Object
30
31
32
33
|
# File 'lib/wedge.rb', line 30
def assets_url
url = config.assets_url.gsub(%r{^(http(|s)://[^\/]*\/|\/)}, '/')
"#{url}#{config.cache_assets ? "/#{config.assets_key}" : ''}"
end
|
.assets_url_regex ⇒ Object
35
36
37
38
39
40
41
42
|
# File 'lib/wedge.rb', line 35
def assets_url_regex
@assets_url_regex ||= begin
assets_url = ::Wedge.assets_url.gsub(%r{^\/}, '')
%r{(?:#{assets_url}|#{assets_url.sub("#{::Wedge.config.assets_key}/", '')})/(.*)\.(.*)$}
end
end
|
.assets_url_with_host ⇒ Object
44
45
46
|
# File 'lib/wedge.rb', line 44
def assets_url_with_host
"#{config.assets_url}#{config.cache_assets ? "/#{config.assets_key}" : ''}"
end
|
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
# File 'lib/wedge.rb', line 178
def config
@config ||= begin
args = { component_class: IndifferentHash.new }
unless RUBY_ENGINE == 'opal'
args[:assets_key] = begin
if defined?(PlatformAPI) && ENV['HEROKU_TOKEN'] && ENV['HEROKU_APP']
heroku = PlatformAPI.connect_oauth(ENV['HEROKU_TOKEN'], default_headers: {'Range' => 'version ..; order=desc'})
slug_id = heroku.release.list(ENV['HEROKU_APP']).first["slug"]["id"]
heroku.slug.info(ENV['HEROKU_APP'], slug_id)["commit"]
else
`git rev-parse HEAD 2>/dev/null`.to_s.strip
end
end
end
Config.new(args)
end
end
|
83
84
85
|
# File 'lib/wedge.rb', line 83
def events
@events ||= Events.new
end
|
.html!(scope = false, &block) ⇒ Object
48
49
50
51
52
53
54
55
56
|
# File 'lib/wedge.rb', line 48
def html!(scope = false, &block)
if !block_given?
html = HTML::DSL.html(&scope).to_html
else
html = HTML::DSL.scope!(scope).html(&block).to_html
end
DOM.new html
end
|
.javascript(path_name = 'wedge', options = {}) ⇒ Object
Return the opal javascript.
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
# File 'lib/wedge.rb', line 143
def javascript(path_name = 'wedge', options = {})
path_name = path_name.to_s
if server?
javascript_cache[path_name] ||= begin
build(path_name, options).to_s
end
else
url = "#{Wedge.assets_url_with_host}/#{options[:path]}.js"
cache = options[:cache_assets]
`jQuery.ajax({ url: url, dataType: "script", cache: cache }).done(function() {`
Wedge.config.component_class[options[:name]].config.store = options[:store].indifferent
if initialize_args = options.delete(:initialize_args)
comp = Wedge[options[:name], *initialize_args]
else
comp = Wedge[options[:name]]
end
if options[:method_args].any?
comp.send(options[:method_called], options[:method_args])
else
comp.send(options[:method_called])
end
Wedge.trigger_browser_events
`}).fail(function(jqxhr, settings, exception){ window.console.log(exception); })`
end
end
|
.script_tag ⇒ Object
58
59
60
|
# File 'lib/wedge.rb', line 58
def script_tag
"<script src='#{assets_url_with_host}/wedge.js'></script>"
end
|
.trigger(wedge_name, event_name, *args) ⇒ Object
79
80
81
|
# File 'lib/wedge.rb', line 79
def trigger(wedge_name, event_name, *args)
events.trigger wedge_name, event_name, *args
end
|
Instance Method Details
#append_paths ⇒ Array
Append the correct paths to opal.
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
# File 'lib/wedge.rb', line 126
def append_paths
@append_paths ||= begin
file = method(:assets_url).source_location.first.sub('/wedge.rb', '')
gems_dir = ::Opal.gem_dir.gsub(/(?<=gems)\/opal-.*/, '')
Wedge::Opal.append_path file
Wedge::Opal.append_path Dir.pwd
end
end
|
Returns the build object for opal.
114
115
116
|
# File 'lib/wedge.rb', line 114
def build(path = 'wedge', options = {})
Opal::Builder.build(path, options) if append_paths
end
|
#javascript_cache ⇒ Object
63
64
65
|
# File 'lib/wedge.rb', line 63
def javascript_cache
@javascript_cache ||= IndifferentHash.new
end
|
#source_map(path = 'wedge', options = {}) ⇒ Object
Source maps for the javascript
119
120
121
|
# File 'lib/wedge.rb', line 119
def source_map(path = 'wedge', options = {})
build(path, options).source_map
end
|
#trigger_browser_events ⇒ Object
69
70
71
72
73
74
75
76
|
# File 'lib/wedge.rb', line 69
def trigger_browser_events
config.component_class.each do |k, klass|
next if klass.config.triggered_browser_events
klass.config.triggered_browser_events = true
Wedge.trigger klass.config.name, :browser_events
end
end
|