jekyll-spark 0.3.0
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 +10 -0
- data/.travis.yml +11 -0
- data/Gemfile +2 -0
- data/LICENSE.txt +21 -0
- data/README.md +40 -0
- data/Rakefile +16 -0
- data/docs/creating-a-component.md +164 -0
- data/docs/introduction.md +45 -0
- data/examples/block_component.rb +22 -0
- data/examples/tag_component.rb +21 -0
- data/jekyll-spark.gemspec +35 -0
- data/lib/jekyll-spark.rb +1 -0
- data/lib/jekyll/spark.rb +4 -0
- data/lib/jekyll/spark/base.rb +123 -0
- data/lib/jekyll/spark/block.rb +8 -0
- data/lib/jekyll/spark/tag.rb +8 -0
- data/lib/jekyll/spark/version.rb +5 -0
- metadata +215 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8d60f94810b528cfb81018431cd3941ed98b1b51
|
4
|
+
data.tar.gz: 9de4a7a1445a75c3d2a0285ec8152fbf00f89447
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8f7902691f69dc4ef7e5ad0f67d6b78cf9a49bec8c367060869ced4d5e1ffd1f89f54b8f254fc86b910c947deb43c6558b69114270f878ae395dda2ea4c615ed
|
7
|
+
data.tar.gz: 0fa592bcae5d14df58eb2c35df856c8b214fafdfedf9aaef2d277d1bacd7f116b0626b4d9e00bc75e244853b1bed3e66d80febf599d88f4257d0d777fd278aae
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 Help Scout
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# Spark ✨ [](https://travis-ci.org/helpscout/jekyll-spark) [](https://badge.fury.io/rb/jekyll-spark)
|
2
|
+
|
3
|
+
A Jekyll library for building fast component-based UI.
|
4
|
+
|
5
|
+
This library was heavily inspired by view/component creation from modern Javascript libraries like [React](https://facebook.github.io/react/) and [Vue](https://vuejs.org/).
|
6
|
+
|
7
|
+
**Table of Contents**
|
8
|
+
|
9
|
+
- [Install](#install)
|
10
|
+
- [Documentation](#documenation)
|
11
|
+
- [Examples](#examples)
|
12
|
+
|
13
|
+
## Install
|
14
|
+
|
15
|
+
Add this line to your application's Gemfile:
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
gem 'jekyll-spark'
|
19
|
+
```
|
20
|
+
|
21
|
+
And then execute:
|
22
|
+
```
|
23
|
+
bundle
|
24
|
+
```
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
```
|
28
|
+
gem install jekyll-spark
|
29
|
+
```
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
## Documentation
|
34
|
+
|
35
|
+
**[View the docs](https://github.com/helpscout/jekyll-spark/blob/master/docs/introduction.md)** to get started with Jekyll Components!
|
36
|
+
|
37
|
+
|
38
|
+
## Examples
|
39
|
+
|
40
|
+
**[View the starter](https://github.com/helpscout/jekyll-spark/tree/master/examples)** Component view files.
|
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'rake'
|
4
|
+
require 'rdoc'
|
5
|
+
require 'date'
|
6
|
+
require 'yaml'
|
7
|
+
require 'rake/testtask'
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), *%w[lib]))
|
10
|
+
require 'jekyll/version'
|
11
|
+
|
12
|
+
Rake::TestTask.new(:test) do |test|
|
13
|
+
test.libs << 'lib' << 'test'
|
14
|
+
test.pattern = 'test/**/test_*.rb'
|
15
|
+
test.verbose = true
|
16
|
+
end
|
@@ -0,0 +1,164 @@
|
|
1
|
+
# Creating a component
|
2
|
+
|
3
|
+
Let's create our first component under `_plugins/tags`.
|
4
|
+
|
5
|
+
We'll call it `napolean.rb`! Below is the [starting template](https://github.com/helpscout/jekyll-spark/tree/master/examples) of any Jekyll Component:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
require "jekyll-spark"
|
9
|
+
|
10
|
+
module Jekyll
|
11
|
+
# Create your component class
|
12
|
+
class NapoleanComponent < ComponentTag
|
13
|
+
def template(context)
|
14
|
+
render = %Q[
|
15
|
+
# Put markup here!
|
16
|
+
]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# Register your component with Liquid
|
22
|
+
Liquid::Template.register_tag(
|
23
|
+
"Napolean", # Namespace your component
|
24
|
+
Jekyll::NapoleanComponent, # Pass your newly created component class
|
25
|
+
)
|
26
|
+
```
|
27
|
+
|
28
|
+
### Rendering markup
|
29
|
+
|
30
|
+
Let's make this component render this GIF:
|
31
|
+
|
32
|
+

|
33
|
+
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
require "jekyll-spark"
|
37
|
+
|
38
|
+
module Jekyll
|
39
|
+
class NapoleanComponent < ComponentTag
|
40
|
+
def template(context)
|
41
|
+
render = %Q[
|
42
|
+
<div class="napolean">
|
43
|
+
<img src="https://media.giphy.com/media/9QbDWTcnq4wmc/giphy.gif">
|
44
|
+
</div>
|
45
|
+
]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
Liquid::Template.register_tag(
|
51
|
+
"Napolean",
|
52
|
+
Jekyll::NapoleanComponent,
|
53
|
+
)
|
54
|
+
```
|
55
|
+
|
56
|
+
To use our tag component, all we have to do is use `{% Napolean %}` in our Jekyll `.html` or `.md` file:
|
57
|
+
|
58
|
+
```html
|
59
|
+
Check out this component!
|
60
|
+
{% Napolean %}
|
61
|
+
```
|
62
|
+
|
63
|
+
That's it!
|
64
|
+
|
65
|
+
|
66
|
+
### Adding props
|
67
|
+
|
68
|
+
"Props" are data that we can pass to our component.
|
69
|
+
|
70
|
+
For our example, let's provide the ability to adjust the width of our image as well as provide a caption:
|
71
|
+
|
72
|
+
```html
|
73
|
+
{% Napolean
|
74
|
+
width: "300"
|
75
|
+
caption: "Way to eat all the friggen chips Kip!"
|
76
|
+
%}
|
77
|
+
```
|
78
|
+
|
79
|
+
You can totally write everything in a single line (below). However, we recommend the above approach as it makes it much easier to add/remove/edit props.
|
80
|
+
|
81
|
+
```html
|
82
|
+
{% Napolean width: "300" caption: "Way to eat all the friggen chips Kip!" %}
|
83
|
+
```
|
84
|
+
|
85
|
+
In order to use our new `width` and `caption` props, we have to update our `template` method in our Napolean component. Prop data being passed to our component will be available in a `@prop` instance variable in our `.rb` file:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
require "jekyll-spark"
|
89
|
+
|
90
|
+
module Jekyll
|
91
|
+
class NapoleanComponent < ComponentTag
|
92
|
+
def template(context)
|
93
|
+
# Declare props as variables
|
94
|
+
# Not necessary, but highly recommended
|
95
|
+
caption = @props["caption"]
|
96
|
+
width = @props["width"]
|
97
|
+
|
98
|
+
render = %Q[
|
99
|
+
<div class="napolean">
|
100
|
+
<img src="https://media.giphy.com/media/9QbDWTcnq4wmc/giphy.gif" width="#{width}">
|
101
|
+
#{caption}
|
102
|
+
</div>
|
103
|
+
]
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
Liquid::Template.register_tag(
|
109
|
+
"Napolean",
|
110
|
+
Jekyll::NapoleanComponent,
|
111
|
+
)
|
112
|
+
```
|
113
|
+
|
114
|
+
The resulting compiled markup will be:
|
115
|
+
|
116
|
+
```html
|
117
|
+
<div class="napolean">
|
118
|
+
<img src="https://media.giphy.com/media/9QbDWTcnq4wmc/giphy.gif" width="300">
|
119
|
+
Way to eat all the friggen chips Kip!
|
120
|
+
</div>
|
121
|
+
```
|
122
|
+
|
123
|
+
|
124
|
+
### Syntax
|
125
|
+
|
126
|
+
Below is a comparison between some syntax differences between Jekyll Components (Ruby) and React (ES6 Javascript):
|
127
|
+
|
128
|
+
| Ruby | Javascript (React) | Description |
|
129
|
+
| --- | --- | --- |
|
130
|
+
| `@props["key"]` | `this.props.key` | Component prop data. |
|
131
|
+
| `render =` | `render() { return ... } ` | Outputting the component's markup. |
|
132
|
+
| `%Q[ ... ]` | `` `...` `` | String interpolation wrapper. |
|
133
|
+
| `#{var}` | `${var} ` | String interpolated variable. |
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
## Creating a block component
|
138
|
+
|
139
|
+
Let's say we want to update our component to be a block instead. It'll make it more intuitive to add caption. Maybe something like:
|
140
|
+
|
141
|
+
```html
|
142
|
+
{% Napolean width: "300" %}
|
143
|
+
This tastes like the cow got into an onion patch.
|
144
|
+
{% endNapolean %}
|
145
|
+
```
|
146
|
+
|
147
|
+
It's pretty easy! The only thing we need to change in our `napolean.rb` file is the Class our component inherits from.
|
148
|
+
|
149
|
+
Before:
|
150
|
+
```ruby
|
151
|
+
class NapoleanComponent < ComponentTag
|
152
|
+
```
|
153
|
+
|
154
|
+
After:
|
155
|
+
```ruby
|
156
|
+
class NapoleanComponent < ComponentBlock
|
157
|
+
```
|
158
|
+
|
159
|
+
|
160
|
+
### That's it!
|
161
|
+
|
162
|
+
You've got the basics to create some awesome components in Jekyll.
|
163
|
+
|
164
|
+

|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Introduction
|
2
|
+
|
3
|
+
Components are `.rb` files that are added to your Jekyll project's default `_plugins/` directory:
|
4
|
+
|
5
|
+
```shell
|
6
|
+
my-jekyll/
|
7
|
+
└── _plugins/
|
8
|
+
└── *Add components here*
|
9
|
+
```
|
10
|
+
|
11
|
+
There are two types are Components:
|
12
|
+
|
13
|
+
**Tags**
|
14
|
+
|
15
|
+
These components are created using Liquid [Tags](http://www.rubydoc.info/github/Shopify/liquid/Liquid/Tag), and they do not contain content when used.
|
16
|
+
|
17
|
+
Example:
|
18
|
+
```html
|
19
|
+
{% Napolean id: "skillz" class: "nunchucks bow staff computer-hacking" %}
|
20
|
+
```
|
21
|
+
|
22
|
+
**Blocks**
|
23
|
+
|
24
|
+
These components are created using Liquid [Blocks](http://www.rubydoc.info/github/Shopify/liquid/Liquid/Block), and they **do** contain content when used.
|
25
|
+
|
26
|
+
Example:
|
27
|
+
```html
|
28
|
+
{% Napolean class: "chapstick" %}
|
29
|
+
But my lips hurt real bad!
|
30
|
+
{% endNapolean %}
|
31
|
+
```
|
32
|
+
|
33
|
+
Because of these types, we recommend you organize your components in your `_plugins/` directory into `tags` and `blocks` directories:
|
34
|
+
|
35
|
+
```shell
|
36
|
+
my-jekyll/
|
37
|
+
└── _plugins/
|
38
|
+
├── blocks/
|
39
|
+
└── tags/
|
40
|
+
```
|
41
|
+
|
42
|
+
|
43
|
+
### Up next
|
44
|
+
|
45
|
+
Learn how to [create a component](creating-a-component.md).
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require "jekyll-spark"
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
class ExampleBlockComponent < ComponentBlock
|
5
|
+
def template(context)
|
6
|
+
# Declare props as variables here
|
7
|
+
content = @props["content"]
|
8
|
+
|
9
|
+
# Output rendered markup
|
10
|
+
render = %Q[
|
11
|
+
<div class="component">
|
12
|
+
#{content}
|
13
|
+
</div>
|
14
|
+
]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Liquid::Template.register_tag(
|
20
|
+
"ExampleBlock",
|
21
|
+
Jekyll::ExampleBlockComponent,
|
22
|
+
)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "jekyll-spark"
|
2
|
+
|
3
|
+
module Jekyll
|
4
|
+
class ExampleTagComponent < ComponentTag
|
5
|
+
def template(context)
|
6
|
+
# Declare props as variables here
|
7
|
+
|
8
|
+
# Output rendered markup
|
9
|
+
render = %Q[
|
10
|
+
<div class="component">
|
11
|
+
Example
|
12
|
+
</div>
|
13
|
+
]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
Liquid::Template.register_tag(
|
19
|
+
"ExampleTag",
|
20
|
+
Jekyll::ExampleTagComponent,
|
21
|
+
)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'jekyll/spark/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "jekyll-spark"
|
8
|
+
spec.version = Jekyll::Spark::VERSION
|
9
|
+
spec.authors = ["ItsJonQ"]
|
10
|
+
spec.email = ["itsjonq@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = "A Jekyll library for building component-based UI"
|
13
|
+
spec.homepage = "https://github.com/helpscout/jekyll-spark"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
|
+
f.match(%r{^(test|spec|features)/})
|
18
|
+
end
|
19
|
+
spec.bindir = "exe"
|
20
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
+
spec.require_paths = ["lib"]
|
22
|
+
|
23
|
+
spec.add_runtime_dependency("jekyll", ">= 3.1.2")
|
24
|
+
spec.add_runtime_dependency("htmlcompressor", "~> 0.3.1")
|
25
|
+
|
26
|
+
spec.add_development_dependency "bundler", "~> 1.13"
|
27
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
28
|
+
spec.add_development_dependency "minitest-reporters"
|
29
|
+
spec.add_development_dependency "minitest-profile"
|
30
|
+
spec.add_development_dependency "minitest", "~> 5.8"
|
31
|
+
spec.add_development_dependency "nokogiri", "~> 1.7.1"
|
32
|
+
spec.add_development_dependency "rspec-mocks"
|
33
|
+
spec.add_development_dependency "shoulda"
|
34
|
+
spec.add_development_dependency "kramdown"
|
35
|
+
end
|
data/lib/jekyll-spark.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "jekyll/spark"
|
data/lib/jekyll/spark.rb
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
require "htmlcompressor"
|
2
|
+
require "jekyll"
|
3
|
+
require "liquid"
|
4
|
+
|
5
|
+
module Jekyll
|
6
|
+
module ComponentBase
|
7
|
+
include Liquid::StandardFilters
|
8
|
+
|
9
|
+
@@compressor = HtmlCompressor::Compressor.new({
|
10
|
+
:remove_comments => true
|
11
|
+
}).freeze
|
12
|
+
|
13
|
+
def initialize(tag_name, markup, tokens)
|
14
|
+
super
|
15
|
+
|
16
|
+
@attributes = {}
|
17
|
+
@context = false
|
18
|
+
@context_name = self.name.to_s.gsub("::", "_").downcase
|
19
|
+
@content = ''
|
20
|
+
@default_selector_attr = []
|
21
|
+
@props = Hash.new
|
22
|
+
@site = false
|
23
|
+
|
24
|
+
if markup =~ /(#{Liquid::QuotedFragment}+)?/
|
25
|
+
# Parse parameters
|
26
|
+
# Source: https://gist.github.com/jgatjens/8925165
|
27
|
+
markup.scan(Liquid::TagAttributes) do |key, value|
|
28
|
+
@attributes[key] = Liquid::Expression.parse(value)
|
29
|
+
end
|
30
|
+
else
|
31
|
+
raise SyntaxError.new(options[:locale].t("errors.syntax.include".freeze))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# blank?
|
36
|
+
# Description: Override's Liquid's default blank checker. This allows
|
37
|
+
# for templates to be used without passing inner content.
|
38
|
+
def blank?
|
39
|
+
false
|
40
|
+
end
|
41
|
+
|
42
|
+
def selector_default_props(attr = @default_selector_attr)
|
43
|
+
template = ""
|
44
|
+
attr.each { |prop|
|
45
|
+
if @props.key?(prop)
|
46
|
+
template += "#{prop}='#{@props[prop]}' "
|
47
|
+
end
|
48
|
+
}
|
49
|
+
|
50
|
+
return template
|
51
|
+
end
|
52
|
+
|
53
|
+
def selector_data_props(attr = @attributes)
|
54
|
+
template = ""
|
55
|
+
attr.keys.each { |key|
|
56
|
+
if key.include? "data"
|
57
|
+
template += "#{key.gsub("_", "-")}='#{@props[key]}' "
|
58
|
+
end
|
59
|
+
}
|
60
|
+
|
61
|
+
return template
|
62
|
+
end
|
63
|
+
|
64
|
+
def selector_props(attr = @default_selector_attr)
|
65
|
+
template = ""
|
66
|
+
template += selector_data_props
|
67
|
+
template += selector_default_props(attr)
|
68
|
+
|
69
|
+
return template
|
70
|
+
end
|
71
|
+
|
72
|
+
def set_props(props = Hash.new)
|
73
|
+
@context[@context_name] = @props = @props.merge(props)
|
74
|
+
end
|
75
|
+
|
76
|
+
def serialize_data
|
77
|
+
data = Hash.new
|
78
|
+
@attributes["content"] = @content
|
79
|
+
if @attributes.length
|
80
|
+
@attributes.each do |key, value|
|
81
|
+
val = @context.evaluate(value)
|
82
|
+
data[key] = val
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
return set_props(data)
|
87
|
+
end
|
88
|
+
|
89
|
+
def unindent(content)
|
90
|
+
# Remove initial whitespace
|
91
|
+
content.gsub!(/\A^\s*\n/, "")
|
92
|
+
# Remove indentations
|
93
|
+
if content =~ %r!^\s*!m
|
94
|
+
indentation = Regexp.last_match(0).length
|
95
|
+
content.gsub!(/^\ {#{indentation}}/, "")
|
96
|
+
end
|
97
|
+
|
98
|
+
return content
|
99
|
+
end
|
100
|
+
|
101
|
+
def render(context)
|
102
|
+
@context = context
|
103
|
+
@site = @context.registers[:site]
|
104
|
+
@content = super
|
105
|
+
serialize_data
|
106
|
+
output = template(context)
|
107
|
+
|
108
|
+
if (output.instance_of?(String))
|
109
|
+
output = Liquid::Template.parse(output).render()
|
110
|
+
output = @@compressor.compress(unindent(output))
|
111
|
+
else
|
112
|
+
output = ""
|
113
|
+
end
|
114
|
+
|
115
|
+
return output
|
116
|
+
end
|
117
|
+
|
118
|
+
def template(context = @context)
|
119
|
+
return context
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
end
|
metadata
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll-spark
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- ItsJonQ
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-06-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.1.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.1.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: htmlcompressor
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.3.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.3.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.13'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.13'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest-reporters
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: minitest-profile
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: minitest
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '5.8'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '5.8'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: nokogiri
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.7.1
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.7.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rspec-mocks
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: shoulda
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: kramdown
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
description:
|
168
|
+
email:
|
169
|
+
- itsjonq@gmail.com
|
170
|
+
executables: []
|
171
|
+
extensions: []
|
172
|
+
extra_rdoc_files: []
|
173
|
+
files:
|
174
|
+
- ".gitignore"
|
175
|
+
- ".travis.yml"
|
176
|
+
- Gemfile
|
177
|
+
- LICENSE.txt
|
178
|
+
- README.md
|
179
|
+
- Rakefile
|
180
|
+
- docs/creating-a-component.md
|
181
|
+
- docs/introduction.md
|
182
|
+
- examples/block_component.rb
|
183
|
+
- examples/tag_component.rb
|
184
|
+
- jekyll-spark.gemspec
|
185
|
+
- lib/jekyll-spark.rb
|
186
|
+
- lib/jekyll/spark.rb
|
187
|
+
- lib/jekyll/spark/base.rb
|
188
|
+
- lib/jekyll/spark/block.rb
|
189
|
+
- lib/jekyll/spark/tag.rb
|
190
|
+
- lib/jekyll/spark/version.rb
|
191
|
+
homepage: https://github.com/helpscout/jekyll-spark
|
192
|
+
licenses:
|
193
|
+
- MIT
|
194
|
+
metadata: {}
|
195
|
+
post_install_message:
|
196
|
+
rdoc_options: []
|
197
|
+
require_paths:
|
198
|
+
- lib
|
199
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
requirements: []
|
210
|
+
rubyforge_project:
|
211
|
+
rubygems_version: 2.5.2
|
212
|
+
signing_key:
|
213
|
+
specification_version: 4
|
214
|
+
summary: A Jekyll library for building component-based UI
|
215
|
+
test_files: []
|