easymarklet 0.0.1
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.
- data/MIT-LICENSE +20 -0
- data/README.md +64 -0
- data/Rakefile +27 -0
- data/app/assets/javascripts/easymarklet/consumer.js.erb +181 -0
- data/app/assets/javascripts/easymarklet/producer.js.erb +69 -0
- data/app/helpers/easymarklet/link_helper.rb +7 -0
- data/config/initializers/jasminerice.rb +5 -0
- data/config/routes.rb +2 -0
- data/lib/easymarklet.rb +4 -0
- data/lib/easymarklet/engine.rb +9 -0
- data/lib/easymarklet/version.rb +3 -0
- data/lib/generators/easymarklet/simple/USAGE +12 -0
- data/lib/generators/easymarklet/simple/simple_generator.rb +19 -0
- data/lib/generators/easymarklet/simple/templates/simple_bookmarklet.js +6 -0
- data/lib/generators/easymarklet/xdm/USAGE +15 -0
- data/lib/generators/easymarklet/xdm/templates/xdm_bookmarklet.js +23 -0
- data/lib/generators/easymarklet/xdm/templates/xdm_consumer.js +5 -0
- data/lib/generators/easymarklet/xdm/templates/xdm_producer.js +6 -0
- data/lib/generators/easymarklet/xdm/xdm_generator.rb +20 -0
- data/lib/tasks/easymarklet_tasks.rake +4 -0
- metadata +215 -0
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
Easymarklet
|
2
|
+
===================
|
3
|
+
|
4
|
+
The easiest way to create bookmarklets for your rails app.
|
5
|
+
|
6
|
+
Installation
|
7
|
+
-------------------
|
8
|
+
|
9
|
+
Add this to your Gemfile:
|
10
|
+
|
11
|
+
gem 'easymarklet'
|
12
|
+
|
13
|
+
Then run:
|
14
|
+
|
15
|
+
bundle install
|
16
|
+
|
17
|
+
Building your bookmarklet code
|
18
|
+
---------------------------------
|
19
|
+
|
20
|
+
Add a file to your app/assets/javascripts directory that will hold the
|
21
|
+
code for your bookmarklet. For example :
|
22
|
+
|
23
|
+
app/assets/javascripts/foobaz_bookmarklet.js
|
24
|
+
|
25
|
+
(function(){
|
26
|
+
var p = document.createElement('p');
|
27
|
+
p.appendChild(document.createTextNode('Foo vs. Baz'));
|
28
|
+
document.body.appendChild(p);
|
29
|
+
})();
|
30
|
+
|
31
|
+
Linking to your bookmarklet
|
32
|
+
---------------------------------
|
33
|
+
|
34
|
+
Then in a view template you can link to your bookmarklet using the
|
35
|
+
easymarklet_js helper.
|
36
|
+
|
37
|
+
<%= link_to "Foo Baz!", easymarklet_js('foobaz_bookmarklet.js') %>
|
38
|
+
|
39
|
+
The resulting link will contain a small snippet of javascript that will
|
40
|
+
load your bookmarklet code into the current page and execute it. Place
|
41
|
+
some instructions for your users near the link that tells them to drag
|
42
|
+
the link into their bookmark bar.
|
43
|
+
|
44
|
+
XDM Bookmarklets
|
45
|
+
----------------------------------
|
46
|
+
|
47
|
+
* Note : XDM is a work in progress.
|
48
|
+
|
49
|
+
To enable cross domain communictaion between your site and other pages
|
50
|
+
on the 'net we need to be able to generate a fully qualified URL to your
|
51
|
+
bookmarklet code. To set the correct host you should add this to each
|
52
|
+
of your confing/environment/*.rb files. Adjust the :host accordingly.
|
53
|
+
:port is optional.
|
54
|
+
|
55
|
+
config.action_controller.default_url_options = {:host =>
|
56
|
+
'localhost', :port => 3000}
|
57
|
+
|
58
|
+
XDM bookmarklet code acts as a consumer for data or a service that is
|
59
|
+
supplied by the provider, a page on your app.
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
This project rocks and uses MIT-LICENSE.
|
data/Rakefile
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'Easymarklet'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
Bundler::GemHelper.install_tasks
|
27
|
+
|
@@ -0,0 +1,181 @@
|
|
1
|
+
(function(){
|
2
|
+
|
3
|
+
var Easymarklet = window.Easymarklet || {}
|
4
|
+
|
5
|
+
Easymarklet.Consumer = function(bookmarklet){
|
6
|
+
if(bookmarklet == null){ alert('You must pass some bookmarklet to Easymarklet.Consumer.'); return;}
|
7
|
+
if(bookmarklet.consumer == null){ alert('Your bookmarklet definition is missing a consumer.'); return; }
|
8
|
+
if(bookmarklet.producer == null){ alert('Your bookmarklet definition is missing a producer.'); return; }
|
9
|
+
|
10
|
+
var _this = this;
|
11
|
+
//console.log('Easymarklet.Consumer : init');
|
12
|
+
var bookmarklet = bookmarklet
|
13
|
+
var s1, s2, isLoaded = false, xhr, head = document.getElementsByTagName('head')[0];
|
14
|
+
var easymarkletDiv = null;
|
15
|
+
|
16
|
+
var consumer_url = encodeURIComponent(document.location);
|
17
|
+
var protocol = 'http://'
|
18
|
+
var host = '<%= Rails.application.config.action_controller.default_url_options[:host] %>';
|
19
|
+
var port = '<%= Rails.application.config.action_controller.default_url_options[:port] %>';
|
20
|
+
port = port === '' ? '' : ':' + port;
|
21
|
+
var full_host = protocol + host + port;
|
22
|
+
|
23
|
+
// Once easyXDM is available this will create an iframe and set up the RPC channel
|
24
|
+
function scriptOnLoad(){
|
25
|
+
|
26
|
+
if (isLoaded || typeof easyXDM === "undefined" || typeof JSON === "undefined") {
|
27
|
+
return;
|
28
|
+
}
|
29
|
+
isLoaded = true;
|
30
|
+
|
31
|
+
if(bookmarklet.visible){
|
32
|
+
easymarkletDiv = document.createElement('div');
|
33
|
+
easymarkletDiv.id = "easymarklet_div";
|
34
|
+
easymarkletDiv.className = 'easymarklet_iframe_div';
|
35
|
+
//easymarkletDiv.appendChild(document.createTextNode("Loading bookmarklet"));
|
36
|
+
document.body.appendChild(easymarkletDiv);
|
37
|
+
}
|
38
|
+
|
39
|
+
//var dest = full_host + "/bookmarklet_frame?dest=";
|
40
|
+
//dest += encodeURIComponent("/bookmarklet/court_cases/check?court_case[url]=" + caseUrl);
|
41
|
+
|
42
|
+
var dest = full_host + bookmarklet.producer.path
|
43
|
+
|
44
|
+
// here we put the main code, in this case we expose an ajax endpoint
|
45
|
+
xhr = new easyXDM.Rpc({
|
46
|
+
remote: dest,
|
47
|
+
container: easymarkletDiv,
|
48
|
+
onReady: function(){
|
49
|
+
//xhr.post("example/glossary.php", {
|
50
|
+
// param1: "a",
|
51
|
+
// param2: "b"
|
52
|
+
//}, function(json){
|
53
|
+
// alert(json.glossary.title);
|
54
|
+
//});
|
55
|
+
}
|
56
|
+
}, _this.createRpcConfig() /*{
|
57
|
+
remote: {
|
58
|
+
|
59
|
+
post: {}
|
60
|
+
},
|
61
|
+
local : {
|
62
|
+
alertMessage: {
|
63
|
+
method : function(msg){
|
64
|
+
alert(msg);
|
65
|
+
}
|
66
|
+
},
|
67
|
+
closeFrame: {
|
68
|
+
method : function(){
|
69
|
+
//alert('closing!');
|
70
|
+
var cdiv = document.getElementById('bookmarklet_div');
|
71
|
+
cdiv.parentNode.removeChild(cdiv);
|
72
|
+
}
|
73
|
+
},
|
74
|
+
resizeFrame : {
|
75
|
+
method : function(height){
|
76
|
+
//console.log("resizing outter frame : " + height);
|
77
|
+
var cdiv = document.getElementById('bookmarklet_div');
|
78
|
+
//console.log(cdiv);
|
79
|
+
//console.log(cdiv.style)
|
80
|
+
cdiv.style.height = height + "px";
|
81
|
+
cdiv.getElementsByTagName("iframe")[0].style.height = height + "px";
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
}*/
|
86
|
+
);
|
87
|
+
}
|
88
|
+
|
89
|
+
this.loadEasyXdmLib = function(){
|
90
|
+
// load easyXDM
|
91
|
+
s1 = document.createElement("script");
|
92
|
+
s1.type = "text/javascript";
|
93
|
+
s1.src = full_host + "/assets/easyXDM.js";
|
94
|
+
s1.onreadystatechange = function(){
|
95
|
+
if (this.readyState === "complete" || this.readyState === "loaded") {
|
96
|
+
scriptOnLoad();
|
97
|
+
}
|
98
|
+
};
|
99
|
+
s1.onload = scriptOnLoad;
|
100
|
+
head.appendChild(s1);
|
101
|
+
}
|
102
|
+
|
103
|
+
this.loadJsonLib = function(){
|
104
|
+
// load JSON if needed
|
105
|
+
if (typeof JSON === "undefined" || !JSON) {
|
106
|
+
s2 = document.createElement("script");
|
107
|
+
s2.type = "text/javascript";
|
108
|
+
s2.src = full_host + "/assets/json2.js";
|
109
|
+
s2.onreadystatechange = function(){
|
110
|
+
if (this.readyState === "complete" || this.readyState === "loaded") {
|
111
|
+
scriptOnLoad();
|
112
|
+
}
|
113
|
+
};
|
114
|
+
s2.onload = scriptOnLoad;
|
115
|
+
head.appendChild(s2);
|
116
|
+
}
|
117
|
+
}
|
118
|
+
|
119
|
+
this.loadCss = function(){
|
120
|
+
//Load the css
|
121
|
+
bookmarklet.consumer.css = [].concat(bookmarklet.consumer.css)
|
122
|
+
for(var i = 0; i<bookmarklet.consumer.css.length; i++){
|
123
|
+
var src = bookmarklet.consumer.css[i]
|
124
|
+
var css = document.createElement('LINK');
|
125
|
+
css.href = full_host + src;
|
126
|
+
css.type = 'text/css';
|
127
|
+
css.media = 'screen';
|
128
|
+
css.rel = 'stylesheet';
|
129
|
+
head.appendChild(css);
|
130
|
+
}
|
131
|
+
}
|
132
|
+
|
133
|
+
this.init = function(){
|
134
|
+
this.loadEasyXdmLib();
|
135
|
+
this.loadJsonLib();
|
136
|
+
this.loadCss();
|
137
|
+
}
|
138
|
+
|
139
|
+
this.createRpcConfig = function(){
|
140
|
+
var rpcConfig = {};
|
141
|
+
|
142
|
+
rpcConfig.local = {};
|
143
|
+
for (var key in bookmarklet.consumer.methods) {
|
144
|
+
if (bookmarklet.consumer.methods.hasOwnProperty(key)) {
|
145
|
+
//console.log(key);
|
146
|
+
rpcConfig.local[key] = bookmarklet.consumer.methods[key];
|
147
|
+
}
|
148
|
+
}
|
149
|
+
rpcConfig.local.closeFrame = this.closeFrame;
|
150
|
+
|
151
|
+
rpcConfig.remote = {};
|
152
|
+
for (var key in bookmarklet.producer.methods) {
|
153
|
+
if (bookmarklet.producer.methods.hasOwnProperty(key)) {
|
154
|
+
//console.log(key);
|
155
|
+
rpcConfig.remote[key] = {}; //We just stub these since they're not called on this side
|
156
|
+
}
|
157
|
+
}
|
158
|
+
|
159
|
+
return rpcConfig;
|
160
|
+
}
|
161
|
+
|
162
|
+
this.closeFrame = function(){
|
163
|
+
if(easymarkletDiv){
|
164
|
+
easymarkletDiv.parentNode.removeChild(easymarkletDiv)
|
165
|
+
}
|
166
|
+
}
|
167
|
+
|
168
|
+
this.resizeFrame = function(height){
|
169
|
+
easymarkletDiv.style.height = height + "px";
|
170
|
+
easymarkletDiv.getElementsByTagName("iframe")[0].style.height = height + "px";
|
171
|
+
}
|
172
|
+
|
173
|
+
} // Easymarklet.Consumer = function(){
|
174
|
+
|
175
|
+
|
176
|
+
// Now expose the Easymarklet to the global object
|
177
|
+
window.Easymarklet = Easymarklet;
|
178
|
+
|
179
|
+
|
180
|
+
})();
|
181
|
+
|
@@ -0,0 +1,69 @@
|
|
1
|
+
(function(){
|
2
|
+
|
3
|
+
var Easymarklet = window.Easymarklet || {}
|
4
|
+
|
5
|
+
Easymarklet.Producer = function(bookmarklet){
|
6
|
+
if(bookmarklet == null){ alert('You must pass a bookmarklet to Easymarklet.Producer.'); return;}
|
7
|
+
if(bookmarklet.consumer == null){ alert('Your bookmarklet definition is missing a consumer.'); return; }
|
8
|
+
if(bookmarklet.producer == null){ alert('Your bookmarklet definition is missing a producer.'); return; }
|
9
|
+
|
10
|
+
var _this = this;
|
11
|
+
_this.consumer = null;
|
12
|
+
//console.log('Easymarklet.Producert : init');
|
13
|
+
|
14
|
+
this.init = function(){
|
15
|
+
_this.createRpcChannel();
|
16
|
+
}
|
17
|
+
|
18
|
+
this.createRpcConfig = function(){
|
19
|
+
var rpcConfig = {};
|
20
|
+
|
21
|
+
rpcConfig.remote = {};
|
22
|
+
for (var key in bookmarklet.consumer.methods) {
|
23
|
+
if (bookmarklet.consumer.methods.hasOwnProperty(key)) {
|
24
|
+
//console.log(key);
|
25
|
+
rpcConfig.remote[key] = bookmarklet.consumer.methods[key];
|
26
|
+
_this[key]
|
27
|
+
}
|
28
|
+
}
|
29
|
+
rpcConfig.remote.closeFrame = {};
|
30
|
+
_this.closeFrame = function(){ _this.consumer.closeFrame() };
|
31
|
+
|
32
|
+
rpcConfig.local = {};
|
33
|
+
for (var key in bookmarklet.producer.methods) {
|
34
|
+
if (bookmarklet.producer.methods.hasOwnProperty(key)) {
|
35
|
+
//console.log(key);
|
36
|
+
rpcConfig.local[key] = {}; //We just stub these since they're not called on this side
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
return rpcConfig;
|
41
|
+
}
|
42
|
+
|
43
|
+
this.createRpcChannel = function(){
|
44
|
+
_this.consumer = new easyXDM.Rpc(
|
45
|
+
/** The channel configuration*/
|
46
|
+
{
|
47
|
+
local: "/assets/cors/index.html",
|
48
|
+
swf: "/assets/easyxdm.swf",
|
49
|
+
onReady: function(){
|
50
|
+
//console.log("calling the remote test....");
|
51
|
+
//Cicero.EasymarkletFrame.remote.alertMessage("just a test...");
|
52
|
+
}
|
53
|
+
}, _this.createRpcConfig()
|
54
|
+
);
|
55
|
+
}
|
56
|
+
|
57
|
+
this.call = function(func){
|
58
|
+
_this.consumer[func]();
|
59
|
+
}
|
60
|
+
|
61
|
+
} // Easymarklet.Producer = function(){
|
62
|
+
|
63
|
+
|
64
|
+
// Now expose the Easymarklet to the global object
|
65
|
+
window.Easymarklet = Easymarklet;
|
66
|
+
|
67
|
+
})();
|
68
|
+
|
69
|
+
|
@@ -0,0 +1,5 @@
|
|
1
|
+
if Rails.env.test? || Rails.env.development?
|
2
|
+
Rails.application.config.assets.paths << Easymarklet::Engine.root.join("spec", "javascripts") << Easymarklet::Engine.root.join("spec", "stylesheets")
|
3
|
+
# Add engine to view path so that spec/javascripts/fixtures are accessible
|
4
|
+
ActionController::Base.prepend_view_path Easymarklet::Engine.root
|
5
|
+
end
|
data/config/routes.rb
ADDED
data/lib/easymarklet.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
Description:
|
2
|
+
Generate a simple (non-xdm) bookmarklet.
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate easymarklet:simple foobaz
|
6
|
+
|
7
|
+
This will create:
|
8
|
+
app/assets/javascripts/foobaz_bookmarklet.js
|
9
|
+
|
10
|
+
Then you could link to it with:
|
11
|
+
<%= link_to "FooBaz Simple", easymarklet_js('foobaz_bookmarklet.js') %>
|
12
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Easymarklet
|
2
|
+
class SimpleGenerator < Rails::Generators::NamedBase
|
3
|
+
source_root File.expand_path('../templates', __FILE__)
|
4
|
+
|
5
|
+
def copy_js_file
|
6
|
+
copy_file "simple_bookmarklet.js", "app/assets/javascripts/#{file_name}_bookmarklet.js"
|
7
|
+
end
|
8
|
+
|
9
|
+
def display_msg
|
10
|
+
puts ""
|
11
|
+
puts "You can link to your new bookmarklet with this :"
|
12
|
+
puts ""
|
13
|
+
puts "<%= link_to '#{file_name.titleize}', easymarklet_js('#{file_name}_bookmarklet.js') %>"
|
14
|
+
puts ""
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Description:
|
2
|
+
Generate a new xdm bookmarklet.
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate easymarklet:xdm foobaz
|
6
|
+
|
7
|
+
This will create:
|
8
|
+
app/assets/javascripts/foobaz_bookmarklet.js
|
9
|
+
app/assets/javascripts/foobaz_consumer.js
|
10
|
+
app/assets/javascripts/foobaz_producer.js
|
11
|
+
|
12
|
+
|
13
|
+
Then you could link to it with:
|
14
|
+
<%= link_to "FooBaz XDM", easymarklet_js('foobaz_consumer.js') %>
|
15
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
(function(){
|
2
|
+
|
3
|
+
var <%= name.titleize %>Bookmarklet = {
|
4
|
+
|
5
|
+
visible : true,
|
6
|
+
consumer : {
|
7
|
+
css : [], // could be an array or a string
|
8
|
+
methods : { // The methods that the producer can call
|
9
|
+
|
10
|
+
}
|
11
|
+
},
|
12
|
+
producer : {
|
13
|
+
path : "/<%= name %>_producer", // The path on your app that provides your data service
|
14
|
+
methods : { // The methods that the consumer can call
|
15
|
+
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
window.<%= name.titleize %>Bookmarklet = <%= name.titleize %>Bookmarklet;
|
21
|
+
|
22
|
+
})();
|
23
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Easymarklet
|
2
|
+
class XdmGenerator < Rails::Generators::NamedBase
|
3
|
+
source_root File.expand_path('../templates', __FILE__)
|
4
|
+
|
5
|
+
def copy_js_file
|
6
|
+
template "xdm_bookmarklet.js", "app/assets/javascripts/#{file_name}_bookmarklet.js"
|
7
|
+
template "xdm_consumer.js", "app/assets/javascripts/#{file_name}_consumer.js"
|
8
|
+
template "xdm_producer.js", "app/assets/javascripts/#{file_name}_producer.js"
|
9
|
+
end
|
10
|
+
|
11
|
+
def display_msg
|
12
|
+
puts ""
|
13
|
+
puts "You can link to your new bookmarklet with this :"
|
14
|
+
puts ""
|
15
|
+
puts "<%= link_to '#{file_name.titleize}', bookmarklet_js('#{file_name}_consumer.js') %>"
|
16
|
+
puts ""
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: easymarklet
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jeremy Green
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-06 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.2.8
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.2.8
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: easyxdm-rails
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.0.5
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.0.5
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: sqlite3
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec-rails
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: capybara
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: capybara-webkit
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: guard-rspec
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: guard-spork
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: jasminerice
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
description: The easiest way to create bookmarklets in your rails app.
|
159
|
+
email:
|
160
|
+
- jeremy@octolabs.com
|
161
|
+
executables: []
|
162
|
+
extensions: []
|
163
|
+
extra_rdoc_files: []
|
164
|
+
files:
|
165
|
+
- app/assets/javascripts/easymarklet/consumer.js.erb
|
166
|
+
- app/assets/javascripts/easymarklet/producer.js.erb
|
167
|
+
- app/helpers/easymarklet/link_helper.rb
|
168
|
+
- config/initializers/jasminerice.rb
|
169
|
+
- config/routes.rb
|
170
|
+
- lib/easymarklet/engine.rb
|
171
|
+
- lib/easymarklet/version.rb
|
172
|
+
- lib/easymarklet.rb
|
173
|
+
- lib/generators/easymarklet/simple/simple_generator.rb
|
174
|
+
- lib/generators/easymarklet/simple/templates/simple_bookmarklet.js
|
175
|
+
- lib/generators/easymarklet/simple/USAGE
|
176
|
+
- lib/generators/easymarklet/xdm/templates/xdm_bookmarklet.js
|
177
|
+
- lib/generators/easymarklet/xdm/templates/xdm_consumer.js
|
178
|
+
- lib/generators/easymarklet/xdm/templates/xdm_producer.js
|
179
|
+
- lib/generators/easymarklet/xdm/USAGE
|
180
|
+
- lib/generators/easymarklet/xdm/xdm_generator.rb
|
181
|
+
- lib/tasks/easymarklet_tasks.rake
|
182
|
+
- MIT-LICENSE
|
183
|
+
- Rakefile
|
184
|
+
- README.md
|
185
|
+
homepage: https://github.com/Octo-Labs/easymarklet
|
186
|
+
licenses: []
|
187
|
+
post_install_message:
|
188
|
+
rdoc_options: []
|
189
|
+
require_paths:
|
190
|
+
- lib
|
191
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
192
|
+
none: false
|
193
|
+
requirements:
|
194
|
+
- - ! '>='
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
segments:
|
198
|
+
- 0
|
199
|
+
hash: -4490360310275386110
|
200
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
|
+
segments:
|
207
|
+
- 0
|
208
|
+
hash: -4490360310275386110
|
209
|
+
requirements: []
|
210
|
+
rubyforge_project:
|
211
|
+
rubygems_version: 1.8.24
|
212
|
+
signing_key:
|
213
|
+
specification_version: 3
|
214
|
+
summary: The easiest way to create bookmarklets in your rails app.
|
215
|
+
test_files: []
|