tay 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.
- data/.gitignore +2 -0
- data/README.md +14 -3
- data/Rakefile +22 -0
- data/lib/tay/cli/generate.rb +44 -0
- data/lib/tay/cli/generators/browser_action.rb +3 -1
- data/lib/tay/cli/generators/content_script.rb +0 -13
- data/lib/tay/cli/generators/options_page.rb +17 -0
- data/lib/tay/cli/generators/templates/browser_action/action.html.haml +8 -0
- data/lib/tay/cli/generators/templates/browser_action/action.js.coffee +6 -0
- data/lib/tay/cli/generators/templates/content_script/content_script.js.coffee +2 -0
- data/lib/tay/cli/generators/templates/options_page/options.js.coffee +33 -0
- data/lib/tay/cli/generators/templates/options_page/options_page.css +55 -0
- data/lib/tay/cli/generators/templates/options_page/options_page.html.haml +38 -0
- data/lib/tay/cli/generators/templates/options_page/options_page.js.coffee +57 -0
- data/lib/tay/cli/generators/templates/options_page/options_server.js.coffee +26 -0
- data/lib/tay/cli/generators/templates/options_page/tayfile +5 -0
- data/lib/tay/cli/generators/templates/page_action/controller.js.coffee +5 -0
- data/lib/tay/cli/helpers.rb +12 -0
- data/lib/tay/version.rb +1 -1
- data/tay.gemspec +3 -0
- metadata +63 -8
- data/lib/tay/cli/generators/templates/browser_action/action.html +0 -11
- data/lib/tay/cli/generators/templates/browser_action/action.js +0 -5
- data/lib/tay/cli/generators/templates/content_script/content_script.js +0 -4
- data/lib/tay/cli/generators/templates/page_action/controller.js +0 -7
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -2,10 +2,22 @@
|
|
2
2
|
|
3
3
|
Tay is designed to help you swiftly write Google Chrome extensions using your favourite languages and tools.
|
4
4
|
|
5
|
+
## Quickstart
|
6
|
+
|
7
|
+
$ gem install tay
|
8
|
+
$ tay new my_extension
|
9
|
+
$ cd my_extension
|
10
|
+
$ tay generate browser_action
|
11
|
+
$ tay build
|
12
|
+
|
13
|
+
Now go and load your extension in Chrome and look in the top right for the puzzle piece!
|
14
|
+
|
5
15
|
## Installation
|
6
16
|
|
7
17
|
$ gem install tay
|
8
18
|
|
19
|
+
If installing the gem from source, be sure to run `rake build_generators` first!
|
20
|
+
|
9
21
|
## Usage
|
10
22
|
|
11
23
|
Tay helps create, bootstrap, develop and publish Chrome extentions. It all works through the `tay` command. Running `tay` alone will show you a list of commands.
|
@@ -71,7 +83,7 @@ To build the extension, run `tay build`. Source files will be compiled and writt
|
|
71
83
|
|
72
84
|
If you run `tay watch` in the top level directory, tay will automatically build whenever a change is detected in the `src` directory *(you still need to go and reload the unpacked extension in Chrome)*.
|
73
85
|
|
74
|
-
To use `tay watch` you'll need to add the
|
86
|
+
To use `tay watch` you'll need to add the [guard-tay](http://github.com/rixth/guard-tay) gem to your Gemfile and run `bundle install`. If you want to customize the directories that are watched for changes, you can generate a [Guardfile](http://github.com/guard/guard) by running `guard init tay`.
|
75
87
|
|
76
88
|
Usage:
|
77
89
|
tay watch
|
@@ -85,7 +97,7 @@ To use `tay watch` you'll need to add the `[guard-tay](http://github.com/rixth/g
|
|
85
97
|
|
86
98
|
### Minifying
|
87
99
|
|
88
|
-
If you have the
|
100
|
+
If you have the [uglifier](https://github.com/lautis/uglifier) and/or [yui-compressor](https://github.com/sstephenson/ruby-yui-compressor) gems in your Gemfile, you will be able to minify the JS and CSS in a built extension.
|
89
101
|
|
90
102
|
Usage:
|
91
103
|
tay minify
|
@@ -130,6 +142,5 @@ The filename of the key can be specified using by setting `key_path` in the Tayf
|
|
130
142
|
|
131
143
|
## TODO
|
132
144
|
|
133
|
-
* Generators that can also make haml/coffeescript
|
134
145
|
* Localization of extensions
|
135
146
|
* Generator for extension option pages
|
data/Rakefile
CHANGED
@@ -1,6 +1,28 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require "bundler/gem_tasks"
|
3
3
|
|
4
|
+
task :build_generators do
|
5
|
+
require 'tilt'
|
6
|
+
require 'haml'
|
7
|
+
require 'coffee-script'
|
8
|
+
|
9
|
+
templates_dir = Pathname.new('lib//tay/cli/generators/templates').expand_path(File.dirname(__FILE__))
|
10
|
+
Dir[templates_dir.join('**/*.coffee')].each do |cs_path|
|
11
|
+
File.open(cs_path.sub(/\.coffee/, ''), 'w') do |f|
|
12
|
+
f.write Tilt.new(cs_path).render
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Dir[templates_dir.join('**/*.haml')].each do |haml_path|
|
17
|
+
File.open(haml_path.sub(/\.haml/, ''), 'w') do |f|
|
18
|
+
html = Tilt.new(haml_path).render
|
19
|
+
# We need to fix the ERB tags which have been encoded
|
20
|
+
html = html.gsub(/%>/, '%>').gsub(/<%/, '<%')
|
21
|
+
f.write html
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
4
26
|
task :doc do
|
5
27
|
`sdoc`
|
6
28
|
end
|
data/lib/tay/cli/generate.rb
CHANGED
@@ -16,6 +16,7 @@ module Tay
|
|
16
16
|
require 'tay/cli/generators/page_action'
|
17
17
|
require 'tay/cli/generators/browser_action'
|
18
18
|
require 'tay/cli/generators/content_script'
|
19
|
+
require 'tay/cli/generators/options_page'
|
19
20
|
|
20
21
|
protected
|
21
22
|
|
@@ -33,12 +34,55 @@ module Tay
|
|
33
34
|
# Render a template in the context of self and return its contents
|
34
35
|
# Thor does not provide a way to do this.
|
35
36
|
def render_template(path, locals = {})
|
37
|
+
path = path.to_s
|
38
|
+
|
39
|
+
# Try to use a haml file path if available
|
40
|
+
if path[/\.html$/] && using_haml?
|
41
|
+
begin
|
42
|
+
if find_in_source_paths(path + '.haml')
|
43
|
+
path = path + '.haml'
|
44
|
+
end
|
45
|
+
rescue Exception
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
36
49
|
tayfile_template = Tilt::ERBTemplate.new(find_in_source_paths(path), {
|
37
50
|
:trim => '-'
|
38
51
|
})
|
39
52
|
tayfile_template.render(self, locals)
|
40
53
|
end
|
41
54
|
|
55
|
+
##
|
56
|
+
# Automatically use the coffeescript/haml templates when copying a file
|
57
|
+
# if the user has the gems in their gemfile
|
58
|
+
def copy_file(from, to)
|
59
|
+
from = from.to_s
|
60
|
+
to = to.to_s
|
61
|
+
|
62
|
+
if from[/\.js$/] && using_coffeescript?
|
63
|
+
from = from + '.coffee'
|
64
|
+
to = to + '.coffee'
|
65
|
+
end
|
66
|
+
|
67
|
+
if from[/\.html$/] && using_haml?
|
68
|
+
from = from + '.haml'
|
69
|
+
to = to + '.haml'
|
70
|
+
end
|
71
|
+
|
72
|
+
super(from, to)
|
73
|
+
end
|
74
|
+
|
75
|
+
##
|
76
|
+
# Create a file, tacking on .haml if we're using it
|
77
|
+
def create_file(path, content, *args)
|
78
|
+
path = path.to_s
|
79
|
+
if path[/\.html$/] && using_haml?
|
80
|
+
path = path + '.haml'
|
81
|
+
end
|
82
|
+
|
83
|
+
super
|
84
|
+
end
|
85
|
+
|
42
86
|
##
|
43
87
|
# Get path to src/assets
|
44
88
|
def asset_dir
|
@@ -12,7 +12,9 @@ module Tay
|
|
12
12
|
fs_name = Utils.filesystem_name(options['action-name'])
|
13
13
|
copy_file('browser_action/action.js', javascript_dir.join(fs_name+ '.js'))
|
14
14
|
copy_file('browser_action/action.css', stylesheet_dir.join(fs_name+ '.css'))
|
15
|
-
|
15
|
+
|
16
|
+
create_file(html_dir.join(fs_name + '.html'), render_template('browser_action/action.html', :fs_name => fs_name))
|
17
|
+
|
16
18
|
inject_tayfile_content(render_template('browser_action/tayfile', :fs_name => fs_name))
|
17
19
|
end
|
18
20
|
end
|
@@ -1,16 +1,3 @@
|
|
1
|
-
module Tay
|
2
|
-
module CLI
|
3
|
-
class Generate < ::Thor
|
4
|
-
desc "content_script", "Generate a content script"
|
5
|
-
def content_script
|
6
|
-
copy_file('content_script/content_script.js', javascript_dir.join('content_script.js'))
|
7
|
-
copy_file('content_script/content_script.css', stylesheet_dir.join('content_script.css'))
|
8
|
-
inject_tayfile_content(File.read(find_in_source_paths('content_script/tayfile_content')))
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
1
|
module Tay
|
15
2
|
module CLI
|
16
3
|
class Generate < ::Thor
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Tay
|
2
|
+
module CLI
|
3
|
+
class Generate < ::Thor
|
4
|
+
desc "options_page", "Generate an options page"
|
5
|
+
def options_page
|
6
|
+
copy_file('options_page/options.js', javascript_dir.join('options.js'))
|
7
|
+
copy_file('options_page/options_page.js', javascript_dir.join('options_page.js'))
|
8
|
+
copy_file('options_page/options_server.js', javascript_dir.join('options_server.js'))
|
9
|
+
copy_file('options_page/options_page.css', stylesheet_dir.join('options_page.css'))
|
10
|
+
|
11
|
+
create_file(html_dir.join('options_page.html'), render_template('options_page/options_page.html'))
|
12
|
+
|
13
|
+
inject_tayfile_content(render_template('options_page/tayfile'))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class OptionStore
|
2
|
+
get: (key, callback) ->
|
3
|
+
callback = key if typeof(key) == 'function'
|
4
|
+
|
5
|
+
if !key or key == callback
|
6
|
+
chrome.extension.sendRequest {method: "options.getAll"}, (@options) =>
|
7
|
+
@optionsLoaded = true
|
8
|
+
callback(options) if callback
|
9
|
+
else if @optionsLoaded
|
10
|
+
callback @options[key]
|
11
|
+
else
|
12
|
+
@get =>
|
13
|
+
callback(@options[key])
|
14
|
+
|
15
|
+
setAll: (options) ->
|
16
|
+
chrome.extension.sendRequest {
|
17
|
+
method: "options.setAll",
|
18
|
+
options: options
|
19
|
+
}
|
20
|
+
|
21
|
+
set: (key, value) ->
|
22
|
+
if typeof(key) == 'object'
|
23
|
+
attrs = key
|
24
|
+
else
|
25
|
+
attrs = {}
|
26
|
+
attrs[key] = value
|
27
|
+
|
28
|
+
chrome.extension.sendRequest {
|
29
|
+
method: "options.setMany",
|
30
|
+
options: attrs
|
31
|
+
}
|
32
|
+
|
33
|
+
this.optionStore = new OptionStore
|
@@ -0,0 +1,55 @@
|
|
1
|
+
body {
|
2
|
+
background: #f9f9f9;
|
3
|
+
padding: 20px;
|
4
|
+
font-size: 75%;
|
5
|
+
color: #222;
|
6
|
+
font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
|
7
|
+
}
|
8
|
+
|
9
|
+
ul {
|
10
|
+
list-style: none;
|
11
|
+
margin: 0;
|
12
|
+
padding: 0;
|
13
|
+
}
|
14
|
+
|
15
|
+
a {
|
16
|
+
color: #0054A6;
|
17
|
+
}
|
18
|
+
a:hover {
|
19
|
+
color: #590;
|
20
|
+
cursor: pointer;
|
21
|
+
}
|
22
|
+
|
23
|
+
.module {
|
24
|
+
padding: 0;
|
25
|
+
border: 1px solid #ccc;
|
26
|
+
border-radius: 5px;
|
27
|
+
background: white;
|
28
|
+
box-shadow: 0px 0px 3px rgba(0,0,0,0.1);
|
29
|
+
margin: 0 auto;
|
30
|
+
width: 300px;
|
31
|
+
}
|
32
|
+
.module>.content {
|
33
|
+
padding: 10px;
|
34
|
+
}
|
35
|
+
.module .bottom{
|
36
|
+
background-color: #eee;
|
37
|
+
border-top: 1px solid #d2d2d2;
|
38
|
+
padding: 10px 15px;
|
39
|
+
font-weight: bold;
|
40
|
+
overflow: hidden;
|
41
|
+
border-bottom-left-radius: 5px;
|
42
|
+
border-bottom-right-radius: 5px;
|
43
|
+
box-shadow: inset 0px 0px 0px 1px #fff;
|
44
|
+
}
|
45
|
+
.module>h1 {
|
46
|
+
font-size: 18px;
|
47
|
+
font-weight: bold;
|
48
|
+
margin: 10px 10px 0 10px;
|
49
|
+
padding: 0 0 10px 0;
|
50
|
+
}
|
51
|
+
.module>h1>img {
|
52
|
+
display:inline-block;
|
53
|
+
vertical-align:-15px;
|
54
|
+
margin-right:7px
|
55
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
!!!5
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%title Options
|
5
|
+
%link{rel: "stylesheet", type: "text/css", href: "/stylesheets/options_page.css"}
|
6
|
+
%body
|
7
|
+
.module
|
8
|
+
%h1
|
9
|
+
Options
|
10
|
+
.content
|
11
|
+
%form#options
|
12
|
+
%ul
|
13
|
+
%li
|
14
|
+
%label
|
15
|
+
A boolean option
|
16
|
+
%input{type: "checkbox", name: "boolean_option"}
|
17
|
+
%li
|
18
|
+
%label
|
19
|
+
A text option
|
20
|
+
%input{type: "text", name: "string_option"}
|
21
|
+
%li
|
22
|
+
%label
|
23
|
+
A select option
|
24
|
+
%select{name: "select_option"}
|
25
|
+
%option{value: "1"} One
|
26
|
+
%option{value: "2"} Two
|
27
|
+
%option{value: "3"} Three
|
28
|
+
%li
|
29
|
+
%label
|
30
|
+
Radio option
|
31
|
+
%input{type: "radio", name: "radio_option", value: "a"} A
|
32
|
+
%input{type: "radio", name: "radio_option", value: "b"} B
|
33
|
+
%input{type: "radio", name: "radio_option", value: "c"} C
|
34
|
+
|
35
|
+
.bottom
|
36
|
+
%a#saveSettings Save your settings
|
37
|
+
%script{src: "/javascripts/options.js"}
|
38
|
+
%script{src: "/javascripts/options_page.js"}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
setValueOnInput = (name, value) ->
|
2
|
+
inputs = document.querySelectorAll("form#options *[name='#{name}']")
|
3
|
+
input = inputs[0]
|
4
|
+
|
5
|
+
if input.tagName == 'INPUT'
|
6
|
+
if input.type == 'checkbox'
|
7
|
+
input.checked = true if value
|
8
|
+
else if input.type == 'radio'
|
9
|
+
Array.prototype.slice.call(inputs,0).some (radio) ->
|
10
|
+
if radio.value == value
|
11
|
+
radio.checked = true if value
|
12
|
+
true
|
13
|
+
else
|
14
|
+
input.value = value
|
15
|
+
else if input.tagName == 'SELECT'
|
16
|
+
for option in input.options
|
17
|
+
option.selected = true if option.value == value
|
18
|
+
else if input.tagName = 'TEXTAREA'
|
19
|
+
input.value = value
|
20
|
+
|
21
|
+
getOptionValuesFromForm = ->
|
22
|
+
inputs = document.querySelectorAll("form#options *[name]")
|
23
|
+
values = {}
|
24
|
+
for input in inputs
|
25
|
+
name = input.name
|
26
|
+
|
27
|
+
if input.tagName == 'INPUT'
|
28
|
+
if input.type == 'checkbox'
|
29
|
+
values[name] = (input.value || "checked") if input.checked
|
30
|
+
else if input.type == 'radio'
|
31
|
+
if Object.keys(values).indexOf input.name > -1
|
32
|
+
radios = document.querySelectorAll("form#options input[type='radio'][name='#{name}']")
|
33
|
+
for radio in radios
|
34
|
+
values[name] = radio.value if radio.checked
|
35
|
+
else
|
36
|
+
values[name] = input.value
|
37
|
+
else if input.tagName == 'SELECT'
|
38
|
+
for option in input.options
|
39
|
+
values[name] = option.value if option.selected
|
40
|
+
else if input.tagName = 'TEXTAREA'
|
41
|
+
input.value = value
|
42
|
+
values
|
43
|
+
|
44
|
+
###
|
45
|
+
Load the options from the backend and load them in to the form
|
46
|
+
###
|
47
|
+
optionStore.get (options) ->
|
48
|
+
Object.keys(options).forEach (name) ->
|
49
|
+
setValueOnInput(name, options[name])
|
50
|
+
|
51
|
+
###
|
52
|
+
Take the values from the form and save them to the data store
|
53
|
+
###
|
54
|
+
document.getElementById('saveSettings').addEventListener 'click', (event) ->
|
55
|
+
optionStore.setAll getOptionValuesFromForm()
|
56
|
+
event.preventDefault()
|
57
|
+
, false
|
@@ -0,0 +1,26 @@
|
|
1
|
+
defaultOptions =
|
2
|
+
boolean_option: true
|
3
|
+
string_option: "@rx"
|
4
|
+
select_option: "2"
|
5
|
+
radio_option: "b"
|
6
|
+
|
7
|
+
extendObject = (dest, srcs...) ->
|
8
|
+
for src in srcs
|
9
|
+
for name in Object.getOwnPropertyNames(src) when name not in dest
|
10
|
+
dest[name] = src[name]
|
11
|
+
dest
|
12
|
+
|
13
|
+
options = extendObject {}, defaultOptions, JSON.parse(localStorage.getItem('options') || "{}")
|
14
|
+
|
15
|
+
chrome.extension.onRequest.addListener (request, sender, sendResponse) ->
|
16
|
+
return unless /^options\./.test(request.method)
|
17
|
+
|
18
|
+
switch request.method
|
19
|
+
when "options.getAll"
|
20
|
+
sendResponse options
|
21
|
+
when "options.setMany"
|
22
|
+
extendObject options, request.options
|
23
|
+
localStorage.setItem 'options', JSON.stringify(options)
|
24
|
+
when "options.setAll"
|
25
|
+
options = request.options
|
26
|
+
localStorage.setItem 'options', JSON.stringify(options)
|
data/lib/tay/cli/helpers.rb
CHANGED
@@ -47,6 +47,18 @@ module Tay
|
|
47
47
|
def build_dir
|
48
48
|
base_dir.join(options['build-directory'] || 'build')
|
49
49
|
end
|
50
|
+
|
51
|
+
##
|
52
|
+
# Detect if the user has coffee-script in their Gemfile
|
53
|
+
def using_coffeescript?
|
54
|
+
Gem.loaded_specs.keys.include?('coffee-script')
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# Detect if the user has haml in their Gemfile
|
59
|
+
def using_haml?
|
60
|
+
Gem.loaded_specs.keys.include?('haml')
|
61
|
+
end
|
50
62
|
end
|
51
63
|
end
|
52
64
|
end
|
data/lib/tay/version.rb
CHANGED
data/tay.gemspec
CHANGED
@@ -15,6 +15,7 @@ Gem::Specification.new do |gem|
|
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = Tay::VERSION
|
17
17
|
|
18
|
+
gem.add_dependency 'bundler', '>= 1.1.3'
|
18
19
|
gem.add_dependency 'thor', '>= 0.15.2'
|
19
20
|
gem.add_dependency 'tilt', '>= 1.3.3'
|
20
21
|
gem.add_dependency 'sprockets', '>= 2.4.3'
|
@@ -23,4 +24,6 @@ Gem::Specification.new do |gem|
|
|
23
24
|
gem.add_development_dependency 'rspec'
|
24
25
|
gem.add_development_dependency 'sdoc'
|
25
26
|
gem.add_development_dependency 'rake'
|
27
|
+
gem.add_development_dependency 'coffee-script'
|
28
|
+
gem.add_development_dependency 'haml'
|
26
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.1.3
|
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: 1.1.3
|
14
30
|
- !ruby/object:Gem::Dependency
|
15
31
|
name: thor
|
16
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,6 +139,38 @@ dependencies:
|
|
123
139
|
- - ! '>='
|
124
140
|
- !ruby/object:Gem::Version
|
125
141
|
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: coffee-script
|
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
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: haml
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ! '>='
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: '0'
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
126
174
|
description: Tay helps you develop Chrome extensions
|
127
175
|
email:
|
128
176
|
- tom@rixth.org
|
@@ -144,15 +192,22 @@ files:
|
|
144
192
|
- lib/tay/cli/generate.rb
|
145
193
|
- lib/tay/cli/generators/browser_action.rb
|
146
194
|
- lib/tay/cli/generators/content_script.rb
|
195
|
+
- lib/tay/cli/generators/options_page.rb
|
147
196
|
- lib/tay/cli/generators/page_action.rb
|
148
197
|
- lib/tay/cli/generators/templates/browser_action/action.css
|
149
|
-
- lib/tay/cli/generators/templates/browser_action/action.html
|
150
|
-
- lib/tay/cli/generators/templates/browser_action/action.js
|
198
|
+
- lib/tay/cli/generators/templates/browser_action/action.html.haml
|
199
|
+
- lib/tay/cli/generators/templates/browser_action/action.js.coffee
|
151
200
|
- lib/tay/cli/generators/templates/browser_action/tayfile
|
152
201
|
- lib/tay/cli/generators/templates/content_script/content_script.css
|
153
|
-
- lib/tay/cli/generators/templates/content_script/content_script.js
|
202
|
+
- lib/tay/cli/generators/templates/content_script/content_script.js.coffee
|
154
203
|
- lib/tay/cli/generators/templates/content_script/tayfile
|
155
|
-
- lib/tay/cli/generators/templates/
|
204
|
+
- lib/tay/cli/generators/templates/options_page/options.js.coffee
|
205
|
+
- lib/tay/cli/generators/templates/options_page/options_page.css
|
206
|
+
- lib/tay/cli/generators/templates/options_page/options_page.html.haml
|
207
|
+
- lib/tay/cli/generators/templates/options_page/options_page.js.coffee
|
208
|
+
- lib/tay/cli/generators/templates/options_page/options_server.js.coffee
|
209
|
+
- lib/tay/cli/generators/templates/options_page/tayfile
|
210
|
+
- lib/tay/cli/generators/templates/page_action/controller.js.coffee
|
156
211
|
- lib/tay/cli/generators/templates/page_action/icon.png
|
157
212
|
- lib/tay/cli/generators/templates/page_action/tayfile
|
158
213
|
- lib/tay/cli/helpers.rb
|
@@ -194,7 +249,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
194
249
|
version: '0'
|
195
250
|
segments:
|
196
251
|
- 0
|
197
|
-
hash:
|
252
|
+
hash: 1815708585182084014
|
198
253
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
254
|
none: false
|
200
255
|
requirements:
|
@@ -203,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
203
258
|
version: '0'
|
204
259
|
segments:
|
205
260
|
- 0
|
206
|
-
hash:
|
261
|
+
hash: 1815708585182084014
|
207
262
|
requirements: []
|
208
263
|
rubyforge_project:
|
209
264
|
rubygems_version: 1.8.24
|
@@ -1,11 +0,0 @@
|
|
1
|
-
<!doctype html>
|
2
|
-
<html>
|
3
|
-
<head>
|
4
|
-
<title><%= options['action-name'] %></title>
|
5
|
-
<script src="/javascripts/<%= fs_name %>.js"></script>
|
6
|
-
<link rel="stylesheet" type="text/css" href="/stylesheets/<%= fs_name %>.css">
|
7
|
-
</head>
|
8
|
-
<body>
|
9
|
-
<h1>Hello World!</h1>
|
10
|
-
</body>
|
11
|
-
</html>
|