polymer-rails 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dd5a510d75e8e7cfcfc0246011b9880587b857b4
4
- data.tar.gz: 6db0ec455525457777f09695d25aafbb16168937
3
+ metadata.gz: f84b87114c47f492211cefef9c1f5782415d4ee1
4
+ data.tar.gz: 40edcd03135d89e01531ec02dfdccc4b6509c404
5
5
  SHA512:
6
- metadata.gz: 443cc85bb6c92b01b508d4477722ab8e0703ca9c8215579fd9a15502d2f4caece067cfca131c435cb7f84538f4d9d47599ba5ee1e43291e54fce9c1a47287e8a
7
- data.tar.gz: 58ab08303ef5c3c8eb0d8958147962a4bf92cfe6965f7167e2ead856f0ba9dc97a998ec89fdb17525ea24f4abef4f8340566d7b7c8a638b27467fec65f5d134c
6
+ metadata.gz: 7d0f8e22cd158edc2bcb3f6d3c6605f2463ad50f59321fb2d972ee98f4fcc224f521f9677744ff847fd62a9a2730c9707cd90cd3c11df5db8dc638151f7458e7
7
+ data.tar.gz: 3c42634003742270b2151ae1f2779fa403e33113299dfda49aa7c5acd3ed9db71740dee709b92c968cebd83b22af33f1612c484c32179c914330b42b839c13d8
data/README.md CHANGED
@@ -1,8 +1,20 @@
1
- # Polymer::Rails
1
+ # Polymer-Rails
2
+ Want to get started with [web components](http://www.w3.org/TR/components-intro/)? Want to bring them into your Rails app? Easily build your own and use web components that are built by community in your Ruby on Rails Application. Poymer-rails helps you to do this:
3
+
4
+ 1. Adds [polymer](http://polymer-project.org/) library to assets of your rails project.
5
+
6
+ 2. Allows you to easily import web component with `<%= html_import_tag "my-component" %>` helper.
7
+
8
+ 3. Allows you to import and package web components into assets pipeline, exactly as you would Javascript or CSS
9
+
10
+ #### Prefer using SASS or CoffeeSript?
11
+
12
+ Polymer-rails works well with compiling assets, such as CoffeeScript and Sass.
13
+ You can easily use external stylesheet or script tag references in your web component with any extension that Sprockets recognize.
14
+ Use `<link rel="stylesheet" href="application.sass">` for stylesheets and `<script src="application.coffee">` for javascripts.
15
+ This assets will be automatically compiled and required into component html file.
2
16
 
3
- Adds [polymer](http://polymer-project.org/) to your rails project to help in building [web components](http://www.w3.org/TR/components-intro/).
4
17
 
5
- Easily import web component with `<%= html_import_tag "my-component" %>`.
6
18
 
7
19
  ## Installation
8
20
 
@@ -45,6 +57,12 @@ Add your component to manifest file after requiring polymer:
45
57
 
46
58
  And you can use your component in Rails application!
47
59
 
60
+ #### Polymer core/paper elements
61
+
62
+ Polymer team is working on set of core element which you can learn more about here http://www.polymer-project.org/docs/elements/core-elements.html. If you want to use them in your Rails application, checkout [polymer-core-rails](https://github.com/alchapone/polymer-core-rails) gem.
63
+
64
+ You may also be interested in Polymer paper elements, they are also available as [polymer-paper-rails](https://github.com/alchapone/polymer-paper-rails) gem.
65
+
48
66
  ## Example
49
67
 
50
68
  See example Rails application here [http://polymer-rails-example.herokuapp.com/](http://polymer-rails-example.herokuapp.com/)
@@ -53,9 +71,7 @@ Source code can be found here [https://github.com/alchapone/polymer-rails-exampl
53
71
 
54
72
  ## Learn more
55
73
 
56
- Polymer team is working on set of core element which you can learn more about here http://www.polymer-project.org/docs/elements/core-elements.html
57
-
58
- Also you can check out http://customelements.io/ or http://component.kitchen/ to see what components are already built by community.
74
+ You can check out http://customelements.io/ or http://component.kitchen/ to see what components are already built by community.
59
75
 
60
76
  ## Contributing
61
77
 
@@ -7,5 +7,5 @@ Code distributed by Google as part of the polymer project is also
7
7
  subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
8
8
  -->
9
9
 
10
- <%= html_import_tag 'polymer/layout' %>
11
- <%= javascript_include_tag 'polymer/polymer' %>
10
+ <link rel="import" href="layout.html" />
11
+ <script src="polymer.js"></script>
@@ -17,6 +17,10 @@ module Polymer
17
17
  end
18
18
  end
19
19
 
20
+ def copy_bowerrc
21
+ template "bowerrc.json", ".bowerrc"
22
+ end
23
+
20
24
  def create_vendor_dir
21
25
  create_file "vendor/assets/components/.keep"
22
26
  end
@@ -0,0 +1,3 @@
1
+ {
2
+ "directory": "vendor/assets/components"
3
+ }
@@ -0,0 +1,37 @@
1
+ module Polymer
2
+ module Rails
3
+ class Component
4
+
5
+ def initialize(data)
6
+ @doc = ::Nokogiri::HTML.fragment(data)
7
+ end
8
+
9
+ def create_node(name, content)
10
+ node = ::Nokogiri::XML::Node.new(name, @doc)
11
+ node.content = content
12
+ node
13
+ end
14
+
15
+ def replace_node(node, name, content)
16
+ node.replace create_node(name, content)
17
+ end
18
+
19
+ def stylesheets
20
+ @doc.css("link[rel='stylesheet']")
21
+ end
22
+
23
+ def javascripts
24
+ @doc.css("script[src]")
25
+ end
26
+
27
+ def imports
28
+ @doc.css("link[rel='import']")
29
+ end
30
+
31
+ def stringify
32
+ @doc.inner_html
33
+ end
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,55 @@
1
+ require 'nokogiri'
2
+ require 'polymer-rails/component'
3
+
4
+ module Polymer
5
+ module Rails
6
+ class ComponentsProcessor < Sprockets::Processor
7
+
8
+ def initialize(context, data)
9
+ @context = context
10
+ @component = Component.new(data)
11
+ end
12
+
13
+ def process
14
+ inline_styles
15
+ inline_javascripts
16
+ require_imports
17
+ @component.stringify
18
+ end
19
+
20
+ private
21
+
22
+ def require_imports
23
+ @component.imports.each do |import|
24
+ @context.require_asset component_path(import.attributes['href'].value)
25
+ import.remove
26
+ end
27
+ end
28
+
29
+ def inline_javascripts
30
+ @component.javascripts.each do |script|
31
+ @component.replace_node(script, 'script', asset_content(script.attributes['src'].value))
32
+ end
33
+ end
34
+
35
+ def inline_styles
36
+ @component.stylesheets.each do |link|
37
+ @component.replace_node(link, 'style', asset_content(link.attributes['href'].value))
38
+ end
39
+ end
40
+
41
+ def asset_content(file)
42
+ dir = File.dirname(@context.pathname)
43
+ path = File.absolute_path(file, dir)
44
+ @context.evaluate path
45
+ end
46
+
47
+ def component_path(file)
48
+ dir = File.dirname(@context.pathname)
49
+ dir.gsub!('/app/assets/', '/vendor/assets/') unless File.exist?(File.absolute_path(file, dir))
50
+ File.absolute_path(file, dir)
51
+ end
52
+
53
+ end
54
+ end
55
+ end
@@ -12,6 +12,9 @@ module Polymer
12
12
  initializer :add_preprocessors do |app|
13
13
  app.assets.register_mime_type "text/html", ".html"
14
14
  app.assets.register_preprocessor "text/html", Polymer::Rails::DirectiveProcessor
15
+ app.assets.register_postprocessor 'text/html', :web do |context, data|
16
+ Polymer::Rails::ComponentsProcessor.new(context, data).process
17
+ end
15
18
  end
16
19
 
17
20
  end
@@ -1,5 +1,5 @@
1
1
  module Polymer
2
2
  module Rails
3
- VERSION = "0.1.9"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
data/lib/polymer-rails.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "polymer-rails/version"
2
2
  require "polymer-rails/processors/directive_processor"
3
+ require "polymer-rails/processors/components_processor"
3
4
  require "polymer-rails/helpers/asset_tag_helper"
4
5
  require "polymer-rails/engine" if defined?(::Rails)
5
6
  require "polymer-rails/railtie" if defined?(::Rails)
metadata CHANGED
@@ -1,57 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polymer-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Chaplinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-20 00:00:00.000000000 Z
11
+ date: 2014-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.6.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.6.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ~>
45
+ - - "~>"
32
46
  - !ruby/object:Gem::Version
33
47
  version: '1.5'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ~>
52
+ - - "~>"
39
53
  - !ruby/object:Gem::Version
40
54
  version: '1.5'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ~>
59
+ - - "~>"
46
60
  - !ruby/object:Gem::Version
47
61
  version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ~>
66
+ - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 3.0.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 3.0.0
55
83
  description: Use of web components and polymer-project in Ruby on Rails projects
56
84
  email:
57
85
  - alchapone@yandex.ru
@@ -63,15 +91,18 @@ files:
63
91
  - Rakefile
64
92
  - app/assets/javascripts/polymer/layout.html
65
93
  - app/assets/javascripts/polymer/platform.js
66
- - app/assets/javascripts/polymer/polymer.html.erb
94
+ - app/assets/javascripts/polymer/polymer.html
67
95
  - app/assets/javascripts/polymer/polymer.js
68
96
  - lib/generators/polymer/component/component_generator.rb
69
97
  - lib/generators/polymer/component/templates/component.html.erb
70
98
  - lib/generators/polymer/install/install_generator.rb
71
99
  - lib/generators/polymer/install/templates/application.html.erb
100
+ - lib/generators/polymer/install/templates/bowerrc.json
72
101
  - lib/polymer-rails.rb
102
+ - lib/polymer-rails/component.rb
73
103
  - lib/polymer-rails/engine.rb
74
104
  - lib/polymer-rails/helpers/asset_tag_helper.rb
105
+ - lib/polymer-rails/processors/components_processor.rb
75
106
  - lib/polymer-rails/processors/directive_processor.rb
76
107
  - lib/polymer-rails/railtie.rb
77
108
  - lib/polymer-rails/version.rb
@@ -85,17 +116,17 @@ require_paths:
85
116
  - lib
86
117
  required_ruby_version: !ruby/object:Gem::Requirement
87
118
  requirements:
88
- - - '>='
119
+ - - ">="
89
120
  - !ruby/object:Gem::Version
90
121
  version: '0'
91
122
  required_rubygems_version: !ruby/object:Gem::Requirement
92
123
  requirements:
93
- - - '>='
124
+ - - ">="
94
125
  - !ruby/object:Gem::Version
95
126
  version: '0'
96
127
  requirements: []
97
128
  rubyforge_project:
98
- rubygems_version: 2.3.0
129
+ rubygems_version: 2.2.2
99
130
  signing_key:
100
131
  specification_version: 4
101
132
  summary: Use of web components with polymer with rails