pieces 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +42 -5
  4. data/examples/boilerplate/app/assets/stylesheets/components/header.css +3 -0
  5. data/examples/boilerplate/app/assets/stylesheets/pieces.css +1 -0
  6. data/examples/boilerplate/app/views/layouts/pieces.html.erb +1 -1
  7. data/examples/original/Gemfile +4 -0
  8. data/examples/original/app/assets/stylesheets/pieces.css +3 -0
  9. data/examples/rails_app/app/assets/stylesheets/components/article_summary.scss +4 -0
  10. data/examples/rails_app/app/assets/stylesheets/components/branding.scss +3 -0
  11. data/examples/rails_app/app/assets/stylesheets/components/header.scss +3 -0
  12. data/examples/rails_app/app/views/application/_branding.html.erb +3 -0
  13. data/examples/rails_app/app/views/application/_footer.html.erb +7 -0
  14. data/examples/rails_app/app/views/application/_header.html.erb +1 -1
  15. data/examples/rails_app/app/views/articles/_summary.html.erb +9 -0
  16. data/examples/rails_app/app/views/layouts/pieces.html.erb +1 -1
  17. data/examples/rails_app/config/pieces.yml +16 -1
  18. data/lib/pieces/builder.rb +14 -13
  19. data/lib/pieces/cli.rb +2 -1
  20. data/lib/pieces/compilers/route_compiler.rb +17 -2
  21. data/lib/pieces/generator.rb +22 -34
  22. data/lib/pieces/listener.rb +27 -4
  23. data/lib/pieces/rails.rb +2 -1
  24. data/lib/pieces/server.rb +11 -2
  25. data/lib/pieces/tilt_extension.rb +0 -4
  26. data/lib/pieces/version.rb +1 -1
  27. data/lib/pieces.rb +0 -4
  28. data/pieces.gemspec +5 -4
  29. metadata +26 -5
  30. data/examples/rails_app/app/assets/stylesheets/components/header.css +0 -4
  31. data/lib/pieces/compilers/style_compiler.rb +0 -32
  32. data/lib/pieces/tilt/css.rb +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e27bdc6bd2f2f6692aa8b2ed444d5d5ce662dbf1
4
- data.tar.gz: 7b66106ffe80f2bd44611640d60d83b8f3e27ea9
3
+ metadata.gz: d8657ab3cd83d6002517cb3ea8781a3ecfe7358c
4
+ data.tar.gz: 782f43be0159d2f469ac79f5ce3876848ea2db4d
5
5
  SHA512:
6
- metadata.gz: 5e356716b1e0d9bede9b944fdfa7fd9783c672e7d9a149064ce6e0716e6809eb12b3645ef96731021623358872acce84d215c7b3b3122bf751a375d5b9bf6053
7
- data.tar.gz: 5ee3d4371032923872272373e0090d5a1e260a5479230a6d3c01f9916e2ef98202cf97ef386ffb4cccc27f86acbefe0273189675d46e48fdd79f4b057ed63233
6
+ metadata.gz: 4a36a59748f1ae938ddbe218e9fc66eca662e41c553fb3b7e903ada89ea3a1a524a8524cd02fe2d3fce523dc3ab4df810c2b049d271f35784284fab07522435b
7
+ data.tar.gz: 7b9821b278c1b80e9ccac7bd93436b2e0f7a57e8bed64c9159ad9b61956163cc4ff1adb65d54a26dc4874095edebb92d32ffd40f970167f91b429689d32d9cff
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /tmp/
9
9
  build/
10
10
  Gemfile.lock
11
+ .sass-cache
data/README.md CHANGED
@@ -15,7 +15,14 @@ into a static site or styleguide.
15
15
  With Pieces, you define the view of your application with components. Even
16
16
  your layout is just another component.
17
17
 
18
- ### Installation
18
+ ## Welcome early adopters
19
+
20
+ I'd really appreciate feedback so please do try Pieces out for your current
21
+ or next project. Obviously it's new and changing but I adhere very closely
22
+ to semantic versioning and your styleguide should be a safe place to try
23
+ new things. Thanks in advance, Luke.
24
+
25
+ ## Installation
19
26
 
20
27
  If installing Pieces into a rails app, add it to your Gemfile:
21
28
 
@@ -29,7 +36,7 @@ If building a standalone site, install globally:
29
36
  gem install pieces
