styledown2-rails 2.0.0.pre5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/Gemfile +3 -0
- data/README.md +40 -0
- data/Rakefile +10 -0
- data/docs/api.md +3 -0
- data/docs/manual_install.md +50 -0
- data/lib/styledown/rails.rb +3 -0
- data/lib/styledown/rails/controller.rb +29 -0
- data/lib/styledown/rails/controller_integration.rb +126 -0
- data/lib/styledown/rails/version.rb +5 -0
- data/lib/styledown2-rails.rb +1 -0
- data/styledown2-rails.gemspec +25 -0
- metadata +112 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: df323d809dbb7a979351c5ea908c05dac8b75009
|
4
|
+
data.tar.gz: 1eabf0f30e4ce5c5d524434a30073978abe58e7d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d952a6143a4ef4ed5fe0825b3fd9b73e73499580536d538134de57a0508e720de86e41895e2ad039a4d967b5046c7ca3b1c547211e151ce0a2f8f00168af0b09
|
7
|
+
data.tar.gz: f8290b9856ffcc9a5629f368677bcf8e5b5fbbe43f054feed5691e5bdb631254352be648be4653403c78d1f6e88f5ebd0fafb0d068d5135ac243855ca43e2e7c
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# Styledown for Rails
|
2
|
+
|
3
|
+
> Write maintainable CSS styleguides using Markdown
|
4
|
+
|
5
|
+
|
6
|
+
## Install
|
7
|
+
|
8
|
+
Add the gem to your `Gemfile` and type `bundle install`.
|
9
|
+
|
10
|
+
```rb
|
11
|
+
gem 'styledown2-rails'
|
12
|
+
```
|
13
|
+
|
14
|
+
Use the `styledown:install` generator to add the default files.
|
15
|
+
|
16
|
+
```rb
|
17
|
+
rails g styledown:install
|
18
|
+
```
|
19
|
+
|
20
|
+
You can also skip using the generator and write the files yourself. See [Manual install](docs/manual_install.md) for details.
|
21
|
+
|
22
|
+
## Writing styleguides
|
23
|
+
|
24
|
+
See Styledown2 documentation.
|
25
|
+
|
26
|
+
## API
|
27
|
+
|
28
|
+
See [API documentation](docs/api.md).
|
29
|
+
|
30
|
+
## Thanks
|
31
|
+
|
32
|
+
**styledown2-rails** © 2017+, Rico Sta. Cruz. Released under the [MIT] License.<br>
|
33
|
+
** © 2017+, Rico Sta. Cruz. Released under the [MIT] License.<br>
|
34
|
+
Authored and maintained by Rico Sta. Cruz with help from contributors ([list][contributors]).
|
35
|
+
|
36
|
+
> [ricostacruz.com](http://ricostacruz.com) ·
|
37
|
+
> GitHub [@rstacruz](https://github.com/rstacruz) ·
|
38
|
+
> Twitter [@rstacruz](https://twitter.com/rstacruz)
|
39
|
+
|
40
|
+
[contributors]: http://github.com/styledown/styledown2-rails/contributors
|
data/Rakefile
ADDED
data/docs/api.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# Manual install
|
2
|
+
|
3
|
+
If you prefer not to use the `styledown:install` generator, you can install Styledown manually by making the files yourself.
|
4
|
+
|
5
|
+
0. **Controller** — Make a controller to host your styleguides.
|
6
|
+
|
7
|
+
```rb
|
8
|
+
# app/controllers/styleguides_controller.rb
|
9
|
+
class StyleguidesController < ApplicationController
|
10
|
+
include Styledown::Rails::Controller
|
11
|
+
|
12
|
+
styledown.root = 'docs/styleguides'
|
13
|
+
styledown.append_template :head, 'styleguides/head'
|
14
|
+
styledown.use_template_engine :erb, :haml
|
15
|
+
end
|
16
|
+
```
|
17
|
+
|
18
|
+
0. **Routes** — Add routes for your new controller.
|
19
|
+
|
20
|
+
```rb
|
21
|
+
# config/routes.rb
|
22
|
+
resource 'styleguides', only: [:show] do
|
23
|
+
get '*page', action: :show, as: :page
|
24
|
+
end
|
25
|
+
```
|
26
|
+
|
27
|
+
0. **View (optional)** — Create the `styleguides/head` partial. This will be injected into the `<head>` section. Optional: you can skip this by changing the controller's `styleguide.append_template` options to use a different partial instead.
|
28
|
+
|
29
|
+
```erb
|
30
|
+
<!-- app/views/styleguides/_head.html.erb -->
|
31
|
+
<%= stylesheet_link_tag 'application' %>
|
32
|
+
<%= javascript_include_tag 'application' %>
|
33
|
+
```
|
34
|
+
|
35
|
+
0. **Styleguides** — Make your first styleguide in `docs/styleguides`.
|
36
|
+
|
37
|
+
<!-- docs/styleguides/index.md -->
|
38
|
+
# Styleguides
|
39
|
+
|
40
|
+
These are example styleguides.
|
41
|
+
|
42
|
+
### buttons
|
43
|
+
These are buttons. And since we defined :haml in `use_template_engine`,
|
44
|
+
these haml examples will be rendered within Rails.
|
45
|
+
|
46
|
+
```example.haml
|
47
|
+
%a.btn.btn-default Click me
|
48
|
+
```
|
49
|
+
|
50
|
+
0. **Try it out** — you should now have <http://localhost:3000/styleguides>. Enjoy!
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Styledown
|
2
|
+
module Rails
|
3
|
+
module Controller
|
4
|
+
def self.included(klass)
|
5
|
+
klass.extend ClassMethods
|
6
|
+
klass.include InstanceMethods
|
7
|
+
|
8
|
+
# Initialize the ControllerIntegration instance
|
9
|
+
klass.styledown
|
10
|
+
end
|
11
|
+
|
12
|
+
module ClassMethods
|
13
|
+
def styledown
|
14
|
+
@styledown ||= ControllerIntegration.new(self)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module InstanceMethods
|
19
|
+
def styledown
|
20
|
+
self.class.styledown
|
21
|
+
end
|
22
|
+
|
23
|
+
def show
|
24
|
+
styledown.show self
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
class Styledown
|
2
|
+
module Rails
|
3
|
+
# Accessible via `#styledown`.
|
4
|
+
#
|
5
|
+
# class StyleguidesController < ApplicationController
|
6
|
+
# include Styledown::Rails::Controller
|
7
|
+
#
|
8
|
+
# styledown.root = 'docs/styleguides'
|
9
|
+
# styledown.options = { skipAssets: true }
|
10
|
+
# end
|
11
|
+
#
|
12
|
+
class ControllerIntegration
|
13
|
+
attr_reader :controller_class
|
14
|
+
attr_reader :controller_instance
|
15
|
+
attr_reader :instance
|
16
|
+
|
17
|
+
DEFAULT_OPTIONS = { extension: '' }
|
18
|
+
|
19
|
+
def initialize(controller_class)
|
20
|
+
@controller_class = controller_class
|
21
|
+
@controller_instance = nil
|
22
|
+
@instance = Styledown.new
|
23
|
+
@instance.options = DEFAULT_OPTIONS
|
24
|
+
end
|
25
|
+
|
26
|
+
def root=(path)
|
27
|
+
path = ::Rails.root.join(path) unless Pathname.new(path).absolute?
|
28
|
+
@instance.paths = path
|
29
|
+
path
|
30
|
+
end
|
31
|
+
|
32
|
+
def options=(options)
|
33
|
+
@instance.options = options
|
34
|
+
end
|
35
|
+
|
36
|
+
# Reloads data, if needed.
|
37
|
+
def reload
|
38
|
+
# TODO: styledown.no_reload = -> { !::Rails.env.development? }
|
39
|
+
if ::Rails.env.development?
|
40
|
+
instance.render
|
41
|
+
else
|
42
|
+
instance.fast_render
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def show(controller)
|
47
|
+
@controller_instance = controller
|
48
|
+
|
49
|
+
# If there's no trailing slash, add it
|
50
|
+
return if redirect_with_trailing_slash(controller)
|
51
|
+
|
52
|
+
# Find what to be rendered (eg, 'buttons')
|
53
|
+
page = get_page(controller.params)
|
54
|
+
|
55
|
+
# Re-render (if needed), and get the final output
|
56
|
+
reload
|
57
|
+
file = instance.output[page]
|
58
|
+
|
59
|
+
raise ActiveRecord::RecordNotFound unless file
|
60
|
+
controller.render body: file['contents'], content_type: file['type']
|
61
|
+
end
|
62
|
+
|
63
|
+
# Appends to Styledown template `template` the contents from partial `partial`.
|
64
|
+
def append_template(template, partial)
|
65
|
+
use_template template, partial, append: true
|
66
|
+
end
|
67
|
+
|
68
|
+
# Replaces Styledown template `template` with contents from partial `partial`.
|
69
|
+
def use_template(template, partial, options = {})
|
70
|
+
template_name = template.to_s # 'head'
|
71
|
+
|
72
|
+
instance.add_data_filter do |data|
|
73
|
+
html = controller_instance.render_to_string(
|
74
|
+
partial: partial, formats: [:html])
|
75
|
+
|
76
|
+
if options[:append]
|
77
|
+
data['templates'][template_name] ||= ''
|
78
|
+
data['templates'][template_name] += "\n" + html
|
79
|
+
else
|
80
|
+
data['templates'][template_name] = html
|
81
|
+
end
|
82
|
+
|
83
|
+
data
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# Allows the use of a given template engine.
|
88
|
+
def use_template_engine(*engines)
|
89
|
+
engines.each do |engine|
|
90
|
+
instance.add_figure_filter engine do |contents|
|
91
|
+
html = controller_instance.render_to_string(
|
92
|
+
inline: contents, type: engine.to_sym)
|
93
|
+
|
94
|
+
['html', html]
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
private
|
100
|
+
|
101
|
+
# Returns the page to be rendered
|
102
|
+
def get_page(params)
|
103
|
+
if params[:page]
|
104
|
+
page = params[:page]
|
105
|
+
page += ".#{params[:format]}" if params[:format]
|
106
|
+
page
|
107
|
+
else
|
108
|
+
'index'
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# If there's no trailing slash, add it
|
113
|
+
def redirect_with_trailing_slash(controller)
|
114
|
+
# Don't use request.path, because that will always be missing a trailing slash.
|
115
|
+
path = controller.request.env['REQUEST_PATH']
|
116
|
+
|
117
|
+
# Check if there's no page and no trailing slash (eg, /styleguides and not
|
118
|
+
# /styleguides/ or /styleguides/foo)
|
119
|
+
if !controller.params[:page] && path[-1] != '/'
|
120
|
+
controller.redirect_to "#{path}/"
|
121
|
+
true
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'styledown/rails'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
require File.expand_path('../lib/styledown/rails/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = 'styledown2-rails'
|
6
|
+
spec.version = Styledown::Rails::VERSION
|
7
|
+
spec.authors = ['Rico Sta. Cruz']
|
8
|
+
spec.email = ['rstacruz@users.noreply.github.com']
|
9
|
+
|
10
|
+
spec.summary = 'Write maintainable CSS styleguides using Markdown'
|
11
|
+
spec.description = 'Styledown lets you write maintainable CSS styleguides using Markdown.'
|
12
|
+
spec.homepage = 'https://github.com/styledown/styledown2'
|
13
|
+
spec.license = 'MIT'
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|example)/}) }
|
16
|
+
|
17
|
+
spec.bindir = 'exe'
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'styledown2', '< 3.0.0'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'minitest'
|
24
|
+
spec.add_development_dependency 'rails', '< 6.0.0'
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: styledown2-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.0.pre5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rico Sta. Cruz
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-02-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: styledown2
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "<"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "<"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rails
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "<"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 6.0.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "<"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 6.0.0
|
69
|
+
description: Styledown lets you write maintainable CSS styleguides using Markdown.
|
70
|
+
email:
|
71
|
+
- rstacruz@users.noreply.github.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- Gemfile
|
78
|
+
- README.md
|
79
|
+
- Rakefile
|
80
|
+
- docs/api.md
|
81
|
+
- docs/manual_install.md
|
82
|
+
- lib/styledown/rails.rb
|
83
|
+
- lib/styledown/rails/controller.rb
|
84
|
+
- lib/styledown/rails/controller_integration.rb
|
85
|
+
- lib/styledown/rails/version.rb
|
86
|
+
- lib/styledown2-rails.rb
|
87
|
+
- styledown2-rails.gemspec
|
88
|
+
homepage: https://github.com/styledown/styledown2
|
89
|
+
licenses:
|
90
|
+
- MIT
|
91
|
+
metadata: {}
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 1.3.1
|
106
|
+
requirements: []
|
107
|
+
rubyforge_project:
|
108
|
+
rubygems_version: 2.5.1
|
109
|
+
signing_key:
|
110
|
+
specification_version: 4
|
111
|
+
summary: Write maintainable CSS styleguides using Markdown
|
112
|
+
test_files: []
|