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.
Files changed (191) hide show
  1. checksums.yaml +7 -0
  2. data/.github/issue_template.md +16 -0
  3. data/.github/pull_request_template.md +21 -0
  4. data/.gitignore +13 -0
  5. data/.travis.yml +4 -0
  6. data/CHANGELOG.md +302 -0
  7. data/CONTRIBUTING.md +1 -0
  8. data/DEPRECATIONS.md +9 -0
  9. data/Gemfile +12 -0
  10. data/Gemfile.lock +162 -0
  11. data/INSTALL.md +1 -0
  12. data/LICENSE +21 -0
  13. data/OWNERS.yaml +1 -0
  14. data/README.md +192 -0
  15. data/Rakefile +6 -0
  16. data/amp-html.gemspec +29 -0
  17. data/bin/amp-html +4 -0
  18. data/lib/amp_html.rb +27 -0
  19. data/lib/amp_html/cli.rb +113 -0
  20. data/lib/amp_html/components/docs/README.md +101 -0
  21. data/lib/amp_html/components/docs/ad.md +83 -0
  22. data/lib/amp_html/components/docs/analytics.md +131 -0
  23. data/lib/amp_html/components/docs/anim.md +66 -0
  24. data/lib/amp_html/components/docs/fonts.md +63 -0
  25. data/lib/amp_html/components/docs/forms.md +79 -0
  26. data/lib/amp_html/components/docs/iframe.md +62 -0
  27. data/lib/amp_html/components/docs/javascript.md +71 -0
  28. data/lib/amp_html/components/docs/lists.md +168 -0
  29. data/lib/amp_html/components/docs/media.md +52 -0
  30. data/lib/amp_html/components/docs/mustache.md +46 -0
  31. data/lib/amp_html/components/docs/notifications.md +0 -0
  32. data/lib/amp_html/components/docs/schema.md +80 -0
  33. data/lib/amp_html/components/docs/service_worker.md +60 -0
  34. data/lib/amp_html/components/docs/social.md +130 -0
  35. data/lib/amp_html/components/docs/stylesheets.md +50 -0
  36. data/lib/amp_html/components/help.rb +19 -0
  37. data/lib/amp_html/components/install.rb +34 -0
  38. data/lib/amp_html/components/templates/ERROR.md +5 -0
  39. data/lib/amp_html/components/templates/README.md +12 -0
  40. data/lib/amp_html/configuration.rb +170 -0
  41. data/lib/amp_html/configuration/docs/README.md +0 -0
  42. data/lib/amp_html/configuration/help.rb +11 -0
  43. data/lib/amp_html/helpers/docs/README.md +98 -0
  44. data/lib/amp_html/helpers/docs/amp.md +0 -0
  45. data/lib/amp_html/helpers/docs/amp_ad.md +86 -0
  46. data/lib/amp_html/helpers/docs/amp_analytics.md +76 -0
  47. data/lib/amp_html/helpers/docs/amp_anim.md +68 -0
  48. data/lib/amp_html/helpers/docs/amp_audio.md +54 -0
  49. data/lib/amp_html/helpers/docs/amp_auto_ads.md +43 -0
  50. data/lib/amp_html/helpers/docs/amp_close_user_notification_button.md +0 -0
  51. data/lib/amp_html/helpers/docs/amp_css.md +37 -0
  52. data/lib/amp_html/helpers/docs/amp_css_link.md +0 -0
  53. data/lib/amp_html/helpers/docs/amp_custom_ad.md +0 -0
  54. data/lib/amp_html/helpers/docs/amp_document_link.md +0 -0
  55. data/lib/amp_html/helpers/docs/amp_embed.md +86 -0
  56. data/lib/amp_html/helpers/docs/amp_facebook.md +70 -0
  57. data/lib/amp_html/helpers/docs/amp_fallback.md +47 -0
  58. data/lib/amp_html/helpers/docs/amp_font.md +0 -0
  59. data/lib/amp_html/helpers/docs/amp_font_link.md +0 -0
  60. data/lib/amp_html/helpers/docs/amp_form.md +0 -0
  61. data/lib/amp_html/helpers/docs/amp_form_response.md +0 -0
  62. data/lib/amp_html/helpers/docs/amp_gfycat.md +0 -0
  63. data/lib/amp_html/helpers/docs/amp_global_css.md +0 -0
  64. data/lib/amp_html/helpers/docs/amp_google_analytics.md +0 -0
  65. data/lib/amp_html/helpers/docs/amp_google_font.md +0 -0
  66. data/lib/amp_html/helpers/docs/amp_head.md +0 -0
  67. data/lib/amp_html/helpers/docs/amp_html_doctype.md +0 -0
  68. data/lib/amp_html/helpers/docs/amp_iframe.md +0 -0
  69. data/lib/amp_html/helpers/docs/amp_image.md +0 -0
  70. data/lib/amp_html/helpers/docs/amp_input.md +0 -0
  71. data/lib/amp_html/helpers/docs/amp_instagram.md +0 -0
  72. data/lib/amp_html/helpers/docs/amp_js.md +0 -0
  73. data/lib/amp_html/helpers/docs/amp_link.md +0 -0
  74. data/lib/amp_html/helpers/docs/amp_list.md +0 -0
  75. data/lib/amp_html/helpers/docs/amp_live_list.md +0 -0
  76. data/lib/amp_html/helpers/docs/amp_live_list_items.md +0 -0
  77. data/lib/amp_html/helpers/docs/amp_live_list_pagination.md +0 -0
  78. data/lib/amp_html/helpers/docs/amp_live_list_update.md +0 -0
  79. data/lib/amp_html/helpers/docs/amp_mustache.md +0 -0
  80. data/lib/amp_html/helpers/docs/amp_pin_it.md +0 -0
  81. data/lib/amp_html/helpers/docs/amp_pin_widget.md +0 -0
  82. data/lib/amp_html/helpers/docs/amp_pinterest_follow.md +0 -0
  83. data/lib/amp_html/helpers/docs/amp_pixel.md +0 -0
  84. data/lib/amp_html/helpers/docs/amp_placeholder.md +0 -0
  85. data/lib/amp_html/helpers/docs/amp_reddit.md +0 -0
  86. data/lib/amp_html/helpers/docs/amp_resources.md +0 -0
  87. data/lib/amp_html/helpers/docs/amp_selector.md +0 -0
  88. data/lib/amp_html/helpers/docs/amp_serviceworker.md +0 -0
  89. data/lib/amp_html/helpers/docs/amp_social_share.md +0 -0
  90. data/lib/amp_html/helpers/docs/amp_soundcloud.md +0 -0
  91. data/lib/amp_html/helpers/docs/amp_twitter.md +0 -0
  92. data/lib/amp_html/helpers/docs/amp_user_notification.md +0 -0
  93. data/lib/amp_html/helpers/docs/amp_video.md +0 -0
  94. data/lib/amp_html/helpers/docs/amp_video_ad.md +0 -0
  95. data/lib/amp_html/helpers/docs/amp_vine.md +0 -0
  96. data/lib/amp_html/helpers/docs/amp_youtube.md +0 -0
  97. data/lib/amp_html/helpers/docs/audio_tag.md +0 -0
  98. data/lib/amp_html/helpers/docs/canonical_document_link.md +0 -0
  99. data/lib/amp_html/helpers/docs/form_tag.md +0 -0
  100. data/lib/amp_html/helpers/docs/image_tag.md +0 -0
  101. data/lib/amp_html/helpers/docs/input_tag.md +0 -0
  102. data/lib/amp_html/helpers/docs/javascript_include_tag.md +0 -0
  103. data/lib/amp_html/helpers/docs/noscript_tag.md +0 -0
  104. data/lib/amp_html/helpers/docs/schema_tag.md +0 -0
  105. data/lib/amp_html/helpers/docs/stylesheet_link_tag.md +0 -0
  106. data/lib/amp_html/helpers/docs/video_tag.md +0 -0
  107. data/lib/amp_html/helpers/help.rb +23 -0
  108. data/lib/amp_html/root.rb +7 -0
  109. data/lib/amp_html/test.rb +169 -0
  110. data/lib/amp_html/test/help.rb +11 -0
  111. data/lib/amp_html/test/templates/README.md +43 -0
  112. data/lib/amp_html/test/templates/css/!important.md +1 -0
  113. data/lib/amp_html/test/templates/css/-amp-.md +1 -0
  114. data/lib/amp_html/test/templates/css/-moz-binding.md +1 -0
  115. data/lib/amp_html/test/templates/css/@import.md +1 -0
  116. data/lib/amp_html/test/templates/css/behavior.md +1 -0
  117. data/lib/amp_html/test/templates/css/filter.md +1 -0
  118. data/lib/amp_html/test/templates/css/i-amp-.md +1 -0
  119. data/lib/amp_html/test/templates/css/overflow.md +1 -0
  120. data/lib/amp_html/test/templates/html/applet.md +1 -0
  121. data/lib/amp_html/test/templates/html/audio.md +1 -0
  122. data/lib/amp_html/test/templates/html/base.md +1 -0
  123. data/lib/amp_html/test/templates/html/embed.md +1 -0
  124. data/lib/amp_html/test/templates/html/frame.md +1 -0
  125. data/lib/amp_html/test/templates/html/frameset.md +1 -0
  126. data/lib/amp_html/test/templates/html/http-equiv.md +1 -0
  127. data/lib/amp_html/test/templates/html/iframe.md +1 -0
  128. data/lib/amp_html/test/templates/html/img.md +1 -0
  129. data/lib/amp_html/test/templates/html/javascript_include_tag.md +1 -0
  130. data/lib/amp_html/test/templates/html/object.md +1 -0
  131. data/lib/amp_html/test/templates/html/onclick.md +1 -0
  132. data/lib/amp_html/test/templates/html/onmousehover.md +1 -0
  133. data/lib/amp_html/test/templates/html/param.md +1 -0
  134. data/lib/amp_html/test/templates/html/stylesheet_link_tag.md +1 -0
  135. data/lib/amp_html/test/templates/html/video.md +1 -0
  136. data/lib/amp_html/test/templates/markup/!doctype.md +1 -0
  137. data/lib/amp_html/test/templates/markup/amp_document_link.md +1 -0
  138. data/lib/amp_html/test/templates/markup/amp_head.md +1 -0
  139. data/lib/amp_html/test/templates/markup/amp_html_doctype.md +1 -0
  140. data/lib/amp_html/test/templates/markup/canonical_document_link.md +1 -0
  141. data/lib/amp_html/test/templates/markup/head_body.md +1 -0
  142. data/lib/amp_html/test/templates/markup/html.md +1 -0
  143. data/lib/amp_html/test/templates/markup/meta_viewport.md +1 -0
  144. data/lib/amp_html/validate.rb +46 -0
  145. data/lib/amp_html/validate/help.rb +11 -0
  146. data/lib/amp_html/validate/templates/README.md +32 -0
  147. data/lib/amp_html/version.rb +13 -0
  148. data/lib/generators/amphtml/assets_generator.rb +31 -0
  149. data/lib/generators/amphtml/bundle_generator.rb +50 -0
  150. data/lib/generators/amphtml/components_generator.rb +84 -0
  151. data/lib/generators/amphtml/helpers_generator.rb +32 -0
  152. data/lib/generators/amphtml/install_generator.rb +53 -0
  153. data/lib/generators/amphtml/views_generator.rb +62 -0
  154. data/lib/generators/templates/assets/README.md +0 -0
  155. data/lib/generators/templates/assets/stylesheets/application.scss +15 -0
  156. data/lib/generators/templates/components/README.md +0 -0
  157. data/lib/generators/templates/components/assets/javascripts/application.js +15 -0
  158. data/lib/generators/templates/components/helpers/ad_tag_helper.rb +83 -0
  159. data/lib/generators/templates/components/helpers/analytics_tag_helper.rb +30 -0
  160. data/lib/generators/templates/components/helpers/anim_tag_helper.rb +42 -0
  161. data/lib/generators/templates/components/helpers/iframe_tag_helper.rb +27 -0
  162. data/lib/generators/templates/components/helpers/javascript_tag_helper.rb +12 -0
  163. data/lib/generators/templates/components/helpers/lists_tag_helper.rb +82 -0
  164. data/lib/generators/templates/components/helpers/notification_tag_helper.rb +16 -0
  165. data/lib/generators/templates/components/helpers/serviceworker_tag_helper.rb +15 -0
  166. data/lib/generators/templates/components/helpers/social_tag_helper.rb +228 -0
  167. data/lib/generators/templates/components/public/remote.html +28 -0
  168. data/lib/generators/templates/components/views/_components.html.erb +141 -0
  169. data/lib/generators/templates/components/views/_google_analytics.html.erb +23 -0
  170. data/lib/generators/templates/helpers/README.md +1 -0
  171. data/lib/generators/templates/helpers/amp/fallback_tag_helper.rb +16 -0
  172. data/lib/generators/templates/helpers/amp/font_tag_helper.rb +37 -0
  173. data/lib/generators/templates/helpers/amp/link_tag_helper.rb +11 -0
  174. data/lib/generators/templates/helpers/amp/mustache_tag_helper.rb +13 -0
  175. data/lib/generators/templates/helpers/amp/noscript_tag_helper.rb +13 -0
  176. data/lib/generators/templates/helpers/amp/placeholder_tag_helper.rb +16 -0
  177. data/lib/generators/templates/helpers/amp/schema_tag_helper.rb +16 -0
  178. data/lib/generators/templates/helpers/amp/stylesheets_tag_helper.rb +21 -0
  179. data/lib/generators/templates/helpers/amp_tag_helper.rb.erb +65 -0
  180. data/lib/generators/templates/helpers/asset_tag_helper.rb.erb +119 -0
  181. data/lib/generators/templates/helpers/form_tag_helper.rb.erb +79 -0
  182. data/lib/generators/templates/install/README.md +1 -0
  183. data/lib/generators/templates/install/amphtml.rb.erb +19 -0
  184. data/lib/generators/templates/install/amphtml.yml.erb +189 -0
  185. data/lib/generators/templates/views/README.md +1 -0
  186. data/lib/generators/templates/views/application.html.erb +71 -0
  187. data/lib/generators/templates/views/application/_head.html.erb +47 -0
  188. data/lib/generators/templates/views/application/_resources.html.erb +16 -0
  189. data/lib/generators/templates/views/application/_schema.html.erb +6 -0
  190. data/lib/generators/templates/views/config/mime_types.rb +8 -0
  191. 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,11 @@
1
+ module AmpHtml
2
+ class Validate
3
+ class Help
4
+
5
+ def self.all
6
+ puts IO.read File.join AmpHtml.root, 'amp_html', 'validate', 'templates', 'README.md'
7
+ end
8
+
9
+ end
10
+ end
11
+ 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,13 @@
1
+ module AmpHtml
2
+
3
+ VERSION = '0.7.7'
4
+
5
+ class Version
6
+
7
+ def self.current
8
+ return 'amp-html ' + VERSION
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -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