30
37
  ```
31
38
 
32
- ### Quick example
39
+ ## Quick example
33
40
 
34
41
  Let's start by defining some "pieces", or components, or views as they are
35
42
  better known in the rails world. You'll notice Pieces looks for files in the
@@ -61,12 +68,23 @@ For example, `.article` should be defined like so.
61
68
 
62
69
  You can use `.css`, `.scss`, `.sass` and `.less` with Pieces.
63
70
 
71
+ We also need to pull this stylesheet into main one for your styleguide.
72
+
73
+ **`app/assets/stylesheets/components/article.css`:**
74
+
75
+ ```css
76
+ /*= require_tree ./components */
77
+ ```
78
+
79
+ And a layout to pull it together.
80
+
64
81
  **`app/views/layouts/pieces.html.erb`:**
65
82
 
66
83
  ``` erb
67
84
  <html>
68
85
  <head>
69
86
  <title>{{title}}</title>
87
+ <link rel="stylesheet" src="/assets/pieces.css" />
70
88
  </head>
71
89
  <body>
72
90
  <%= yield %>
@@ -114,7 +132,9 @@ bundle
114
132
  bundle exec rails g pieces:rails:install
115
133
  ```
116
134
 
117
- Edit your `config/pieces.yml` to demo some of your components.
135
+ Edit your `config/pieces.yml` to demo some of your components. Please see the
136
+ examples in this README as to how it should look. Detailed documentation coming
137
+ soon. Thanks for your patience!
118
138
 
119
139
  Now boot up rails:
120
140
 
@@ -124,8 +144,25 @@ bundle exec rails s
124
144
 
125
145
  And then visit [http://localhost:3000/styleguide](http://localhost:3000/styleguide)
126
146
 
127
- **Do you use vagrant?** If you do you should update Pieces::Rails in your
128
- `config/routes.rb` as follows:
147
+ To build a static version of your site:
148
+
149
+ ```
150
+ bundle exec pieces build
151
+ ```
152
+
153
+ This will build your styleguide into `build/`.
154
+
155
+ You can also run pieces server rather than rails for faster development:
156
+
157
+ ```
158
+ bundle exec pieces s
159
+ ```
160
+
161
+ And then visit [http://localhost:8080](http://localhost:8080)
162
+
163
+ ### Do you use vagrant?
164
+
165
+ If you do you should update Pieces::Rails in your `config/routes.rb` as follows:
129
166
 
130
167
  ``` ruby
131
168
  mount Pieces::Rails.new(force_polling: true).mount, at: '/styleguide' unless Rails.env.production?
@@ -0,0 +1,3 @@
1
+ header {
2
+ padding: 1em;
3
+ }
@@ -0,0 +1 @@
1
+ /*= require_tree ./components */
@@ -2,7 +2,7 @@
2
2
  <html>
3
3
  <head>
4
4
  <title><%= title %></title>
5
- <link rel="stylesheet" href="compiled.css" />
5
+ <link rel="stylesheet" href="/assets/pieces.css" />
6
6
  </head>
7
7
 
8
8
  <body>
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'mustache'
4
+ gem 'pieces'
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require_tree ../../views
3
+ */
@@ -0,0 +1,4 @@
1
+ .article_summary,
2
+ .article_summary--latest {
3
+ padding: 2em;
4
+ }
@@ -0,0 +1,3 @@
1
+ .branding {
2
+ font-size: 2em;
3
+ }
@@ -0,0 +1,3 @@
1
+ .header {
2
+ padding: 2em;
3
+ }
@@ -0,0 +1,3 @@
1
+ <div class="branding">
2
+ COMPANY
3
+ </div>
@@ -0,0 +1,7 @@
1
+ <footer>
2
+ Company 2015.
3
+
4
+ <% contact_links.each do |args| %>
5
+ <%= link_to(*args) %>
6
+ <% end %>
7
+ </footer>
@@ -1,3 +1,3 @@
1
1
  <header class="header">
2
- <%= title %>
2
+ <%= yield %>
3
3
  </header>
@@ -0,0 +1,9 @@
1
+ <article class="article_summary<%= modifier %>">
2
+ <h2 class="article_summary__title">
3
+ <%= article['title'] %>
4
+ </h2>
5
+
6
+ <div class="article_summary__except">
7
+ <%= article['excerpt'] %>
8
+ </div>
9
+ </article>
@@ -2,7 +2,7 @@
2
2
  <html>
3
3
  <head>
4
4
  <title><%= title %></title>
