amp-html 0.7.7
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 +7 -0
- data/.github/issue_template.md +16 -0
- data/.github/pull_request_template.md +21 -0
- data/.gitignore +13 -0
- data/.travis.yml +4 -0
- data/CHANGELOG.md +302 -0
- data/CONTRIBUTING.md +1 -0
- data/DEPRECATIONS.md +9 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +162 -0
- data/INSTALL.md +1 -0
- data/LICENSE +21 -0
- data/OWNERS.yaml +1 -0
- data/README.md +192 -0
- data/Rakefile +6 -0
- data/amp-html.gemspec +29 -0
- data/bin/amp-html +4 -0
- data/lib/amp_html.rb +27 -0
- data/lib/amp_html/cli.rb +113 -0
- data/lib/amp_html/components/docs/README.md +101 -0
- data/lib/amp_html/components/docs/ad.md +83 -0
- data/lib/amp_html/components/docs/analytics.md +131 -0
- data/lib/amp_html/components/docs/anim.md +66 -0
- data/lib/amp_html/components/docs/fonts.md +63 -0
- data/lib/amp_html/components/docs/forms.md +79 -0
- data/lib/amp_html/components/docs/iframe.md +62 -0
- data/lib/amp_html/components/docs/javascript.md +71 -0
- data/lib/amp_html/components/docs/lists.md +168 -0
- data/lib/amp_html/components/docs/media.md +52 -0
- data/lib/amp_html/components/docs/mustache.md +46 -0
- data/lib/amp_html/components/docs/notifications.md +0 -0
- data/lib/amp_html/components/docs/schema.md +80 -0
- data/lib/amp_html/components/docs/service_worker.md +60 -0
- data/lib/amp_html/components/docs/social.md +130 -0
- data/lib/amp_html/components/docs/stylesheets.md +50 -0
- data/lib/amp_html/components/help.rb +19 -0
- data/lib/amp_html/components/install.rb +34 -0
- data/lib/amp_html/components/templates/ERROR.md +5 -0
- data/lib/amp_html/components/templates/README.md +12 -0
- data/lib/amp_html/configuration.rb +170 -0
- data/lib/amp_html/configuration/docs/README.md +0 -0
- data/lib/amp_html/configuration/help.rb +11 -0
- data/lib/amp_html/helpers/docs/README.md +98 -0
- data/lib/amp_html/helpers/docs/amp.md +0 -0
- data/lib/amp_html/helpers/docs/amp_ad.md +86 -0
- data/lib/amp_html/helpers/docs/amp_analytics.md +76 -0
- data/lib/amp_html/helpers/docs/amp_anim.md +68 -0
- data/lib/amp_html/helpers/docs/amp_audio.md +54 -0
- data/lib/amp_html/helpers/docs/amp_auto_ads.md +43 -0
- data/lib/amp_html/helpers/docs/amp_close_user_notification_button.md +0 -0
- data/lib/amp_html/helpers/docs/amp_css.md +37 -0
- data/lib/amp_html/helpers/docs/amp_css_link.md +0 -0
- data/lib/amp_html/helpers/docs/amp_custom_ad.md +0 -0
- data/lib/amp_html/helpers/docs/amp_document_link.md +0 -0
- data/lib/amp_html/helpers/docs/amp_embed.md +86 -0
- data/lib/amp_html/helpers/docs/amp_facebook.md +70 -0
- data/lib/amp_html/helpers/docs/amp_fallback.md +47 -0
- data/lib/amp_html/helpers/docs/amp_font.md +0 -0
- data/lib/amp_html/helpers/docs/amp_font_link.md +0 -0
- data/lib/amp_html/helpers/docs/amp_form.md +0 -0
- data/lib/amp_html/helpers/docs/amp_form_response.md +0 -0
- data/lib/amp_html/helpers/docs/amp_gfycat.md +0 -0
- data/lib/amp_html/helpers/docs/amp_global_css.md +0 -0
- data/lib/amp_html/helpers/docs/amp_google_analytics.md +0 -0
- data/lib/amp_html/helpers/docs/amp_google_font.md +0 -0
- data/lib/amp_html/helpers/docs/amp_head.md +0 -0
- data/lib/amp_html/helpers/docs/amp_html_doctype.md +0 -0
- data/lib/amp_html/helpers/docs/amp_iframe.md +0 -0
- data/lib/amp_html/helpers/docs/amp_image.md +0 -0
- data/lib/amp_html/helpers/docs/amp_input.md +0 -0
- data/lib/amp_html/helpers/docs/amp_instagram.md +0 -0
- data/lib/amp_html/helpers/docs/amp_js.md +0 -0
- data/lib/amp_html/helpers/docs/amp_link.md +0 -0
- data/lib/amp_html/helpers/docs/amp_list.md +0 -0
- data/lib/amp_html/helpers/docs/amp_live_list.md +0 -0
- data/lib/amp_html/helpers/docs/amp_live_list_items.md +0 -0
- data/lib/amp_html/helpers/docs/amp_live_list_pagination.md +0 -0
- data/lib/amp_html/helpers/docs/amp_live_list_update.md +0 -0
- data/lib/amp_html/helpers/docs/amp_mustache.md +0 -0
- data/lib/amp_html/helpers/docs/amp_pin_it.md +0 -0
- data/lib/amp_html/helpers/docs/amp_pin_widget.md +0 -0
- data/lib/amp_html/helpers/docs/amp_pinterest_follow.md +0 -0
- data/lib/amp_html/helpers/docs/amp_pixel.md +0 -0
- data/lib/amp_html/helpers/docs/amp_placeholder.md +0 -0
- data/lib/amp_html/helpers/docs/amp_reddit.md +0 -0
- data/lib/amp_html/helpers/docs/amp_resources.md +0 -0
- data/lib/amp_html/helpers/docs/amp_selector.md +0 -0
- data/lib/amp_html/helpers/docs/amp_serviceworker.md +0 -0
- data/lib/amp_html/helpers/docs/amp_social_share.md +0 -0
- data/lib/amp_html/helpers/docs/amp_soundcloud.md +0 -0
- data/lib/amp_html/helpers/docs/amp_twitter.md +0 -0
- data/lib/amp_html/helpers/docs/amp_user_notification.md +0 -0
- data/lib/amp_html/helpers/docs/amp_video.md +0 -0
- data/lib/amp_html/helpers/docs/amp_video_ad.md +0 -0
- data/lib/amp_html/helpers/docs/amp_vine.md +0 -0
- data/lib/amp_html/helpers/docs/amp_youtube.md +0 -0
- data/lib/amp_html/helpers/docs/audio_tag.md +0 -0
- data/lib/amp_html/helpers/docs/canonical_document_link.md +0 -0
- data/lib/amp_html/helpers/docs/form_tag.md +0 -0
- data/lib/amp_html/helpers/docs/image_tag.md +0 -0
- data/lib/amp_html/helpers/docs/input_tag.md +0 -0
- data/lib/amp_html/helpers/docs/javascript_include_tag.md +0 -0
- data/lib/amp_html/helpers/docs/noscript_tag.md +0 -0
- data/lib/amp_html/helpers/docs/schema_tag.md +0 -0
- data/lib/amp_html/helpers/docs/stylesheet_link_tag.md +0 -0
- data/lib/amp_html/helpers/docs/video_tag.md +0 -0
- data/lib/amp_html/helpers/help.rb +23 -0
- data/lib/amp_html/root.rb +7 -0
- data/lib/amp_html/test.rb +169 -0
- data/lib/amp_html/test/help.rb +11 -0
- data/lib/amp_html/test/templates/README.md +43 -0
- data/lib/amp_html/test/templates/css/!important.md +1 -0
- data/lib/amp_html/test/templates/css/-amp-.md +1 -0
- data/lib/amp_html/test/templates/css/-moz-binding.md +1 -0
- data/lib/amp_html/test/templates/css/@import.md +1 -0
- data/lib/amp_html/test/templates/css/behavior.md +1 -0
- data/lib/amp_html/test/templates/css/filter.md +1 -0
- data/lib/amp_html/test/templates/css/i-amp-.md +1 -0
- data/lib/amp_html/test/templates/css/overflow.md +1 -0
- data/lib/amp_html/test/templates/html/applet.md +1 -0
- data/lib/amp_html/test/templates/html/audio.md +1 -0
- data/lib/amp_html/test/templates/html/base.md +1 -0
- data/lib/amp_html/test/templates/html/embed.md +1 -0
- data/lib/amp_html/test/templates/html/frame.md +1 -0
- data/lib/amp_html/test/templates/html/frameset.md +1 -0
- data/lib/amp_html/test/templates/html/http-equiv.md +1 -0
- data/lib/amp_html/test/templates/html/iframe.md +1 -0
- data/lib/amp_html/test/templates/html/img.md +1 -0
- data/lib/amp_html/test/templates/html/javascript_include_tag.md +1 -0
- data/lib/amp_html/test/templates/html/object.md +1 -0
- data/lib/amp_html/test/templates/html/onclick.md +1 -0
- data/lib/amp_html/test/templates/html/onmousehover.md +1 -0
- data/lib/amp_html/test/templates/html/param.md +1 -0
- data/lib/amp_html/test/templates/html/stylesheet_link_tag.md +1 -0
- data/lib/amp_html/test/templates/html/video.md +1 -0
- data/lib/amp_html/test/templates/markup/!doctype.md +1 -0
- data/lib/amp_html/test/templates/markup/amp_document_link.md +1 -0
- data/lib/amp_html/test/templates/markup/amp_head.md +1 -0
- data/lib/amp_html/test/templates/markup/amp_html_doctype.md +1 -0
- data/lib/amp_html/test/templates/markup/canonical_document_link.md +1 -0
- data/lib/amp_html/test/templates/markup/head_body.md +1 -0
- data/lib/amp_html/test/templates/markup/html.md +1 -0
- data/lib/amp_html/test/templates/markup/meta_viewport.md +1 -0
- data/lib/amp_html/validate.rb +46 -0
- data/lib/amp_html/validate/help.rb +11 -0
- data/lib/amp_html/validate/templates/README.md +32 -0
- data/lib/amp_html/version.rb +13 -0
- data/lib/generators/amphtml/assets_generator.rb +31 -0
- data/lib/generators/amphtml/bundle_generator.rb +50 -0
- data/lib/generators/amphtml/components_generator.rb +84 -0
- data/lib/generators/amphtml/helpers_generator.rb +32 -0
- data/lib/generators/amphtml/install_generator.rb +53 -0
- data/lib/generators/amphtml/views_generator.rb +62 -0
- data/lib/generators/templates/assets/README.md +0 -0
- data/lib/generators/templates/assets/stylesheets/application.scss +15 -0
- data/lib/generators/templates/components/README.md +0 -0
- data/lib/generators/templates/components/assets/javascripts/application.js +15 -0
- data/lib/generators/templates/components/helpers/ad_tag_helper.rb +83 -0
- data/lib/generators/templates/components/helpers/analytics_tag_helper.rb +30 -0
- data/lib/generators/templates/components/helpers/anim_tag_helper.rb +42 -0
- data/lib/generators/templates/components/helpers/iframe_tag_helper.rb +27 -0
- data/lib/generators/templates/components/helpers/javascript_tag_helper.rb +12 -0
- data/lib/generators/templates/components/helpers/lists_tag_helper.rb +82 -0
- data/lib/generators/templates/components/helpers/notification_tag_helper.rb +16 -0
- data/lib/generators/templates/components/helpers/serviceworker_tag_helper.rb +15 -0
- data/lib/generators/templates/components/helpers/social_tag_helper.rb +228 -0
- data/lib/generators/templates/components/public/remote.html +28 -0
- data/lib/generators/templates/components/views/_components.html.erb +141 -0
- data/lib/generators/templates/components/views/_google_analytics.html.erb +23 -0
- data/lib/generators/templates/helpers/README.md +1 -0
- data/lib/generators/templates/helpers/amp/fallback_tag_helper.rb +16 -0
- data/lib/generators/templates/helpers/amp/font_tag_helper.rb +37 -0
- data/lib/generators/templates/helpers/amp/link_tag_helper.rb +11 -0
- data/lib/generators/templates/helpers/amp/mustache_tag_helper.rb +13 -0
- data/lib/generators/templates/helpers/amp/noscript_tag_helper.rb +13 -0
- data/lib/generators/templates/helpers/amp/placeholder_tag_helper.rb +16 -0
- data/lib/generators/templates/helpers/amp/schema_tag_helper.rb +16 -0
- data/lib/generators/templates/helpers/amp/stylesheets_tag_helper.rb +21 -0
- data/lib/generators/templates/helpers/amp_tag_helper.rb.erb +65 -0
- data/lib/generators/templates/helpers/asset_tag_helper.rb.erb +119 -0
- data/lib/generators/templates/helpers/form_tag_helper.rb.erb +79 -0
- data/lib/generators/templates/install/README.md +1 -0
- data/lib/generators/templates/install/amphtml.rb.erb +19 -0
- data/lib/generators/templates/install/amphtml.yml.erb +189 -0
- data/lib/generators/templates/views/README.md +1 -0
- data/lib/generators/templates/views/application.html.erb +71 -0
- data/lib/generators/templates/views/application/_head.html.erb +47 -0
- data/lib/generators/templates/views/application/_resources.html.erb +16 -0
- data/lib/generators/templates/views/application/_schema.html.erb +6 -0
- data/lib/generators/templates/views/config/mime_types.rb +8 -0
- metadata +294 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: CSS ERROR (AMP): Usage of the `!important` qualifier is not allowed with AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: CSS ERROR (AMP): `-amp-` is reserved for internal use by the AMP runtime
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: CSS ERROR (AMP): `-moz-binding` property is permanently banned by AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: CSS ERROR (AMP): CSS cannot contain `@import` in AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: CSS ERROR (AMP): `behavior` property is permanently banned by AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: CSS WARNING (AMP): `filter` is blacklisted by AMP due to performance concerns
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: CSS ERROR (AMP): `i-amp-` is reserved for internal use by the AMP runtime
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: CSS ERROR (AMP): `overflow` may not be styled as `auto` or `scroll`. No user defined element in an AMP document may have a scrollbar.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<applet>` is prohibited by AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<audio>` is prohibited by AMP use the `amp_audio` helper instead
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<base>` is prohibited by AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<embed>` is prohibited by AMP. `amp_embed` and `amp_ad` helpers are available with the "ad" component. Run `amp-html install ad` to install.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<frame>` is prohibited by AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<frameset>` is prohibited by AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `http-equiv` attribute of `meta` tags is banned in an AMP document
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<iframe>` is prohibited by AMP. `amp_iframe` helper is available with the "iframe" component. Run `amp-html install iframe` to install.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<img>` is prohibited by AMP use `amp_img` helper instead
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): External and internal scripts are not allowed in an AMP document
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<object>` is prohibited by AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `onclick` as attribute name is disallowed in AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `onmousehover` as attribute name is disallowed in AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<param>` is prohibited by AMP
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): External and internal stylesheets are not allowed in an AMP document
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: HTML ERROR (AMP): `<video>` is prohibited by AMP use `amp_video` helper instead
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: MARKUP ERROR (AMP): `amp_html_doctype` helper must be used instead of `<!doctype html>` and `<html></html>`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: MARKUP ERROR (AMP): A `amp_document_link` helper must be used in `head` to link to a AMP version of the document
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: MARKUP ERROR (AMP): `amp_head` helper must be included as first child of `head` tag
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: MARKUP ERROR (AMP): `amp_html_doctype` helper must be used instead of `<!doctype html>` and `<html></html>`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: MARKUP ERROR (AMP): A `canonical_document_link` helper must be used in `head` to either link to a non AMP version of the document or itself
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: MARKUP ERROR (AMP): `head` and `body` tags must exist in an AMP document
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: MARKUP ERROR (AMP): `amp_html_doctype` helper must be used instead of `<!doctype html>` and `<html></html>`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AMP-HTML TEST: MARKUP ERROR (AMP): A `<meta name="viewport" content="width=device-width,minimum-scale=1>` tag must exist in `head` of any AMP document
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module AmpHtml
|
|
2
|
+
class Validate
|
|
3
|
+
|
|
4
|
+
require 'highline'
|
|
5
|
+
require 'launchy'
|
|
6
|
+
|
|
7
|
+
def self.validate url, server_running
|
|
8
|
+
|
|
9
|
+
unless server_running
|
|
10
|
+
cli = HighLine.new
|
|
11
|
+
answer = cli.ask 'Is your rails server running? [y/n]'
|
|
12
|
+
unless answer == 'y'
|
|
13
|
+
warn 'Rerun `amp-html validate URL` while your server is running'
|
|
14
|
+
puts 'Starting your rails server ...'
|
|
15
|
+
exec 'rails s'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
validation_url = url + '#development=1'
|
|
20
|
+
root_validation_url = 'http://localhost:3000' + '#development=1'
|
|
21
|
+
|
|
22
|
+
if url.present? && url != 'root'
|
|
23
|
+
Launchy.open( validation_url ) do |exception|
|
|
24
|
+
warn "Attempted to open #{url} and failed because of: #{exception}. Open #{validation_url} in your browser instead."
|
|
25
|
+
exit
|
|
26
|
+
end
|
|
27
|
+
else
|
|
28
|
+
if Rails.env.development?
|
|
29
|
+
Launchy.open( root_validation_url ) do |exception|
|
|
30
|
+
warn "Attempted to open #{url} and failed because of: #{exception}. Open #{root_validation_url} in your browser instead."
|
|
31
|
+
exit
|
|
32
|
+
end
|
|
33
|
+
else
|
|
34
|
+
warn 'If you are not in the development environment, you need to specify the exact uri for the site you want to validate.'
|
|
35
|
+
exit
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
puts '=> Open the Developer Console and check for validation errors.'
|
|
40
|
+
|
|
41
|
+
exit
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
|
|
2
|
+
# AMP-HTML Validate
|
|
3
|
+
|
|
4
|
+
Validate your views using the AMP validator and a browser.
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
amp-html validate URL
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## Options
|
|
13
|
+
|
|
14
|
+
`--server_running` or `-r`: Pass this option if your server is already running.
|
|
15
|
+
|
|
16
|
+
`--help` or `-h`: Run tests with `help` to get additional information on AMP-HTML tests.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Arguments
|
|
21
|
+
|
|
22
|
+
### root
|
|
23
|
+
Validates the app root.
|
|
24
|
+
**Note:** This argument is only available in development environment
|
|
25
|
+
|
|
26
|
+
amp-html validate root
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### URL
|
|
30
|
+
Pass a specific URL to validate any view of your application.
|
|
31
|
+
|
|
32
|
+
amp-html validate https://railsamp.com
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'rails/generators/base'
|
|
2
|
+
require 'thor'
|
|
3
|
+
|
|
4
|
+
module AmpHtml
|
|
5
|
+
module Generators
|
|
6
|
+
|
|
7
|
+
class AssetsGenerator < Rails::Generators::Base
|
|
8
|
+
|
|
9
|
+
source_root File.expand_path '../../templates/assets', __FILE__
|
|
10
|
+
desc 'Generate assets to allow for use of the asset pipeline.'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# ASSETS
|
|
14
|
+
class_option :stylesheets, desc: 'Generate stylesheet assets', type: :boolean, default: false, aliases: '-st'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def create_stylesheet_assets
|
|
19
|
+
if options.size < 0 || options[:stylesheets]
|
|
20
|
+
template 'stylesheets/application.scss', 'app/assets/stylesheets/amp/application.scss'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def show_readme
|
|
25
|
+
readme 'README.md'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'rails/generators/base'
|
|
2
|
+
require 'thor'
|
|
3
|
+
|
|
4
|
+
module AmpHtml
|
|
5
|
+
module Generators
|
|
6
|
+
|
|
7
|
+
class BundleGenerator < Rails::Generators::Base
|
|
8
|
+
|
|
9
|
+
desc 'Bundle all amp-html generators.'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class_option :split, desc: 'Keep an application layout without AMP', type: :boolean, default: false, aliases: '-s'
|
|
13
|
+
class_option :format, desc: 'Set the views format. Defaults to `html`', type: :string, aliases: '-f'
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# CONFIGURATION
|
|
17
|
+
class_option :name, desc: 'Set the name of your app', type: :string, default: "Hello AMP", aliases: '-n'
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# ASSETS
|
|
21
|
+
class_option :stylesheets, desc: 'Generate stylesheet assets', type: :boolean, default: false, aliases: '-st'
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# COMPONENTS
|
|
25
|
+
class_option :all, desc: 'Install all AMP-HTML components', type: :boolean, default: false, aliases: '-a'
|
|
26
|
+
|
|
27
|
+
class_option :analytics, desc: 'Install the AMP-HTML Analytics Component', type: :boolean, default: false
|
|
28
|
+
class_option :iframe, desc: 'Install the AMP-HTML Iframe Component', type: :boolean, default: false
|
|
29
|
+
class_option :notifications, desc: 'Install the AMP-HTML Notifications Component', type: :boolean, default: false
|
|
30
|
+
class_option :anim, desc: 'Install the AMP-HTML Animated Images Component', type: :boolean, default: false
|
|
31
|
+
class_option :ad, desc: 'Install the AMP-HTML Advertisements Component', type: :boolean, default: false
|
|
32
|
+
class_option :social, desc: 'Install the AMP-HTML Social Component', type: :boolean, default: false
|
|
33
|
+
class_option :javascript, desc: 'Install the AMP-HTML Javascript Component', type: :boolean, default: false
|
|
34
|
+
class_option :service_worker, desc: 'Install the AMP-HTML Service Worker Component', type: :boolean, default: false
|
|
35
|
+
class_option :lists, desc: 'Install the AMP-HTML Lists Component', type: :boolean, default: false
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def run_generators
|
|
40
|
+
generate "amp-html:install#{ ' -s' if options[:split] }#{ ' -f ' + options[:format] if options[:format] }#{ ' -n ' if options[:name] }'#{ options[:name] if options[:name] }'#{ ' -a' if options[:all] }#{ ' --anim' if options[:anim] }#{ ' --ad' if options[:ad] }#{ ' --iframe' if options[:iframe] }#{ ' --analytics' if options[:analytics] }#{ ' --notifications' if options[:notifications] }#{ ' --social' if options[:social] }"
|
|
41
|
+
generate "amp-html:helpers#{ ' -s' if options[:split] }"
|
|
42
|
+
generate "amp-html:views#{ ' -s' if options[:split] }#{ ' -f ' + options[:format] if options[:format] }#{ ' -a' if options[:all] }#{ ' --analytics' if options[:analytics] }"
|
|
43
|
+
generate "amp-html:assets#{ ' -st' if options[:stylesheets] }"
|
|
44
|
+
generate "amp-html:components#{ ' -s' if options[:split] }#{ ' -f ' + options[:format] if options[:format] }#{ ' -a' if options[:all] }#{ ' --anim' if options[:anim] }#{ ' --ad' if options[:ad] }#{ ' --iframe' if options[:iframe] }#{ ' --analytics' if options[:analytics] }#{ ' --notifications' if options[:notifications] }#{ ' --social' if options[:social] }#{ ' --javascript' if options[:javascript] }"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require 'rails/generators/base'
|
|
2
|
+
require 'thor'
|
|
3
|
+
|
|
4
|
+
module AmpHtml
|
|
5
|
+
module Generators
|
|
6
|
+
|
|
7
|
+
class ComponentsGenerator < Rails::Generators::Base
|
|
8
|
+
|
|
9
|
+
source_root File.expand_path '../../templates/components', __FILE__
|
|
10
|
+
desc 'Install AMP-HTML components.'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class_option :split, desc: 'Keep an application layout without AMP', type: :boolean, default: false, aliases: '-s'
|
|
14
|
+
class_option :format, desc: 'Set the views format. Defaults to `html`', type: :string, aliases: '-f'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# COMPONENTS
|
|
18
|
+
class_option :all, desc: 'Install all AMP-HTML components', type: :boolean, default: false, aliases: '-a'
|
|
19
|
+
|
|
20
|
+
class_option :analytics, desc: 'Install the AMP-HTML Analytics Component', type: :boolean, default: false
|
|
21
|
+
class_option :iframe, desc: 'Install the AMP-HTML Iframe Component', type: :boolean, default: false
|
|
22
|
+
class_option :notifications, desc: 'Install the AMP-HTML Notifications Component', type: :boolean, default: false
|
|
23
|
+
class_option :anim, desc: 'Install the AMP-HTML Animated Images Component', type: :boolean, default: false
|
|
24
|
+
class_option :ad, desc: 'Install the AMP-HTML Advertisements Component', type: :boolean, default: false
|
|
25
|
+
class_option :social, desc: 'Install the AMP-HTML Social Component', type: :boolean, default: false
|
|
26
|
+
class_option :javascript, desc: 'Install the AMP-HTML Javascript Component', type: :boolean, default: false
|
|
27
|
+
class_option :service_worker, desc: 'Install the AMP-HTML Service Worker Component', type: :boolean, default: false
|
|
28
|
+
class_option :lists, desc: 'Install the AMP-HTML Lists Component', type: :boolean, default: false
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def create_views
|
|
34
|
+
template 'views/_components.html.erb', "app/views/application/amp/_components.#{pick_format}.erb"
|
|
35
|
+
|
|
36
|
+
FileUtils.rm_rf 'app/views/application/amp/components'
|
|
37
|
+
template 'views/_google_analytics.html.erb', "app/views/application/amp/components/_google_analytics.#{pick_format}.erb" if options[:all] || options[:analytics] || options[:notifications]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def create_helpers
|
|
41
|
+
FileUtils.rm_rf 'app/helpers/amp/components'
|
|
42
|
+
template 'helpers/analytics_tag_helper.rb', "app/helpers/amp/components/analytics_tag_helper.rb" if options[:all] || options[:analytics] || options[:notifications]
|
|
43
|
+
template 'helpers/iframe_tag_helper.rb', "app/helpers/amp/components/iframe_tag_helper.rb" if options[:all] || options[:iframe] || options[:javascript] || options[:service_worker]
|
|
44
|
+
template 'helpers/notification_tag_helper.rb', "app/helpers/amp/components/notification_tag_helper.rb" if options[:all] || options[:notifications]
|
|
45
|
+
template 'helpers/anim_tag_helper.rb', "app/helpers/amp/components/anim_tag_helper.rb" if options[:all] || options[:anim]
|
|
46
|
+
template 'helpers/ad_tag_helper.rb', "app/helpers/amp/components/ad_tag_helper.rb" if options[:all] || options[:ad]
|
|
47
|
+
template 'helpers/social_tag_helper.rb', "app/helpers/amp/components/social_tag_helper.rb" if options[:all] || options[:social]
|
|
48
|
+
template 'helpers/javascript_tag_helper.rb', "app/helpers/amp/components/javascript_tag_helper.rb" if options[:all] || options[:javascript]
|
|
49
|
+
template 'helpers/serviceworker_tag_helper.rb', "app/helpers/amp/components/serviceworker_tag_helper.rb" if options[:all] || options[:service_worker]
|
|
50
|
+
template 'helpers/lists_tag_helper.rb', "app/helpers/amp/components/lists_tag_helper.rb" if options[:all] || options[:lists]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def create_assets
|
|
54
|
+
template 'assets/javascripts/application.js', 'app/assets/javascripts/amp/application.js' if options[:all] || options[:javascript]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def create_files
|
|
58
|
+
template 'public/remote.html', 'public/remote.html' if options[:all] || options[:ad]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def show_readme
|
|
62
|
+
readme 'README.md'
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
private
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def pick_format
|
|
70
|
+
if options[:format]
|
|
71
|
+
options[:format]
|
|
72
|
+
else
|
|
73
|
+
if options[:split]
|
|
74
|
+
'amp'
|
|
75
|
+
else
|
|
76
|
+
'html'
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'rails/generators/base'
|
|
2
|
+
require 'thor'
|
|
3
|
+
|
|
4
|
+
module AmpHtml
|
|
5
|
+
module Generators
|
|
6
|
+
|
|
7
|
+
class HelpersGenerator < Rails::Generators::Base
|
|
8
|
+
|
|
9
|
+
source_root File.expand_path '../../templates/helpers', __FILE__
|
|
10
|
+
desc 'Generate AMP Tag Helpers. Run with --split to keep a version without AMP.'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class_option :split, desc: 'Keep an application layout without AMP', type: :boolean, default: false, aliases: '-s'
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def create_helpers
|
|
18
|
+
template 'asset_tag_helper.rb.erb', 'app/helpers/asset_tag_helper.rb'
|
|
19
|
+
template 'form_tag_helper.rb.erb', 'app/helpers/form_tag_helper.rb'
|
|
20
|
+
|
|
21
|
+
directory 'amp', 'app/helpers/amp'
|
|
22
|
+
template 'amp_tag_helper.rb.erb', 'app/helpers/amp/amp_tag_helper.rb'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def show_readme
|
|
26
|
+
readme 'README.md'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'rails/generators/base'
|
|
2
|
+
require 'thor'
|
|
3
|
+
|
|
4
|
+
module AmpHtml
|
|
5
|
+
module Generators
|
|
6
|
+
|
|
7
|
+
class InstallGenerator < Rails::Generators::Base
|
|
8
|
+
|
|
9
|
+
source_root File.expand_path '../../templates/install', __FILE__
|
|
10
|
+
desc 'Install AMP-HTML. Run with --split to keep a version without AMP.'
|
|
11
|
+
|
|
12
|
+
class_option :only_initializer, desc: 'Only generate initializer', type: :boolean, default: false
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class_option :split, desc: 'Keep an application layout without AMP', type: :boolean, default: false, aliases: '-s'
|
|
16
|
+
class_option :format, desc: 'Set the views format. Defaults to `html`', type: :string, aliases: '-f'
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# CONFIGURATION
|
|
20
|
+
class_option :name, desc: 'Set the name of your app', type: :string, default: 'Hello AMP', aliases: '-n'
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
# COMPONENTS
|
|
24
|
+
class_option :all, desc: 'Install all AMP-HTML components', type: :boolean, default: false, aliases: '-a'
|
|
25
|
+
|
|
26
|
+
class_option :analytics, desc: 'Install the AMP-HTML Analytics Component', type: :boolean, default: false
|
|
27
|
+
class_option :iframe, desc: 'Install the AMP-HTML Iframe Component', type: :boolean, default: false
|
|
28
|
+
class_option :notifications, desc: 'Install the AMP-HTML Notifications Component', type: :boolean, default: false
|
|
29
|
+
class_option :anim, desc: 'Install the AMP-HTML Animated Images Component', type: :boolean, default: false
|
|
30
|
+
class_option :ad, desc: 'Install the AMP-HTML Advertisements Component', type: :boolean, default: false
|
|
31
|
+
class_option :social, desc: 'Install the AMP-HTML Social Component', type: :boolean, default: false
|
|
32
|
+
class_option :javascript, desc: 'Install the AMP-HTML Javascript Component', type: :boolean, default: false
|
|
33
|
+
class_option :service_worker, desc: 'Install the AMP-HTML Service Worker Component', type: :boolean, default: false
|
|
34
|
+
class_option :lists, desc: 'Install the AMP-HTML Lists Component', type: :boolean, default: false
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def create_configuration
|
|
39
|
+
template 'amp-html.yml.erb', 'config/amp-html.yml' unless options[:only_initializer]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def create_initializer
|
|
43
|
+
template 'amp-html.rb.erb', 'config/initializers/amp-html.rb'
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def show_readme
|
|
47
|
+
readme 'README.md'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
end
|