jekyll-data-revised 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e564d57f1221d0dc6a960069f91669fba9febf32945eb74420defd09ffe5955e
4
+ data.tar.gz: 9b4cbd5d076f6b713cf3343ae54cb0d130b3bc481fb96e79f7d48da9b47e24d2
5
+ SHA512:
6
+ metadata.gz: 2bfff099d709386204254508622bb5cc49046ad622882e588408192e931012eef956abb55d1e1c741595d385429246130f0ae9682d021bde9351340c1b97993a
7
+ data.tar.gz: cc426bbdd5db09e73cc1b258475c9bbe96416a40d70b603653525872261fa85f4c4fff908ce81cb03c93b6e6d9a98f53cbbbb4acd5e44b6fde112068ae381603
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016-2017 Ashwin Maroli & Contributors
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,123 @@
1
+ # JekyllData
2
+
3
+ [![Gem Version](https://img.shields.io/gem/v/jekyll-data.svg)](https://rubygems.org/gems/jekyll-data)
4
+ [![Build Status](https://img.shields.io/travis/ashmaroli/jekyll-data/master.svg?label=Build%20Status)][travis]
5
+
6
+ [travis]: https://travis-ci.org/ashmaroli/jekyll-data
7
+
8
+ Introducing a plugin that reads data files within **jekyll theme-gems** and adds the resulting hash to the site's internal data hash. If a **`_config.yml`** is present at the root of the theme-gem, it will be evaluated and the extracted hash data will be incorporated into the site's existing config hash.
9
+
10
+
11
+ ## Installation
12
+
13
+ Simply add the plugin to your site's Gemfile and config file like every other jekyll plugin gem:
14
+
15
+ ```ruby
16
+ # Gemfile
17
+
18
+ group :jekyll_plugins do
19
+ gem "jekyll-data"
20
+ end
21
+ ```
22
+ ..and run
23
+
24
+ bundle install
25
+
26
+
27
+ > **Note: If the plugin has been marked as a `runtime_dependency` by the theme-gem's author it will be installed automatically with the theme-gem. Yet, it is recommended that the plugin be added to `:jekyll_plugins` group in the Gemfile rather than the `gems:` array in the config file while building or serving the site to avoid 'overriding' the `gems:` array data that may have been read-in from the theme-gem.**
28
+
29
+
30
+ ## Usage
31
+
32
+ As long as the plugin-gem has been installed properly, and is included in the Gemfile's `:jekyll_plugins` group, data files supported by Jekyll and present in the `_data` directory at the root of your theme-gem will be read. Their contents will be added to the site's internal data hash, provided, an identical data hash doesn't already exist at the site-source.
33
+
34
+ If the theme-gem also includes a `_config.yml` at its root, then it will be read as well. The resulting config hash will be mixed into the site's existing config hash, filling in where the *keys* are not already defined. In other words, the config file at `source` will override corresponding identical keys in a `_config.yml` within the theme-gem which would in turn override corresponding `DEFAULTS` from Jekyll:
35
+
36
+ **DEFAULTS** < **_config.yml in theme-gem** < **_config.yml at source** < **Override configs via command-line**.
37
+
38
+
39
+ ### Theme Configuration
40
+
41
+ Jekyll themes (built prior to `Jekyll 3.2`) usually ship with configuration settings defined in the config file, which are then used within the theme's template files directly under the `site` namespace (e.g. `{{ site.myvariable }}`). This is not possible with theme-gems as a config file and data files within gems are not natively read (as of Jekyll 3.3), and hence require end-users to inspect a *demo* or *example* directory to source those files.
42
+
43
+ This plugin provides a solution to that hurdle:
44
+
45
+ JekyllData now reads the config file (at present only `_config.yml`) present within the theme-gem and uses the data to modify the site's config hash. This allows the theme-gem to continue using `{{ site.myvariable }}` within its templates and work out-of-the-box as intended, with minimal user intervention.
46
+
47
+ **Note: the plugins required by the theme may be listed under the `gems:` array and will be automatically `required` by Jekyll while building/serving, provided that the user doesn't have a different `gems:` array in the config file at source. Hence it is recommended to add all other plugins ( including `jekyll-data` ) via the Gemfile's `:jekyll_plugins` group.**
48
+
49
+ #### The `theme` namespace
50
+
51
+ From `v1.0`, JekyllData no longer supports reading theme configuration provided as a `[theme-name].***` file within the `_data` directory and instead the `theme` namespace points to a certain key in the bundled `_config.yml`.
52
+
53
+ For `{{ theme.variable }}` to work, the config file should nest all such key-value pairs under the `[theme-name]` key, as outlined in the example below for a theme-gem called `solitude`:
54
+
55
+ ```yaml
56
+ # <solitude-0.1.0>/_config.yml
57
+
58
+ # the settings below have been used in this theme's templates via the `theme`
59
+ # namespace. e.g. `{{ theme.recent_posts.style }}` instead of using the more
60
+ # verbose `{{ site.solitude.recent_posts.style }}` though both are functionally
61
+ # the same.
62
+ #
63
+ solitude:
64
+ sidebar : true # enter 'false' to enable horizontal navbar instead.
65
+ theme_variant : Charcoal # choose from 'Ocean', 'Grass', 'Charcoal'
66
+ recent_posts :
67
+ style : list # choose from 'list' and 'grid'.
68
+ quantity : '4' # either '4' or '6'
69
+
70
+ ```
71
+
72
+
73
+ ### Data files
74
+
75
+ Data files may be used to supplement theme templates (e.g. locales and translated UI text) and can be named as desired.
76
+ - Organize related small data files in sub-directories. (or)
77
+ - Declare all related data as mapped data blocks within a single file.
78
+
79
+ To illustrate with an example, consider a `locales.yml` that has mappings for `en:`, `fr:`, `it:`.
80
+
81
+ ```yaml
82
+ # <theme-gem>/_data/locales.yml
83
+
84
+ en:
85
+ previous : previous
86
+ next : next
87
+
88
+ fr:
89
+ previous : précédent
90
+ next : prochain
91
+
92
+ it:
93
+ previous : precedente
94
+ next : seguente
95
+ ```
96
+
97
+ the Hash from above would be identical to one had the gem been shipped with a `_data/locales` directory containing individual files for each language data.
98
+
99
+
100
+ ### Overriding Data Files
101
+
102
+ To override data shipped with a theme-gem, simply have an identical hash at the site-source.
103
+
104
+ Irrespective of whether the theme-gem ships with consolidated data files of related entities, or sub-directories containing individual files, the data can be overridden with a single file or with multiple files.
105
+
106
+ For example, if a theme-gem contains the above sample `locales.yml`, then to override the `fr:` key-data simply have either of the following:
107
+ - a **`_data/locales/fr.yml`** with identical subkey(s).
108
+ - a **`_data/locales.yml`** with **`fr:`** with identical subkey(s).
109
+
110
+ --
111
+ > **Note**
112
+ - having an **empty** `_data/locales.yml` at `source` directory will override the **entire `["data"]["locales"]` payload** from the theme-gem as **`false`**.
113
+ - having an **empty** `_data/locales/fr.yml` at `source` directory will override the **enire `["data"]["locales"]["fr"]` payload** from the theme-gem as **`false`**
114
+
115
+
116
+ ## Contributing
117
+
118
+ Bug reports and pull requests are welcome at the [GitHub Repo](https://github.com/ashmaroli/jekyll-data). This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
119
+
120
+
121
+ ## License
122
+
123
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "jekyll"
4
+ require "jekyll-data/version"
5
+
6
+ module JekyllData
7
+ autoload :Reader, "jekyll-data/reader"
8
+ autoload :ThemedSiteDrop, "jekyll-data/themed_site_drop"
9
+ autoload :ThemeDataReader, "jekyll-data/theme_data_reader"
10
+ autoload :ThemeConfiguration, "jekyll-data/theme_configuration"
11
+ end
12
+
13
+ # Monkey-patches
14
+ require_relative "jekyll/build_options"
15
+ require_relative "jekyll/data_path"
16
+ require_relative "jekyll/theme_drop"
17
+
18
+ # ----------------------------------------------------------------------------
19
+ # Modify the current site instance only if it uses a gem-based theme.
20
+ #
21
+ # if a '_config.yml' is present at the root of theme-gem, it is evaluated and
22
+ # the extracted hash data is incorprated into the site's config hash.
23
+ # ----------------------------------------------------------------------------
24
+ Jekyll::Hooks.register :site, :after_reset do |site|
25
+ if site.theme
26
+ file = site.in_theme_dir("_config.yml")
27
+ JekyllData::ThemeConfiguration.reconfigure(site) if File.exist?(file)
28
+ end
29
+ end
30
+
31
+ # ---------------------------------------------------------------------------
32
+ # Replace Jekyll::Reader with a subclass JekyllData::Reader only if the
33
+ # site uses a gem-based theme.
34
+ #
35
+ # If a _config.yml exists at the root of the theme-gem, output its path.
36
+ # Placed here inorder to avoid outputting the path after every regeneration.
37
+ # ---------------------------------------------------------------------------
38
+ Jekyll::Hooks.register :site, :after_init do |site|
39
+ if site.theme
40
+ file = site.in_theme_dir("_config.yml")
41
+ Jekyll.logger.debug "Theme Config file:", file if File.exist?(file)
42
+ site.reader = JekyllData::Reader.new(site)
43
+ end
44
+ end
@@ -0,0 +1,224 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "csv"
4
+
5
+ module JekyllData
6
+ class Reader < Jekyll::Reader
7
+ def initialize(site)
8
+ @site = site
9
+ @theme = site.theme
10
+ @theme_data_files = Dir[File.join(site.theme.root,
11
+ site.config["data_dir"], "**", "*.{yaml,yml,json,csv}")]
12
+ end
13
+
14
+ # Read data files within theme-gem.
15
+ #
16
+ # Returns nothing.
17
+ def read
18
+ super
19
+ read_theme_data
20
+ end
21
+
22
+ # Read data files within a theme gem and add them to internal data
23
+ #
24
+ # Returns a hash appended with new data
25
+ def read_theme_data
26
+ if @theme.data_path
27
+ #
28
+ # show contents of "<theme>/_data/" dir being read while degugging.
29
+ inspect_theme_data
30
+ theme_data = ThemeDataReader.new(site).read(site.config["data_dir"])
31
+ @site.data = Jekyll::Utils.deep_merge_hashes(theme_data, @site.data)
32
+ #
33
+ # show contents of merged site.data hash while debugging with
34
+ # additional --show-data switch.
35
+ inspect_merged_hash if site.config["show-data"] && site.config["verbose"]
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ # Private:
42
+ # (only while debugging)
43
+ #
44
+ # Print a list of data file(s) within the theme-gem
45
+ def inspect_theme_data
46
+ print_clear_line
47
+ Jekyll.logger.debug "Reading:", "Theme Data Files..."
48
+ @theme_data_files.each { |file| Jekyll.logger.debug "", file }
49
+ print_clear_line
50
+ Jekyll.logger.debug "Merging:", "Theme Data Hash..."
51
+
52
+ unless site.config["show-data"] && site.config["verbose"]
53
+ Jekyll.logger.debug "", "use --show-data with --verbose to output " \
54
+ "merged Data Hash.".cyan
55
+ print_clear_line
56
+ end
57
+ end
58
+
59
+ # Private:
60
+ # (only while debugging)
61
+ #
62
+ # Print contents of the merged data hash
63
+ def inspect_merged_hash
64
+ Jekyll.logger.debug "Inspecting:", "Site Data >>"
65
+
66
+ # the width of generated logger[message]
67
+ @width = 50
68
+ @dashes = "-" * @width
69
+
70
+ inspect_hash @site.data
71
+ print_clear_line
72
+ end
73
+
74
+ # --------------------------------------------------------------------
75
+ # Private helper methods to inspect data hash and output contents
76
+ # to logger at level debugging.
77
+ # --------------------------------------------------------------------
78
+
79
+ # Dissect the (merged) site.data hash and print its contents
80
+ #
81
+ # - Print the key string(s)
82
+ # - Individually analyse the hash[key] values and extract contents
83
+ # to output.
84
+ def inspect_hash(hash)
85
+ hash.each do |key, value|
86
+ print_key key
87
+ if value.is_a? Hash
88
+ inspect_inner_hash value
89
+ elsif value.is_a? Array
90
+ extract_hashes_and_print value
91
+ else
92
+ print_string value.to_s
93
+ end
94
+ end
95
+ end
96
+
97
+ # Analyse deeper hashes and extract contents to output
98
+ def inspect_inner_hash(hash)
99
+ hash.each do |key, value|
100
+ if value.is_a? Array
101
+ print_label key
102
+ extract_hashes_and_print value
103
+ elsif value.is_a? Hash
104
+ print_subkey_and_value key, value
105
+ else
106
+ print_hash key, value
107
+ end
108
+ end
109
+ end
110
+
111
+ # If an array of strings, print. Otherwise assume as an
112
+ # array of hashes (sequences) that needs further analysis.
113
+ def extract_hashes_and_print(array)
114
+ array.each do |entry|
115
+ if entry.is_a? String
116
+ print_list entry
117
+ else
118
+ inspect_inner_hash entry
119
+ end
120
+ end
121
+ end
122
+
123
+ #
124
+
125
+ # --------------------------------------------------------------------
126
+ # Private methods for formatting log messages while debugging
127
+ # --------------------------------------------------------------------
128
+
129
+ # Splits a string longer than the value of '@width' into smaller
130
+ # strings and prints each line as a logger[message]
131
+ #
132
+ # string - the long string
133
+ #
134
+ # label - optional text to designate the printed lines.
135
+ def print_long_string(string, label = "")
136
+ strings = string.scan(%r!(.{1,#{@width}})(\s+|\W|\Z)!).map { |s| s.join.strip }
137
+ first_line = strings.first.cyan
138
+
139
+ label.empty? ? print_value(first_line) : print(label, first_line)
140
+ strings[1..-1].each { |s| print_value s.cyan }
141
+ end
142
+
143
+ # Prints key as logger[topic] and value as [message]
144
+ def print_hash(key, value)
145
+ if value.length > @width
146
+ print_long_string value, "#{key}:"
147
+ else
148
+ print "#{key}:", value.cyan
149
+ end
150
+ end
151
+
152
+ def print_list(item)
153
+ if item.length > @width
154
+ print_long_string item, "-"
155
+ else
156
+ print "-", item.cyan
157
+ end
158
+ end
159
+
160
+ def print_string(str)
161
+ if str.length > @width
162
+ print_long_string str
163
+ else
164
+ print_value str.inspect
165
+ end
166
+ end
167
+
168
+ # Prints the site.data[key] in color
169
+ def print_key(key)
170
+ print_clear_line
171
+ print "Data Key:", " #{key} ".center(@width, "=")
172
+ print_clear_line
173
+ end
174
+
175
+ # Prints label, keys and values of mappings
176
+ def print_subkey_and_value(key, value)
177
+ print_label key
178
+ value.each do |subkey, val|
179
+ if val.is_a? Hash
180
+ print_inner_subkey subkey
181
+ inspect_inner_hash val
182
+ elsif val.is_a? Array
183
+ print_inner_subkey subkey
184
+ extract_hashes_and_print val
185
+ elsif val.is_a? String
186
+ print_hash subkey, val
187
+ end
188
+ end
189
+ end
190
+
191
+ # Print only logger[message], [topic] = nil
192
+ def print_value(value)
193
+ if value.is_a? Array
194
+ extract_hashes_and_print value
195
+ else
196
+ print "", value
197
+ end
198
+ end
199
+
200
+ # Print only logger[topic] appended with a colon
201
+ def print_label(key)
202
+ print_value " #{key} ".center(@width, "-")
203
+ end
204
+
205
+ def print_inner_subkey(key)
206
+ print "#{key}:", @dashes
207
+ end
208
+
209
+ def print_dashes
210
+ print "", @dashes
211
+ end
212
+
213
+ def print_clear_line
214
+ print ""
215
+ end
216
+
217
+ # Redefine Jekyll Loggers to have the [topic] indented by 30.
218
+ # (rjust by just 29 to accomodate the additional whitespace added
219
+ # by Jekyll)
220
+ def print(topic, message = "")
221
+ Jekyll.logger.debug topic.rjust(29), message
222
+ end
223
+ end
224
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllData
4
+ class ThemeConfiguration < Jekyll::Configuration
5
+ class << self
6
+ # Public: Establish a new site.config hash by reading an optional config
7
+ # file within the theme-gem and appending the resulting hash to
8
+ # existing site.config filling in keys not already defined.
9
+ #
10
+ # site: current Jekyll::Site instance.
11
+ #
12
+ # Returns a config Hash to be used by an 'after_reset' hook.
13
+ def reconfigure(site)
14
+ default_hash = Jekyll::Configuration::DEFAULTS
15
+ theme_config = ThemeConfiguration.new(site).read_theme_config
16
+
17
+ # Merge with existing site.config and strip any remaining defaults
18
+ config = Jekyll::Utils.deep_merge_hashes(
19
+ theme_config, site.config
20
+ ).reject { |key, value| value == default_hash[key] }
21
+
22
+ # Merge DEFAULTS < _config.yml in theme-gem < config file(s) from source
23
+ # and redefine site.config
24
+ site.config = Jekyll::Configuration.from(
25
+ Jekyll::Utils.deep_merge_hashes(theme_config, config)
26
+ )
27
+ end
28
+ end
29
+
30
+ #
31
+
32
+ def initialize(site)
33
+ @site = site
34
+ end
35
+
36
+ # Public: Read the '_config.yml' file within the theme-gem.
37
+ # Additionally validates that the extracted config data and the
38
+ # the 'value' of '<site.theme.name> key', when present, is a Hash.
39
+ #
40
+ # Returns a Configuration Hash
41
+ def read_theme_config
42
+ file = @site.in_theme_dir("_config.yml")
43
+ theme_name = @site.theme.name
44
+
45
+ config = safe_load_file(file)
46
+
47
+ check_config_is_hash!(config, file)
48
+ validate_config_hash config[theme_name] unless config[theme_name].nil?
49
+
50
+ config
51
+ end
52
+
53
+ private
54
+
55
+ # Validate the <site.theme.name> key's value to be accessed via the `theme`
56
+ # namespace.
57
+ def validate_config_hash(value)
58
+ unless value.is_a? Hash
59
+ Jekyll.logger.abort_with "JekyllData:", "Theme Configuration should be a " \
60
+ "Hash of key:value pairs or mappings. But got #{value.class} instead."
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllData
4
+ class ThemeDataReader < Jekyll::DataReader
5
+ attr_reader :site, :content
6
+ def initialize(site)
7
+ @site = site
8
+ @content = {}
9
+ @entry_filter = Jekyll::EntryFilter.new(site)
10
+ end
11
+
12
+ def read(dir)
13
+ return unless site.theme && site.theme.data_path
14
+ base = site.in_theme_dir(dir)
15
+ read_data_to(base, @content)
16
+ @content
17
+ end
18
+
19
+ def read_data_to(dir, data)
20
+ return unless File.directory?(dir) && !@entry_filter.symlink?(dir)
21
+
22
+ entries = Dir.chdir(dir) do
23
+ Dir["*.{yaml,yml,json,csv}"] + Dir["*"].select { |fn| File.directory?(fn) }
24
+ end
25
+
26
+ entries.each do |entry|
27
+ path = @site.in_theme_dir(dir, entry)
28
+ next if @entry_filter.symlink?(path)
29
+
30
+ if File.directory?(path)
31
+ read_data_to(path, data[sanitize_filename(entry)] = {})
32
+ else
33
+ key = sanitize_filename(File.basename(entry, ".*"))
34
+ data[key] = read_data_file(path)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllData
4
+ class ThemedSiteDrop < Jekyll::Drops::SiteDrop
5
+ extend Forwardable
6
+
7
+ mutable false
8
+
9
+ def_delegator :@obj, :site_data, :data
10
+ def_delegators :@obj, :theme
11
+
12
+ private def_delegator :@obj, :config, :fallback_data
13
+ end
14
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JekyllData
4
+ VERSION = "1.0.0".freeze
5
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ class Command
5
+ class << self
6
+ #
7
+ # patch original method to inject a '--show-data' switch to display
8
+ # merged data hash
9
+ #
10
+ alias_method :original_build_options, :add_build_options
11
+
12
+ def add_build_options(c)
13
+ original_build_options(c)
14
+ c.option "show-data", "--show-data",
15
+ "Print merged site-data hash when used with --verbose."
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ class Theme
5
+ def data_path
6
+ @data_path ||= path_for "_data"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jekyll
4
+ module Drops
5
+ class UnifiedPayloadDrop < Drop
6
+ # Register a namespace to easily call subkeys under <theme-name> key
7
+ # in the _config.yml within a theme-gem via its bundled templates.
8
+ # e.g. with this drop, theme-specific variables usually called like
9
+ # {{ site.minima.date_format }} can be shortened to simply
10
+ # {{ theme.date_format }}.
11
+ def theme
12
+ @theme_drop ||= begin
13
+ config = site.send(:fallback_data)
14
+ config[config["theme"]]
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-data-revised
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Ashwin Maroli
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-10-10 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.7.4
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.7.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.14'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.14.3
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1.14'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.14.3
47
+ - !ruby/object:Gem::Dependency
48
+ name: cucumber
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.1'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.1'
61
+ - !ruby/object:Gem::Dependency
62
+ name: minitest
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '5.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '5.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rake
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '10.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '10.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rubocop
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 0.51.0
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 0.51.0
103
+ description:
104
+ email:
105
+ - ashmaroli@gmail.com
106
+ executables: []
107
+ extensions: []
108
+ extra_rdoc_files: []
109
+ files:
110
+ - LICENSE.txt
111
+ - README.md
112
+ - lib/jekyll-data.rb
113
+ - lib/jekyll-data/reader.rb
114
+ - lib/jekyll-data/theme_configuration.rb
115
+ - lib/jekyll-data/theme_data_reader.rb
116
+ - lib/jekyll-data/themed_site_drop.rb
117
+ - lib/jekyll-data/version.rb
118
+ - lib/jekyll/build_options.rb
119
+ - lib/jekyll/data_path.rb
120
+ - lib/jekyll/theme_drop.rb
121
+ homepage: https://github.com/ashmaroli/jekyll-data
122
+ licenses:
123
+ - MIT
124
+ metadata:
125
+ allowed_push_host: https://rubygems.org
126
+ post_install_message:
127
+ rdoc_options: []
128
+ require_paths:
129
+ - lib
130
+ required_ruby_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ requirements: []
141
+ rubyforge_project:
142
+ rubygems_version: 2.7.7
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: A plugin to read '_config.yml' and data files within Jekyll theme-gems
146
+ test_files: []