5
- <%= stylesheet_link_tag '/assets/pieces' %>
5
+ <%= stylesheet_link_tag 'pieces' %>
6
6
  </head>
7
7
  <body>
8
8
  <%= yield %>
@@ -6,4 +6,19 @@ index:
6
6
  _pieces:
7
7
  - layouts/pieces:
8
8
  _pieces:
9
- - _header: {}
9
+ - _header:
10
+ _pieces:
11
+ - _branding: {}
12
+ - articles/_summary:
13
+ article:
14
+ title: 'A standard artile summary'
15
+ excerpt: 'This summary does not deserve any special attention.'
16
+ - articles/_summary:
17
+ modifier: '--latest'
18
+ article:
19
+ title: 'Building systems with styleguides'
20
+ excerpt: 'PSDs or one off website builds are not quite a thing of the past but they certainly are not what all clients want these days.'
21
+ - _footer:
22
+ contact_links:
23
+ - ['Email', 'mailto:lukemorton.dev@gmail.com']
24
+ - ['Twitter', 'https://twitter.com/lukemorton']
@@ -1,5 +1,9 @@
1
1
  require 'ostruct'
2
2
  require 'yaml'
3
+ require 'sprockets'
4
+ require 'pieces/compilers/route_compiler'
5
+ require 'pieces/server'
6
+ require 'pieces/tilt_extension'
3
7
 
4
8
  module Pieces
5
9
  class Builder
@@ -13,29 +17,26 @@ module Pieces
13
17
  def initialize(config)
14
18
  @path = config[:path]
15
19
  @route_config ||= YAML.load_file("#{path}/config/pieces.yml")
16
- require 'pieces/tilt_extension'
17
20
  end
18
21
 
19
22
  def build
20
- save_files(_build_routes(_build_styles))
23
+ save_files(build_routes(build_styles))
21
24
  end
22
25
 
23
- def build_styles
24
- save_files(_build_styles)
25
- end
26
+ private
26
27
 
27
- def build_routes
28
- save_files(_build_routes)
28
+ def env
29
+ @env ||= Server.new(path: path).sprockets_env
29
30
  end
30
31
 
31
- private
32
-
33
- def _build_styles(files = {})
34
- StyleCompiler.new(path: path).compile(files)
32
+ def build_styles(files = {})
33
+ files.merge('assets/pieces.css' => { type: 'css', contents: env['pieces.css'] })
35
34
  end
36
35
 
37
- def _build_routes(files = {})
38
- route_compiler = RouteCompiler.new(path: path, globals: route_config['_global'])
36
+ def build_routes(files = {})
37
+ route_compiler = RouteCompiler.new(path: path,
38
+ globals: route_config['_global'],
39
+ env: env)
39
40
 
40
41
  routes.reduce(files) do |files, (name, route)|
41
42
  route_compiler.compile(files, name, route)
data/lib/pieces/cli.rb CHANGED
@@ -1,5 +1,6 @@
1
- require 'pieces'
2
1
  require 'thor'
2
+ require 'pieces/builder'
3
+ require 'pieces/generator'
3
4
 
4
5
  module Pieces
5
6
  class CLI < Thor
@@ -3,10 +3,12 @@ require 'ostruct'
3
3
  module Pieces
4
4
  class RouteCompiler
5
5
  attr_reader :path
6
+ attr_reader :env
6
7
  attr_reader :globals
7
8
 
8
9
  def initialize(config)
9
10
  @path = config[:path] || Dir.pwd
11
+ @env = config[:env]
10
12
  @globals = config[:globals] || {}
11
13
  end
12
14
 
@@ -36,6 +38,7 @@ module Pieces
36
38
 
37
39
  def compile_piece(piece, data)
38
40
  view_model = ViewModel.new(data['_global'].merge(data))
41
+ view_model.env = env
39
42
  ::Tilt.new(piece_path(piece)).render(view_model) { yield_pieces(data) }
40
43
  end
41
44
 
@@ -46,14 +49,26 @@ module Pieces
46
49
  end
47
50
 
48
51
  class ViewModel < OpenStruct
49
- if defined?(ActionView)
52
+ attr_accessor :env
53
+
54
+ begin
55
+ require 'action_view'
50
56
  include ActionView::Context
51
57
  include ActionView::Helpers
58
+ rescue LoadError => e
52
59
  end
53
60
 
54
61
  def initialize(*)
55
62
  super
