middleman-sculptor 0.23 → 0.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +242 -0
  3. data/bin/middleman-sculptor +2 -1
  4. data/bin/sculpt +2 -1
  5. data/docs/styleguide-html.png +0 -0
  6. data/docs/styleguide-index.png +0 -0
  7. data/docs/styleguide-model.png +0 -0
  8. data/docs/styleguide-outline.png +0 -0
  9. data/docs/styleguide-page.png +0 -0
  10. data/lib/middleman-sculptor.rb +0 -6
  11. data/lib/middleman-sculptor/cli.rb +23 -50
  12. data/lib/middleman-sculptor/template.rb +5 -7
  13. data/lib/middleman-sculptor/template/.gitignore +3 -1
  14. data/lib/middleman-sculptor/template/Gemfile.tt +4 -3
  15. data/lib/middleman-sculptor/template/Procfile +2 -0
  16. data/lib/middleman-sculptor/template/config.tt +3 -34
  17. data/lib/middleman-sculptor/template/package.json +15 -0
  18. data/lib/middleman-sculptor/template/source/assets/{styles/app.scss → scripts/main.js} +0 -0
  19. data/lib/middleman-sculptor/template/source/assets/styles/main.scss +0 -0
  20. data/lib/middleman-sculptor/template/source/{assets/scripts/glyptotheque/directives.js → glyptotheque/app.js} +12 -3
  21. data/lib/middleman-sculptor/template/source/{assets/styles/glyptotheque → glyptotheque/styles}/_$variables.scss +0 -0
  22. data/lib/middleman-sculptor/template/source/{assets/styles/glyptotheque → glyptotheque/styles}/_base.scss +4 -1
  23. data/lib/middleman-sculptor/template/source/{assets/styles/glyptotheque → glyptotheque/styles}/_codehilite.scss +0 -0
  24. data/lib/middleman-sculptor/template/source/{assets/styles/glyptotheque → glyptotheque/styles}/_html-outline.scss +0 -0
  25. data/lib/middleman-sculptor/template/source/{assets/styles/glyptotheque → glyptotheque/styles}/_model-utils.scss +0 -0
  26. data/lib/middleman-sculptor/template/source/{assets/styles/glyptotheque → glyptotheque/styles}/_model.scss +1 -1
  27. data/lib/middleman-sculptor/template/source/{assets/styles/glyptotheque → glyptotheque/styles}/_nav.scss +0 -0
  28. data/lib/middleman-sculptor/template/source/glyptotheque/styles/main.scss +10 -0
  29. data/lib/middleman-sculptor/template/source/{assets → glyptotheque}/styles/pygments/borland.css +0 -0
  30. data/lib/middleman-sculptor/template/source/{assets → glyptotheque}/styles/pygments/colorful.css +0 -0
  31. data/lib/middleman-sculptor/template/source/{assets → glyptotheque}/styles/pygments/github.css +0 -0
  32. data/lib/middleman-sculptor/template/source/{assets → glyptotheque}/styles/pygments/trac.css +0 -0
  33. data/lib/middleman-sculptor/template/source/layouts/glyptotheque.slim +2 -1
  34. data/lib/middleman-sculptor/template/source/layouts/isolated.slim +1 -1
  35. data/lib/middleman-sculptor/template/source/layouts/layout.slim +1 -3
  36. data/lib/middleman-sculptor/template/webpack.config.js +33 -0
  37. data/lib/middleman-sculptor/version.rb +1 -1
  38. data/middleman-sculptor.gemspec +2 -2
  39. metadata +28 -28
  40. data/lib/middleman-sculptor/cli/init.rb +0 -15
  41. data/lib/middleman-sculptor/cli/version.rb +0 -12
  42. data/lib/middleman-sculptor/template/.bowerrc +0 -3
  43. data/lib/middleman-sculptor/template/bower.json +0 -12
  44. data/lib/middleman-sculptor/template/source/assets/scripts/app.js +0 -6
  45. data/lib/middleman-sculptor/template/source/assets/scripts/glyptotheque.js +0 -8
  46. data/lib/middleman-sculptor/template/source/assets/scripts/glyptotheque/controllers.js +0 -1
  47. data/lib/middleman-sculptor/template/source/assets/scripts/glyptotheque/services.js +0 -1
  48. data/lib/middleman-sculptor/template/source/assets/scripts/head-js.js +0 -1
  49. data/lib/middleman-sculptor/template/source/assets/scripts/iframe-js.js +0 -1
  50. data/lib/middleman-sculptor/template/source/assets/styles/glyptotheque.scss +0 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8a076e6340fdff4df5c95ef862403a32ba4c9ed
4
- data.tar.gz: 094e5c93a918bc9de06096f58caafacff9269bd5
3
+ metadata.gz: 45fd0f603841d316da9f2340d714617d8abbaa27
4
+ data.tar.gz: aafd2681e9302073fd7f8c5d3b1f0c9ecc3fc4e6
5
5
  SHA512:
6
- metadata.gz: 12d5cd04fa594ded0e24c7979cbd3d2aa52d5d000ef8ec250ef355562877a11a524ee18fa4dc1807e3480081b543e971ec098727ce5e2bdd7fdc07682847d0b4
7
- data.tar.gz: 891d8168ffda53b8ae98fbb54a91dd2233c52e5ddfa10774fe6ed86ca5b1cbb6c299195df492f41bf02bf24baed94c608ad55ee0836a6e20c4891bb4d229f004
6
+ metadata.gz: 8525b97bce54f935809577f2c6a2098a5b2d0d0e6b4e330cc03246d967e48d840e6a0d74f663ffe730db1f1095387bf255ed640eeb9fedc39084a36e2e934034
7
+ data.tar.gz: c072b875290dbc23615a059468befe18ad45fb42697e3c598aed3916b18b521bd75bf8df57df58f8e9cee37fd05be238773e83368800219445b5e91d7affcf7a
@@ -0,0 +1,242 @@
1
+ # Middleman Sculptor
2
+
3
+ [Middleman](https://middlemanapp.com/) extension for creation of interactive styleguides and code examples.
4
+
5
+ ## Installation
6
+
7
+ $ gem install middleman-sculptor
8
+
9
+ ## Usage
10
+
11
+ Middleman Sculptor has an excecutable `middleman-sculptor`. It is also aliased to `sculpt`.
12
+
13
+ To see the list of available commands run `sculpt help`. Sculptor extends [Middleman](https://github.com/middleman/middleman) so all Middleman commands also apply, although they currently do not appear under the `sculptor help` command.
14
+
15
+ ### New project
16
+
17
+ To start a new project:
18
+
19
+ $ middleman-sculptor init project-name
20
+
21
+ This will create a new directory `project-name` with templates for a new styleguide. It also installs Ruby and NPM dependencies.
22
+
23
+ Aliases: `i` and `n`.
24
+
25
+ ### Configuring external Sass load paths and assets
26
+
27
+ Middleman Sculptor uses [Webpack](https://webpack.github.io/) to bundle up its JavaScript. This allows writing JS in CommonJS or AMD style. Then JS is passed to Asset Pipiline to be served.
28
+
29
+ To use an NPM JS Library just `npm install` it and Webpack will pick it up. To use Sass library or make images discoverable by Asset Pipeline (e.g. [Mojular GOV.UK Elements](https://github.com/mojular/govuk-elements)) add relevant paths to `Sass.load_paths` and Sprockets in `config.rb`:
30
+
31
+ ```ruby
32
+ # Sass load paths
33
+ govuk_elements_path = File.join(root, 'node_modules/mojular-govuk-elements')
34
+ JSON.parse(IO.read("#{govuk_elements_path}/package.json"))['paths']['sass'].each do |p|
35
+ Sass.load_paths << File.expand_path("#{govuk_elements_path}/#{p}")
36
+ end
37
+
38
+ # Sprockets
39
+ ready do
40
+ moj_images = File.join(root, 'node_modules', 'mojular-govuk-elements', 'assets', 'images')
41
+ sprockets.append_path moj_images
42
+
43
+ Dir.chdir(moj_images) do
44
+ Dir['**/*.{js,png,jpg}'].each do |asset|
45
+ sprockets.import_asset(asset)
46
+ end
47
+ end
48
+ end
49
+ ```
50
+
51
+ #### Project structure
52
+
53
+ When Sculptor generates a new project it adds a few files and directories that are used for the styleguide UI. They are called or prefixed with the word *glyptotheque* and can be edited to customise the look and feel of the styleguide.
54
+
55
+ ### Existing project
56
+
57
+ To update Sculptor in an existing project run `middleman-sculptor init` in the project folder. It's recommended to have the existing project in a version control system so that any conflicting local changes can be easily reapplied.
58
+
59
+
60
+ ### Running local server
61
+
62
+ Bundle up JavaScript using Webpack:
63
+
64
+ $ node_modules/.bin/webpack
65
+
66
+ Or install it globally `npm install -g webpack` and run using `webpack` command. You can leave it running in another terminal tab `webpack --watch`.
67
+
68
+ During the development run local [Middleman server](https://middlemanapp.com/basics/development_cycle/):
69
+
70
+ $ middleman server
71
+
72
+ `server` is optional and is the default command so can be omitted.
73
+
74
+ *Recommended* way is to run both using [Foreman](https://github.com/ddollar/foreman) (included in Gemfile):
75
+
76
+ $ foreman start
77
+
78
+ This will launch Middleman server and Webpack watch together.
79
+
80
+
81
+ ## Creating a styleguide
82
+
83
+ A styleguide is a collection of html snippets called **models**. Sculptor extends Middleman with several new helpers and templates that wrap these snippets.
84
+
85
+ Middleman supports a [number of templates](https://middlemanapp.com/basics/template_engine_options/) so any ERB, Haml or Slim should all work the same but it's mostly been tested with Slim.
86
+
87
+ To start, create a new page anywhere in `source` directory. It should have a [Frontmatter](https://middlemanapp.com/basics/frontmatter/) with at least one property `title`.
88
+
89
+ Let's say we create a new page `source/button.html.slim`
90
+
91
+ ```slim
92
+ ---
93
+ title: Button
94
+ ---
95
+
96
+ = model
97
+ button Click me
98
+ ```
99
+
100
+ Now if we run `middleman server` and go to http://localhost:4567/, we'll see a menu in the left-hand side sidebar with *Button* entry. There is also a box in the main section called *Button*. They both link to our new page.
101
+
102
+ <img src=docs/styleguide-index.png width=800>
103
+
104
+ The Button page shows the model, and toggles to show its source and structure outline.
105
+
106
+ <img src=docs/styleguide-page.png width=800>
107
+
108
+ Each additional model will appear on the page and can be mixed with any other HTML. For example, documentation on usage of a particular component.
109
+
110
+ NB: Due to the way Sculptor extracts models from template to make them accessible by URLs, some pages may require a server restart after they are added/renamed.
111
+
112
+
113
+ ## Adding stylesheets
114
+
115
+ Sculptor uses Sass by default but other CSS preprocessors or vanilla CSS can be used.
116
+
117
+ Styles can be placed in the same directory as the HTML file, or in the `assets` directory. To ensure the styles properly integrate with the assets pipeline, it's recommended to place styles in the `assets/styles` directory or anywhere within the `source` directory as long as they are in subdirectory called `styles`. Then the Sass can correctly import other stylesheets (including external dependencies) and find images.
118
+
119
+ Let's create a new stylesheet for our button. Create a new file `source/styles/generic.scss` with the following contents:
120
+
121
+ ```scss
122
+ button {
123
+ padding: 20px;
124
+ background: #ddd;
125
+ font-size: 1em;
126
+ border: 0;
127
+ }
128
+ ```
129
+
130
+ To include this stylesheet in the file add the `stylesheet` property to file's Frontmatter:
131
+
132
+ ```yaml
133
+ ---
134
+ title: Button
135
+ stylesheet: styles/generic
136
+ ---
137
+ ```
138
+
139
+ The path is relative to the file's location. It can also include relative paths (e.g. `../another-directory/style.scss`). To use `source` directory as root start path with `/` (e.g. `/styles/generic.scss`).
140
+
141
+ The property can also be called `stylesheets` and include a list of files, either comma-separated or list separated, e.g.:
142
+
143
+ ```yaml
144
+ stylesheets: base, form, footer
145
+ ```
146
+
147
+ ```yaml
148
+ stylesheets:
149
+ - base
150
+ - form
151
+ - footer
152
+ ```
153
+
154
+ ## Adding JavaScript
155
+
156
+ Similarly to styles, JS files can be injected.
157
+
158
+ ```yaml
159
+ javascript: js/button.js
160
+ ```
161
+
162
+ ## Models
163
+
164
+ Each page can contain any number of *models*, the extracts of HTML that are rendered on HTML page several treatments:
165
+
166
+ - The snippet is rendered on HTML page in a special container
167
+ <img src=docs/styleguide-model.png width=400>
168
+
169
+ - It has an **Outline** toggle that shows the structure of the HTML snippet
170
+ <img src=docs/styleguide-outline.png width=400>
171
+
172
+ - It has an **HTML Source** toggle that shows the HTML snippet code
173
+ <img src=docs/styleguide-html.png width=400>
174
+
175
+ There are two types of models: **inline** and **iframe**.
176
+
177
+ ### Inline models
178
+
179
+ Good for rendering isolated components which styles are scoped in components selector and don't affect the rest of the page.
180
+
181
+ This is a standard model helper. It renders its contents and styles directly in the page.
182
+
183
+ [Slim Template Language](https://github.com/slim-template/slim) also parses standard HTML which makes it great for quickly generating pages. Although currently Slim minifies rendered HTML. Slim also allows [embedding of other languages](https://github.com/slim-template/slim#embedded-engines-markdown-). I recommend embedding your code in `erb:`
184
+
185
+ ```slim
186
+ = model
187
+ erb:
188
+ <h1 class="page-title">Sculptor</h1>
189
+ ```
190
+
191
+ This way the white spaces are preserved.
192
+
193
+ ### iframe models
194
+
195
+ When the embedded styles or JS need to be encapsulated, use iframe model. It will render its contents in the iframe and resize appropriately.
196
+
197
+ The first parameter is required and used to generate a file for each model which is used as iframe source.
198
+
199
+ This model also adds an **isolate** button which links to those individual files, allowing you to view each component on its own without any of Sculptor's UI.
200
+
201
+ ```slim
202
+ = model 'title',
203
+ iframe: true
204
+ erb:
205
+ <h1 class="page-title">Sculptor</h1>
206
+ ```
207
+
208
+ Or using an alias:
209
+
210
+ ```slim
211
+ = imodel 'title'
212
+ erb:
213
+ <h1 class="page-title">Sculptor</h1>
214
+ ```
215
+
216
+ ### Remote grab
217
+
218
+ Model can also have a remote source.
219
+
220
+ ```slim
221
+ = imodel 'bbc',
222
+ url: 'http://www.bbc.co.uk/',
223
+ css: '#h4weather'
224
+ ```
225
+
226
+ - `url` points to any public webpage (JS is not loaded)
227
+ - `css` grabs only the specified CSS selector. If multiple elements match, they are all returned. To pick a specific element within multiple returned, select it by the 0-index (separate selector from index by at least 1 space): `css: 'h2 #2'`
228
+
229
+ It's also possible to include remote CSS and JS.
230
+
231
+ ```yaml
232
+ ---
233
+ stylesheet: http://static.bbci.co.uk/h4weather/0.82.2/style/h4weather.css
234
+ javascript: http://code.jquery.com/jquery-2.1.4.min.js
235
+ ---
236
+ ```
237
+
238
+ ---
239
+
240
+ ### Examples
241
+
242
+ - [Playground for GOV.UK elements](http://ministryofjustice.github.io/bower-playground/)
@@ -2,6 +2,7 @@
2
2
 
3
3
  $LOAD_PATH << File.expand_path('../lib', __FILE__)
4
4
 
5
- require 'middleman-sculptor'
5
+ require "middleman-core/load_paths"
6
+ require 'middleman-sculptor/cli'
6
7
 
7
8
  Middleman::Sculptor::Cli::Base.start
data/bin/sculpt CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  $LOAD_PATH << File.expand_path('../lib', __FILE__)
4
4
 
5
- require 'middleman-sculptor'
5
+ require "middleman-core/load_paths"
6
+ require 'middleman-sculptor/cli'
6
7
 
7
8
  Middleman::Sculptor::Cli::Base.start
Binary file
Binary file
Binary file
Binary file
@@ -4,12 +4,6 @@ require 'middleman-sculptor/cli'
4
4
  require 'middleman-sculptor/resource_patch'
5
5
  require 'middleman-sculptor/sprockets_patch'
6
6
 
7
- begin
8
- require "middleman-sculptor/template"
9
- rescue LoadError
10
- # v4
11
- end
12
-
13
7
  ::Middleman::Extensions.register(:sculptor) do
14
8
  require 'middleman-sculptor/extension'
15
9
  ::Middleman::SculptorExtension
@@ -1,56 +1,29 @@
1
- require 'middleman-core/cli'
2
-
3
- require 'middleman-sculptor/cli/version'
4
- require 'middleman-sculptor/cli/init'
5
-
6
- module Middleman::Sculptor::Cli
7
- class Base < Thor
8
- @@middleman_classes = []
9
-
10
- def self.exit_on_failure?
11
- true
12
- end
13
-
14
- def self.add_middleman_task(klass)
15
- klass.namespace "sculptor_#{klass.namespace}"
16
- @@middleman_classes << klass
17
- end
18
-
19
- add_middleman_task Middleman::Cli::Init
20
- # add_middleman_task Middleman::Cli::Server
1
+ require 'thor'
2
+ require 'middleman-core/version'
3
+ require 'middleman-sculptor/version'
4
+ begin
5
+ # v4
6
+ require 'middleman-cli'
7
+ $template_name = 'tyom/middleman-templates-sculptor#wip'
8
+ rescue LoadError
9
+ require 'middleman-core/cli'
10
+ require 'middleman-sculptor/template'
11
+ $template_name = :sculptor
12
+ end
21
13
 
22
- def help(meth=nil, subcommand=false)
23
- if meth && !self.respond_to?(meth)
24
- klass, task = Thor::Util.find_class_and_task_by_namespace("sculptor_#{meth}:#{meth}")
25
- klass.start(['-h', task].compact, shell: shell)
26
- else
27
- list = []
28
- sculptor_classes = Thor::Util.thor_classes_in(Middleman::Sculptor::Cli)
29
- classes = @@middleman_classes + sculptor_classes
30
- classes.each do |thor_class|
31
- list += thor_class.printable_tasks(false)
14
+ module Middleman
15
+ module Sculptor
16
+ module Cli
17
+ class Base < Thor
18
+ desc 'version', 'Show version'
19
+ def version
20
+ say "Sculptor #{Middleman::Sculptor::VERSION} (Middleman #{Middleman::VERSION})"
32
21
  end
33
- list.sort! { |a, b| a[0] <=> b[0] }
34
-
35
- shell.say 'Tasks:'
36
- shell.print_table(list, indent: 2, truncate: true)
37
- shell.say
38
- end
39
- end
40
22
 
41
- # Intercept missing methods and search subtasks for them
42
- # @param [Symbol] meth
43
- def method_missing(meth, *args)
44
- meth = meth.to_s
45
- meth = self.class.map[meth] if self.class.map.key?(meth)
46
-
47
- klass, task = Thor::Util.find_class_and_task_by_namespace("sculptor_#{meth}:#{meth}")
48
-
49
- if klass.nil?
50
- raise Thor::Error, "Command '#{meth}' not found. Try 'middleman-sculptor help' for a list of commands."
51
- else
52
- args.unshift(task) if task
53
- klass.start(args, shell: shell)
23
+ desc 'init', 'Initialize new Sculptor project'
24
+ def init(target='.')
25
+ invoke ::Middleman::Cli::Init, [:init, target], template: $template_name
26
+ end
54
27
  end
55
28
  end
56
29
  end
@@ -19,18 +19,16 @@ module Middleman
19
19
  template 'config.tt', File.join(location, 'config.rb')
20
20
  copy_file '.gitignore', File.join(location, '.gitignore')
21
21
  copy_file '.editorconfig', File.join(location, '.editorconfig')
22
- copy_file '.bowerrc', File.join(location, '.bowerrc')
23
- copy_file 'bower.json', File.join(location, 'bower.json')
22
+ copy_file 'Procfile', File.join(location, 'Procfile')
23
+ copy_file 'package.json', File.join(location, 'package.json')
24
+ copy_file 'webpack.config.js', File.join(location, 'webpack.config.js')
24
25
 
25
26
  directory 'source', File.join(location, 'source')
26
27
  directory 'data', File.join(location, 'data')
27
28
  end
28
29
 
29
- def handle_bower
30
- # Install Bower if necessary
31
- run("command -v bower >/dev/null 2>&1 || npm install -g bower")
32
- # Install dependencies
33
- run("cd #{location}; bower install")
30
+ def run_npm
31
+ run("cd #{location}; npm install")
34
32
  end
35
33
  end
36
34
  end
@@ -1,2 +1,4 @@
1
- bower_components
1
+ bower_components/
2
+ node_modules/
2
3
  build/
4
+ *.bundle.js
@@ -1,12 +1,13 @@
1
1
  # If you have OpenSSL installed, we recommend updating
2
2
  # the following line to use "https"
3
- source 'http://rubygems.org'
3
+ source 'https://rubygems.org'
4
4
 
5
5
  gem 'middleman', '~> <%= Middleman::VERSION %>'
6
6
  gem 'middleman-sculptor', '~> <%= Middleman::Sculptor::VERSION %>'
7
- gem 'middleman-livereload', '~> 3.4.2'
8
- gem 'middleman-deploy', '~> 1.0.0'
7
+ gem 'middleman-livereload'
8
+ gem 'middleman-deploy'
9
9
  gem 'middleman-autoprefixer'
10
10
  gem 'middleman-syntax'
11
11
  gem 'bourbon'
12
12
  gem 'breakpoint'
13
+ gem 'foreman'
@@ -0,0 +1,2 @@
1
+ web: middleman server
2
+ webpack: node_modules/.bin/webpack --watch
@@ -65,43 +65,12 @@ activate :autoprefixer
65
65
  # helpers do
66
66
  # end
67
67
 
68
- <% if options[:css_dir] -%>
69
- set :css_dir, '<%= options[:css_dir] -%>'
70
- <% else -%>
71
- # Change the CSS directory
72
- # set :css_dir, "alternative_css_directory"
73
- <% end -%>
74
- <% if options[:js_dir] -%>
75
- set :js_dir, '<%= options[:js_dir] -%>'
76
- <% else -%>
77
- # Change the JS directory
78
- # set :js_dir, "alternative_js_directory"
79
- <% end -%>
80
- <% if options[:images_dir] -%>
81
- set :images_dir, '<%= options[:images_dir] -%>'
82
- <% else -%>
83
- # Change the images directory
84
- # set :images_dir, "alternative_image_directory"
85
- <% end -%>
68
+ set :css_dir, 'assets/styles'
69
+ set :js_dir, 'assets/scripts'
70
+ set :images_dir, 'assets/images'
86
71
 
87
72
  set :relative_links, true
88
73
 
89
- bowerrc_dir = JSON.parse(IO.read("#{root}/.bowerrc"))['directory']
90
-
91
- # Compass configuration
92
- compass_config do |config|
93
- config.sass_options = {
94
- quiet: true
95
- }
96
- # For Style Guide CSS sources
97
- # config.output_style = :expanded
98
- end
99
-
100
- # Sprockets
101
- ready do
102
- sprockets.append_path(File.join(root, bowerrc_dir))
103
- end
104
-
105
74
  Slim::Engine.disable_option_validator!
106
75
  Slim::Engine.set_options pretty: true
107
76
  Slim::Engine.set_options attr_list_delims: { '(' => ')', '[' => ']' }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "glyptotheque",
3
+ "private": true,
4
+ "dependencies": {
5
+ "angular": "^1.4.7",
6
+ "iframe-resizer": "^3.4.2",
7
+ "lodash": "^3.10.1",
8
+ "mousetrap": "^1.5.3",
9
+ "store": "^1.3.17"
10
+ },
11
+ "devDependencies": {
12
+ "expose-loader": "^0.7.0",
13
+ "webpack": "^1.12.2"
14
+ }
15
+ }
@@ -1,4 +1,8 @@
1
- angular.module('directives', [])
1
+ var angular = require('angular');
2
+ var Mousetrap = require('mousetrap');
3
+ var iFrameResize = require('iframe-resizer').iframeResizer;
4
+
5
+ angular.module('glyptotheque', [])
2
6
 
3
7
  .directive('glyptoModel', function($compile, $http, $templateCache) {
4
8
  return {
@@ -116,12 +120,17 @@ angular.module('directives', [])
116
120
 
117
121
  $scope.$watch('navIsHidden', function() {
118
122
  if(iframe.contentWindow.parentIFrame) {
119
- // compensata for nav transition
123
+ // compensate for nav transition
120
124
  setTimeout(function() {
121
125
  iframe.contentWindow.parentIFrame.size();
122
- }, 400)
126
+ }, 400);
123
127
  }
124
128
  });
125
129
  }
126
130
  };
127
131
  });
132
+
133
+ iFrameResize({
134
+ enablePublicMethods: true,
135
+ heightCalculationMethod: 'lowestElement'
136
+ });
@@ -6,10 +6,13 @@
6
6
  }
7
7
  }
8
8
 
9
+ html {
10
+ font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
11
+ }
12
+
9
13
  body {
10
14
  padding: 0;
11
15
  margin: 0;
12
- font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
13
16
  min-height: 100%;
14
17
  }
15
18
 
@@ -1,4 +1,4 @@
1
- @import 'pygments/github';
1
+ @import 'pygments/github.css';
2
2
 
3
3
  .glypto-model {
4
4
  $_transition: 400ms ease-out 700ms;
@@ -0,0 +1,10 @@
1
+ @import 'bourbon';
2
+ @import 'breakpoint';
3
+
4
+ @import '$variables';
5
+ @import 'base';
6
+ @import 'nav';
7
+ @import 'model';
8
+ @import 'model-utils';
9
+ @import 'html-outline';
10
+ @import 'codehilite';
@@ -1,7 +1,8 @@
1
1
  - content_for :page_title, page_title
2
2
  - content_for :ng_app, 'glyptotheque'
3
- - content_for :stylesheets, stylesheet_link_tag('glyptotheque')
3
+ - content_for :stylesheets, stylesheet_link_tag('/glyptotheque/styles/main')
4
4
  - content_for :body_class, "section-#{get_section_of_resource(current_page).slug}"
5
+ - content_for :javascripts, javascript_include_tag('glyptotheque/scripts/glyptotheque.bundle')
5
6
 
6
7
  = wrap_layout :layout do
7
8
  - if resource_tree('/').any?
@@ -19,7 +19,7 @@ html
19
19
  body class="#{yield_content(:body_class)}"
20
20
  = current_model.html
21
21
 
22
- = javascript_include_tag 'iframe-js'
22
+ = javascript_include_tag 'glyptotheque/scripts/iframe-content-window.bundle'
23
23
  = yield_content :javascripts
24
24
  - if current_resource.metadata.options.iframe
25
25
  = include_javascripts(current_model[:javascript] || current_page.data.javascripts || current_page.data.javascript)
@@ -5,13 +5,11 @@ html ng-app=(yield_content(:ng_app))
5
5
  title = yield_content :page_title
6
6
  meta name='viewport' content='width=device-width'
7
7
  = stylesheet_link_tag '//netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css'
8
- - content_for :stylesheets, stylesheet_link_tag('app')
9
8
  = yield_content :stylesheets
10
- = javascript_include_tag 'head-js'
9
+ = javascript_include_tag 'glyptotheque/scripts/store.bundle'
11
10
 
12
11
  body class="#{yield_content(:body_class)}"
13
12
  = yield
14
13
 
15
14
  = yield_content :javascripts
16
- = javascript_include_tag 'app'
17
15
  = yield_content :post_body
@@ -0,0 +1,33 @@
1
+ var webpack = require("webpack");
2
+
3
+ module.exports = {
4
+ entry: {
5
+ 'iframe-content-window': 'iframeContentWindow',
6
+ glyptotheque: './source/glyptotheque/app.js',
7
+ main: './source/assets/scripts/main.js',
8
+ store: 'store',
9
+ },
10
+ output: {
11
+ path: './source/glyptotheque/scripts',
12
+ filename: '[name].bundle.js'
13
+ },
14
+ module: {
15
+ loaders: [
16
+ { include: /\.json$/, loaders: ['json-loader'] },
17
+ { include: /store\.js$/, loader: 'expose?store' }
18
+ ]
19
+ },
20
+ resolve: {
21
+ alias: {
22
+ 'iframeContentWindow': './node_modules/iframe-resizer/js/iframeResizer.contentWindow.min.js'
23
+ },
24
+ modulesDirectories: [
25
+ 'node_modules',
26
+ 'node_modules/mojular/node_modules'
27
+ ],
28
+ extensions: ['', '.json', '.js']
29
+ },
30
+ plugins: [
31
+ new webpack.optimize.DedupePlugin()
32
+ ]
33
+ };
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module Sculptor
3
- VERSION = "0.23"
3
+ VERSION = '0.24'
4
4
  end
5
5
  end
@@ -20,10 +20,10 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ['lib']
21
21
  s.required_ruby_version = '>= 1.9.3'
22
22
 
23
- s.add_dependency 'middleman-core', '~> 3.3'
23
+ s.add_dependency 'middleman-core', '~> 3.4'
24
24
  s.add_dependency 'middleman-sprockets', '~> 3.4'
25
25
  s.add_dependency 'rest-client', '>= 1.7.3'
26
- s.add_dependency "nokogiri", [">= 1.6", "< 2.0"]
26
+ s.add_dependency 'nokogiri', ['>= 1.6', '< 2.0']
27
27
  s.add_dependency 'oj', '~> 2.10.2'
28
28
  s.add_dependency 'slim', '>= 3.0'
29
29
  s.add_dependency 'pry'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-sculptor
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.23'
4
+ version: '0.24'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyom Semonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-20 00:00:00.000000000 Z
11
+ date: 2015-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: middleman-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.3'
19
+ version: '3.4'
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
- version: '3.3'
26
+ version: '3.4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: middleman-sprockets
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -127,13 +127,17 @@ files:
127
127
  - ".gitignore"
128
128
  - Gemfile
129
129
  - LICENCE.md
130
+ - README.md
130
131
  - Rakefile
131
132
  - bin/middleman-sculptor
132
133
  - bin/sculpt
134
+ - docs/styleguide-html.png
135
+ - docs/styleguide-index.png
136
+ - docs/styleguide-model.png
137
+ - docs/styleguide-outline.png
138
+ - docs/styleguide-page.png
133
139
  - lib/middleman-sculptor.rb
134
140
  - lib/middleman-sculptor/cli.rb
135
- - lib/middleman-sculptor/cli/init.rb
136
- - lib/middleman-sculptor/cli/version.rb
137
141
  - lib/middleman-sculptor/extension.rb
138
142
  - lib/middleman-sculptor/hash_dot_syntax.rb
139
143
  - lib/middleman-sculptor/helpers/model.rb
@@ -142,45 +146,41 @@ files:
142
146
  - lib/middleman-sculptor/resource_patch.rb
143
147
  - lib/middleman-sculptor/sprockets_patch.rb
144
148
  - lib/middleman-sculptor/template.rb
145
- - lib/middleman-sculptor/template/.bowerrc
146
149
  - lib/middleman-sculptor/template/.editorconfig
147
150
  - lib/middleman-sculptor/template/.gitignore
148
151
  - lib/middleman-sculptor/template/Gemfile.tt
149
- - lib/middleman-sculptor/template/bower.json
152
+ - lib/middleman-sculptor/template/Procfile
150
153
  - lib/middleman-sculptor/template/config.tt
151
154
  - lib/middleman-sculptor/template/data/.gitkeep
155
+ - lib/middleman-sculptor/template/package.json
152
156
  - lib/middleman-sculptor/template/source/assets/images/.gitkeep
153
- - lib/middleman-sculptor/template/source/assets/scripts/app.js
154
- - lib/middleman-sculptor/template/source/assets/scripts/glyptotheque.js
155
- - lib/middleman-sculptor/template/source/assets/scripts/glyptotheque/controllers.js
156
- - lib/middleman-sculptor/template/source/assets/scripts/glyptotheque/directives.js
157
- - lib/middleman-sculptor/template/source/assets/scripts/glyptotheque/services.js
158
- - lib/middleman-sculptor/template/source/assets/scripts/head-js.js
159
- - lib/middleman-sculptor/template/source/assets/scripts/iframe-js.js
160
- - lib/middleman-sculptor/template/source/assets/styles/app.scss
161
- - lib/middleman-sculptor/template/source/assets/styles/glyptotheque.scss
162
- - lib/middleman-sculptor/template/source/assets/styles/glyptotheque/_$variables.scss
163
- - lib/middleman-sculptor/template/source/assets/styles/glyptotheque/_base.scss
164
- - lib/middleman-sculptor/template/source/assets/styles/glyptotheque/_codehilite.scss
165
- - lib/middleman-sculptor/template/source/assets/styles/glyptotheque/_html-outline.scss
166
- - lib/middleman-sculptor/template/source/assets/styles/glyptotheque/_model-utils.scss
167
- - lib/middleman-sculptor/template/source/assets/styles/glyptotheque/_model.scss
168
- - lib/middleman-sculptor/template/source/assets/styles/glyptotheque/_nav.scss
169
- - lib/middleman-sculptor/template/source/assets/styles/pygments/borland.css
170
- - lib/middleman-sculptor/template/source/assets/styles/pygments/colorful.css
171
- - lib/middleman-sculptor/template/source/assets/styles/pygments/github.css
172
- - lib/middleman-sculptor/template/source/assets/styles/pygments/trac.css
157
+ - lib/middleman-sculptor/template/source/assets/scripts/main.js
158
+ - lib/middleman-sculptor/template/source/assets/styles/main.scss
173
159
  - lib/middleman-sculptor/template/source/glyptotheque/_model-outline-element.slim
174
160
  - lib/middleman-sculptor/template/source/glyptotheque/_model-outline.slim
175
161
  - lib/middleman-sculptor/template/source/glyptotheque/_model-utils.slim
176
162
  - lib/middleman-sculptor/template/source/glyptotheque/_model.slim
177
163
  - lib/middleman-sculptor/template/source/glyptotheque/_nav.slim
164
+ - lib/middleman-sculptor/template/source/glyptotheque/app.js
178
165
  - lib/middleman-sculptor/template/source/glyptotheque/directory-index.html.slim
179
166
  - lib/middleman-sculptor/template/source/glyptotheque/site-index.html.slim
180
167
  - lib/middleman-sculptor/template/source/glyptotheque/sitemap.json.erb
168
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/_$variables.scss
169
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/_base.scss
170
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/_codehilite.scss
171
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/_html-outline.scss
172
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/_model-utils.scss
173
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/_model.scss
174
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/_nav.scss
175
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/main.scss
176
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/pygments/borland.css
177
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/pygments/colorful.css
178
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/pygments/github.css
179
+ - lib/middleman-sculptor/template/source/glyptotheque/styles/pygments/trac.css
181
180
  - lib/middleman-sculptor/template/source/layouts/glyptotheque.slim
182
181
  - lib/middleman-sculptor/template/source/layouts/isolated.slim
183
182
  - lib/middleman-sculptor/template/source/layouts/layout.slim
183
+ - lib/middleman-sculptor/template/webpack.config.js
184
184
  - lib/middleman-sculptor/version.rb
185
185
  - lib/middleman_extension.rb
186
186
  - middleman-sculptor.gemspec
@@ -1,15 +0,0 @@
1
- require 'middleman-core/cli'
2
-
3
- module Middleman::Cli
4
- class Init < Thor
5
- def init(name='.')
6
- key = :sculptor
7
- unless ::Middleman::Templates.registered.key?(key)
8
- raise Thor::Error, "Unknown project template '#{key}'"
9
- end
10
-
11
- thor_group = ::Middleman::Templates.registered[key]
12
- thor_group.new([name], options).invoke_all
13
- end
14
- end
15
- end
@@ -1,12 +0,0 @@
1
- require 'middleman-sculptor/version'
2
-
3
- module Middleman::Sculptor::Cli
4
- class Version < Thor
5
- namespace :sculptor_version
6
-
7
- desc 'version', 'Show version'
8
- def version
9
- say "Sculptor #{Middleman::Sculptor::VERSION} (Middleman #{Middleman::VERSION})"
10
- end
11
- end
12
- end
@@ -1,3 +0,0 @@
1
- {
2
- "directory" : "bower_components"
3
- }
@@ -1,12 +0,0 @@
1
- {
2
- "name": "sculptor",
3
- "version": "0.0.1",
4
- "private": "true",
5
- "dependencies": {
6
- "angular": "~1.2.16",
7
- "lodash": "*",
8
- "mousetrap": "~1.4.6",
9
- "store": "~2.1.6",
10
- "iframe-resizer": "~2.8.6"
11
- }
12
- }
@@ -1,6 +0,0 @@
1
- //= require angular
2
- //= require lodash
3
- //= require iframe-resizer/js/iframeResizer.min
4
- //= require mousetrap/mousetrap.min
5
-
6
- //= require glyptotheque
@@ -1,8 +0,0 @@
1
- //= require_tree ./glyptotheque
2
-
3
- angular.module('glyptotheque', ['directives', 'controllers', 'services']);
4
-
5
- iFrameResize({
6
- enablePublicMethods: true,
7
- heightCalculationMethod: 'lowestElement'
8
- });
@@ -1 +0,0 @@
1
- angular.module('controllers', []);
@@ -1 +0,0 @@
1
- //= require iframe-resizer/js/iframeResizer.contentWindow.min
@@ -1,10 +0,0 @@
1
- @import 'bourbon';
2
- @import 'breakpoint';
3
-
4
- @import 'glyptotheque/$variables';
5
- @import 'glyptotheque/base';
6
- @import 'glyptotheque/nav';
7
- @import 'glyptotheque/model';
8
- @import 'glyptotheque/model-utils';
9
- @import 'glyptotheque/html-outline';
10
- @import 'glyptotheque/codehilite';