56
- _prepare_context if defined?(ActionView)
63
+ _prepare_context if respond_to?(:_prepare_context)
64
+ end
65
+
66
+ def compute_asset_path(path, options = {})
67
+ if env.resolve!(path)
68
+ File.join('/assets', path)
69
+ else
70
+ super
71
+ end
57
72
  end
58
73
  end
59
74
  end
@@ -1,45 +1,33 @@
1
- module Pieces
2
- module Generator
3
- extend self
4
-
5
- def init(config = {})
6
- path = config[:path] || Dir.pwd
7
- FileUtils.mkdir_p(path)
1
+ require 'thor'
8
2
 
9
- if Dir.exist?("#{path}/app/views")
10
- FileUtils.mkdir_p("#{path}/app/views/application")
11
- FileUtils.mkdir_p("#{path}/app/views/layouts")
3
+ module Pieces
4
+ class Generator
5
+ def self.init(config = {})
6
+ new(config).init
7
+ end
12
8
 
13
- unless File.exist?("#{path}/app/views/layouts/pieces.html.erb")
14
- FileUtils.cp("#{example_path}/app/views/layouts/pieces.html.erb", "#{path}/app/views/layouts")
15
- end
9
+ def self.from_superclass(method, default)
10
+ default
11
+ end
16
12
 
17
- unless File.exist?("#{path}/app/views/application/header.html.erb")
18
- FileUtils.cp("#{example_path}/app/views/application/header.html.erb", "#{path}/app/views/application")
19
- end
13
+ include Thor::Actions
14
+ include Thor::Shell
20
15
 
21
- unless File.exist?("#{path}/app/views/application/footer.html.erb")
22
- FileUtils.cp("#{example_path}/app/views/application/footer.html.erb", "#{path}/app/views/application")
23
- end
24
- else
25
- FileUtils.mkdir_p("#{path}/app/")
26
- FileUtils.cp_r("#{example_path}/app/views", "#{path}/app/views")
27
- end
16
+ source_root File.expand_path('../../../examples/boilerplate', __FILE__)
28
17
 
29
- unless File.exist?("#{path}/config/pieces.yml")
30
- FileUtils.mkdir_p("#{path}/config")
31
- FileUtils.cp("#{example_path}/config/pieces.yml", "#{path}/config/pieces.yml")
32
- end
18
+ attr_reader :path, :options
33
19
 
34
- unless File.exist?("#{path}/Gemfile")
35
- FileUtils.cp("#{example_path}/Gemfile", "#{path}/Gemfile")
36
- end
20
+ def initialize(config = {})
21
+ @path = config[:path] || Dir.pwd
22
+ @options = {}
23
+ self.destination_root = config[:path]
37
24
  end
38
25
 
39
- private
40
-
41
- def example_path
42
- File.dirname(__FILE__) + '/../../examples/boilerplate'
26
+ def init
27
+ directory 'app/assets/stylesheets'
28
+ directory 'app/views'
29
+ copy_file 'config/pieces.yml'
30
+ copy_file 'Gemfile'
43
31
  end
44
32
  end
45
33
  end
@@ -12,10 +12,8 @@ module Pieces
12
12
  end
13
13
 
14
14
  def listen
15
- Listen.to("#{path}/config/", "#{path}/app/", force_polling: force_polling) do
16
- print "Rebuilding #{path}... "
17
- build_pieces
18
- puts 'done.'
15
+ Listen.to("#{path}/config/", "#{path}/app/views", force_polling: force_polling) do
16
+ rebuild_pieces
19
17
  end.tap(&:start)
20
18
  end
21
19
 
@@ -23,6 +21,31 @@ module Pieces
23
21
 
24
22
  def build_pieces
25
23
  Pieces::Builder.new(path: path).send(build_method)
24
+ rescue => e
25
+ output_backtrace(e)
26
+ exit(1)
27
+ end
28
+
29
+ def rebuild_pieces
30
+ print "\n[pieces]: Rebuilding #{File.basename(path)}... "
31
+ Pieces::Builder.new(path: path).send(build_method)
32
+ puts 'done.'
33
+ rescue => e
34
+ puts 'an error occurred.'
35
+ puts ''
36
+ output_backtrace(e)
37
+ end
38
+
39
+ def output_backtrace(exception)
40
+ puts "[pieces]: Exception occured: #{exception.message}"
41
+ puts '[pieces]:'
42
+
43
+ if defined?(::Rails)
44
+ trace = ::Rails.backtrace_cleaner.clean(exception.backtrace)
45
+ puts trace.map { |line| "[pieces]: #{line}" }
46
+ else
47
+ puts exception.backtrace.map { |line| "[pieces]: #{line}" }
48
+ end
26
49
  end
27
50
  end
28
51
  end
data/lib/pieces/rails.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'pieces/rails/railtie'
2
+ require 'pieces/server'
2
3
 
3
4
  module Pieces
4
5
  class Rails
@@ -10,7 +11,7 @@ module Pieces
10
11
  end
11
12
 
12
13
  def mount
13
- Pieces::Listener.new(path: path, build_method: :build_routes, force_polling: force_polling).listen
14
+ Pieces::Listener.new(path: path, force_polling: force_polling).listen
14
15
  Pieces::Server.new(path: path).app
15
16
  end
16
17
  end
data/lib/pieces/server.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rack'
2
2
  require 'listen'
3
+ require 'sprockets'
3
4
 
4
5
  module Pieces
5
6
  class Server < Rack::Server
@@ -15,13 +16,21 @@ module Pieces
15
16
  super
16
17
  end
17
18
 
19
+ def sprockets_env
20
+ Sprockets::Environment.new.tap do |env|
21
+ env.append_path 'app/assets/javascripts'
22
+ env.append_path 'app/assets/stylesheets'
23
+ end
24
+ end
25
+
18
26
  def app
19
- files = files_to_serve(path)
27
+ urls = files_to_serve(path)
20
28
  build_path = "#{path}/build"
21
29
 
22
30
  Rack::Builder.app do
23
31
  use Rack::Reloader
24
- use Rack::Static, urls: files, root: build_path, index: 'index.html'
32
+ use Rack::Static, urls: urls, root: build_path, index: 'index.html'
33
+ map('/assets') { run sprockets_env } unless defined? ::Rails
25
34
  run Proc.new { |env| [404, {}, ['Not found']] }
26
35
  end
27
36
  end
@@ -3,12 +3,8 @@ require 'tilt'
3
3
  module Tilt
4
4
  if respond_to?(:register_lazy)
5
5
  register_lazy 'Pieces::Tilt::MustacheTemplate', 'pieces/tilt/mustache', 'mustache', 'ms'
6
- register_lazy 'Pieces::Tilt::CssTemplate', 'pieces/tilt/css', 'css'
7
6
  else # support tilt v1
8
7
  require 'pieces/tilt/mustache'
9
8
  register Pieces::Tilt::MustacheTemplate, 'mustache', 'ms'
10
-
11
- require 'pieces/tilt/css'
12
- register Pieces::Tilt::CssTemplate, 'css'
13
9
  end
14
10
  end
@@ -1,3 +1,3 @@
1
1
  module Pieces
2
- VERSION = '0.4.2'
2
+ VERSION = '0.4.3'
3
3
  end
data/lib/pieces.rb CHANGED
@@ -1,9 +1,5 @@
1
- require 'pieces/compilers/route_compiler'
2
- require 'pieces/compilers/style_compiler'
3
1
  require 'pieces/builder'
4
- require 'pieces/generator'
5
2
  require 'pieces/listener'
6
- require 'pieces/server'
7
3
  require 'pieces/rails' if defined?(Rails)
8
4
  require 'pieces/version'
9
5
 
data/pieces.gemspec CHANGED
@@ -16,10 +16,11 @@ Gem::Specification.new do |spec|
16
16
  spec.executables = ['pieces']
17
17
  spec.require_paths = ['lib']
18
18
 
19
- spec.add_dependency 'tilt'#, '~> 2.0.1'
20
- spec.add_dependency 'thor'#, '~> 0.19.1'
21
- spec.add_dependency 'rack'#, '~> 1.6.1'
22
- spec.add_dependency 'listen'#, '~> 3.0.3'
19
+ spec.add_dependency 'tilt'
20
+ spec.add_dependency 'thor'
21
+ spec.add_dependency 'rack'
22
+ spec.add_dependency 'listen'
23
+ spec.add_dependency 'sprockets'
23
24
 
24
25
  spec.add_development_dependency 'bundler'
25
26
  spec.add_development_dependency 'codeclimate-test-reporter'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pieces
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luke Morton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-10 00:00:00.000000000 Z
11
+ date: 2015-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tilt
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sprockets
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -170,10 +184,14 @@ files:
170
184
  - bin/pieces
171
185
  - examples/boilerplate/.gitignore
172
186
  - examples/boilerplate/Gemfile
187
+ - examples/boilerplate/app/assets/stylesheets/components/header.css
188
+ - examples/boilerplate/app/assets/stylesheets/pieces.css
173
189
  - examples/boilerplate/app/views/application/footer.html.erb
174
190
  - examples/boilerplate/app/views/application/header.html.erb
175
191
  - examples/boilerplate/app/views/layouts/pieces.html.erb
176
192
  - examples/boilerplate/config/pieces.yml
193
+ - examples/original/Gemfile
194
+ - examples/original/app/assets/stylesheets/pieces.css
177
195
  - examples/original/app/views/application/footer.html.mustache
178
196
  - examples/original/app/views/application/header.html.erb
179
197
  - examples/original/app/views/layouts/layout.html.mustache
@@ -187,7 +205,9 @@ files:
187
205
  - examples/rails_app/app/assets/images/.keep
188
206
  - examples/rails_app/app/assets/javascripts/application.js
189
207
  - examples/rails_app/app/assets/stylesheets/application.css
190
- - examples/rails_app/app/assets/stylesheets/components/header.css
208
+ - examples/rails_app/app/assets/stylesheets/components/article_summary.scss
209
+ - examples/rails_app/app/assets/stylesheets/components/branding.scss
210
+ - examples/rails_app/app/assets/stylesheets/components/header.scss
191
211
  - examples/rails_app/app/assets/stylesheets/pieces.css
192
212
  - examples/rails_app/app/controllers/application_controller.rb
193
213
  - examples/rails_app/app/controllers/concerns/.keep
@@ -195,7 +215,10 @@ files:
195
215
  - examples/rails_app/app/mailers/.keep
196
216
  - examples/rails_app/app/models/.keep
197
217
  - examples/rails_app/app/models/concerns/.keep
218
+ - examples/rails_app/app/views/application/_branding.html.erb
219
+ - examples/rails_app/app/views/application/_footer.html.erb
198
220
  - examples/rails_app/app/views/application/_header.html.erb
221
+ - examples/rails_app/app/views/articles/_summary.html.erb
199
222
  - examples/rails_app/app/views/layouts/application.html.erb
200
223
  - examples/rails_app/app/views/layouts/pieces.html.erb
201
224
  - examples/rails_app/bin/bundle
@@ -236,14 +259,12 @@ files:
236
259
  - lib/pieces/builder.rb
237
260
  - lib/pieces/cli.rb
238
261
  - lib/pieces/compilers/route_compiler.rb
239
- - lib/pieces/compilers/style_compiler.rb
240
262
  - lib/pieces/generator.rb
241
263
  - lib/pieces/listener.rb
242
264
  - lib/pieces/rails.rb
243
265
  - lib/pieces/rails/install_generator.rb
244
266
  - lib/pieces/rails/railtie.rb
245
267
  - lib/pieces/server.rb
246
- - lib/pieces/tilt/css.rb
247
268
  - lib/pieces/tilt/mustache.rb
248
269
  - lib/pieces/tilt_extension.rb
249
270
  - lib/pieces/version.rb
@@ -1,4 +0,0 @@
1
- .header {
2
- font-size: 2em;
3
- margin: 2em;
4
- }
@@ -1,32 +0,0 @@
1
- module Pieces
2
- class StyleCompiler
3
- attr_reader :path
4
-
5
- def initialize(config = {})
6
- @path = config[:path] || Dir.pwd
7
- end
8
-
9
- def compile(files)
10
- files.merge('compiled.css' => { contents: '', type: 'css' }).tap do |files|
11
- files['compiled.css'][:contents] << yield_stylesheets('app/assets/stylesheets/components')
12
- files['compiled.css'][:contents] << yield_stylesheets('app/views')
13
- end
14
- end
15
-
16
- private
17
-
18
- def yield_stylesheets(dir)
19
- Dir["#{path}/#{dir}/**/*.{css,scss,sass,less}"].reduce('') do |contents, stylesheet|
20
- contents << ::Tilt.new(stylesheet, sass_config).render
21
- end
22
- end
23
-
24
- def sass_config
25
- if defined? Compass
26
- { load_paths: Compass.sass_engine_options[:load_paths] }
27
- else
28
- { load_paths: "#{path}/app/assets/stylesheets/" }
29
- end
30
- end
31
- end
32
- end
@@ -1,8 +0,0 @@
1
- require 'tilt/plain'
2
-
3
- module Pieces
4
- module Tilt
5
- class CssTemplate < ::Tilt::PlainTemplate
6
- end
7
- end
8
- end