jekyll_plugin_template 0.1.3
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/.rubocop.yml +35 -0
- data/CHANGELOG.md +6 -0
- data/LICENSE.txt +121 -0
- data/PLUGIN_README.md +178 -0
- data/README.md +105 -0
- data/Rakefile +7 -0
- data/jekyll_plugin_template.gemspec +46 -0
- data/lib/category_combiner.rb +21 -0
- data/lib/category_index_generator.rb +39 -0
- data/lib/dumpers.rb +174 -0
- data/lib/jekyll_block_tag_plugin.rb +113 -0
- data/lib/jekyll_filter_template.rb +41 -0
- data/lib/jekyll_hook_examples.rb +72 -0
- data/lib/jekyll_hooks.rb +242 -0
- data/lib/jekyll_plugin_template/version.rb +5 -0
- data/lib/jekyll_plugin_template.rb +22 -0
- data/lib/jekyll_tag_plugin.rb +113 -0
- data/spec/jekyll_plugin_template_spec.rb +26 -0
- data/spec/nokogiri_test.rb +24 -0
- data/spec/run_this_first_data/lib/old_name/old_name.rb +5 -0
- data/spec/run_this_first_data/lib/old_name/version.rb +5 -0
- data/spec/run_this_first_data/lib/old_name.rb +5 -0
- data/spec/run_this_first_data/old_name.gemspec +9 -0
- data/spec/run_this_first_helper.rb +21 -0
- data/spec/run_this_first_spec.rb +40 -0
- data/spec/spec_helper.rb +19 -0
- data/spec/status_persistence.txt +5 -0
- metadata +203 -0
@@ -0,0 +1,113 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "jekyll_plugin_logger"
|
4
|
+
require "key_value_parser"
|
5
|
+
require "shellwords"
|
6
|
+
|
7
|
+
module JekyllPluginTagTemplate
|
8
|
+
PLUGIN_NAME = "tag_template"
|
9
|
+
end
|
10
|
+
|
11
|
+
# This Jekyll tag plugin creates an emoji of the desired size and alignment.
|
12
|
+
#
|
13
|
+
# @example Float Smiley emoji right, sized 3em
|
14
|
+
# {% tag_template name='smile' align='right' size='5em' %}
|
15
|
+
# The above results in the following HTML:
|
16
|
+
# <span style="float: right; font-size: 5em;">😁</span>
|
17
|
+
#
|
18
|
+
# @example Defaults
|
19
|
+
# {% tag_template name='smile' %}
|
20
|
+
# The above results in the following HTML:
|
21
|
+
# <span style="font-size: 3em;">😁</span>
|
22
|
+
#
|
23
|
+
# The Jekyll log level defaults to :info, which means all the Jekyll.logger statements below will not generate output.
|
24
|
+
# You can control the log level when you start Jekyll.
|
25
|
+
# To set the log level to :debug, write an entery into _config.yml, like this:
|
26
|
+
# plugin_loggers:
|
27
|
+
# MyTag: debug
|
28
|
+
module JekyllTagPlugin
|
29
|
+
# This class implements the Jekyll tag functionality
|
30
|
+
class MyTag < Liquid::Tag
|
31
|
+
# Supported emojis (GitHub symbol, hex code) - see https://gist.github.com/rxaviers/7360908 and
|
32
|
+
# https://www.quackit.com/character_sets/emoji/emoji_v3.0/unicode_emoji_v3.0_characters_all.cfm
|
33
|
+
@@emojis = {
|
34
|
+
'angry' => '😠',
|
35
|
+
'boom' => '💥', # used when requested emoji is not recognized
|
36
|
+
'kiss' => '😙',
|
37
|
+
'scream' => '😱',
|
38
|
+
'smiley' => '😁', # default emoji
|
39
|
+
'smirk' => '😏',
|
40
|
+
'two_hearts' => '💕',
|
41
|
+
}
|
42
|
+
|
43
|
+
# @param tag_name [String] is the name of the tag, which we already know.
|
44
|
+
# @param argument_string [String] the arguments from the web page.
|
45
|
+
# @param tokens [Liquid::ParseContext] tokenized command line
|
46
|
+
# @return [void]
|
47
|
+
def initialize(tag_name, argument_string, tokens)
|
48
|
+
super
|
49
|
+
@logger = PluginMetaLogger.instance.new_logger(self, PluginMetaLogger.instance.config)
|
50
|
+
|
51
|
+
argv = Shellwords.split(argument_string) # Scans name/value arguments
|
52
|
+
params = KeyValueParser.new.parse(argv) # Extracts key/value pairs, default value for non-existant keys is nil
|
53
|
+
|
54
|
+
@emoji_name = params[:name] || "smiley"
|
55
|
+
@emoji_align = params[:align] || "inline" # Could be inline, right or left
|
56
|
+
@emoji_size = params[:size] || "3em"
|
57
|
+
@emoji_hex_code = @@emojis[@emoji_name] || @@emojis['boom']
|
58
|
+
end
|
59
|
+
|
60
|
+
# Method prescribed by the Jekyll plugin lifecycle.
|
61
|
+
# Several variables are created to illustrate how they are made.
|
62
|
+
# @param liquid_context [Liquid::Context]
|
63
|
+
# @return [String]
|
64
|
+
def render(liquid_context) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
65
|
+
@site = liquid_context.registers[:site]
|
66
|
+
@config = @site.config
|
67
|
+
@mode = @config["env"]["JEKYLL_ENV"] || "development"
|
68
|
+
|
69
|
+
# variables defined in pages are stored as hash values in liquid_context
|
70
|
+
_assigned_page_variable = liquid_context['assigned_page_variable']
|
71
|
+
|
72
|
+
# The names of front matter variables are hash keys for @page
|
73
|
+
@page = liquid_context.registers[:page] # @page is a Jekyll::Drops::DocumentDrop
|
74
|
+
|
75
|
+
@envs = liquid_context.environments.first
|
76
|
+
@layout_hash = @envs['layout']
|
77
|
+
# @layout_hash = @page['layout']
|
78
|
+
|
79
|
+
@logger.debug do
|
80
|
+
<<~HEREDOC
|
81
|
+
liquid_context.scopes=#{liquid_context.scopes}
|
82
|
+
mode="#{@mode}"
|
83
|
+
page attributes:
|
84
|
+
#{@page.sort
|
85
|
+
.reject { |k, _| REJECTED_ATTRIBUTES.include? k }
|
86
|
+
.map { |k, v| "#{k}=#{v}" }
|
87
|
+
.join("\n ")}
|
88
|
+
HEREDOC
|
89
|
+
end
|
90
|
+
|
91
|
+
assemble_emoji
|
92
|
+
end
|
93
|
+
|
94
|
+
def assemble_emoji # rubocop:disable Metrics/MethodLength
|
95
|
+
case @emoji_align
|
96
|
+
when "inline"
|
97
|
+
align = ""
|
98
|
+
when "right"
|
99
|
+
align = "float: right; margin-left: 5px;"
|
100
|
+
when "left"
|
101
|
+
align = "float: left; margin-right: 5px;"
|
102
|
+
else
|
103
|
+
@logger.error { "Invalid emoji alignment #{@emoji_align}" }
|
104
|
+
align = ""
|
105
|
+
end
|
106
|
+
# Compute the return value of this Jekyll tag
|
107
|
+
"<span style='font-size: #{@emoji_size}; #{align}'>#{@emoji_hex_code}</span>"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
PluginMetaLogger.instance.info { "Loaded #{JekyllPluginTagTemplate::PLUGIN_NAME} v#{JekyllPluginTemplateVersion::VERSION} plugin." }
|
113
|
+
Liquid::Template.register_tag(JekyllPluginTagTemplate::PLUGIN_NAME, JekyllTagPlugin::MyTag)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "fileutils"
|
4
|
+
require "jekyll"
|
5
|
+
require "key_value_parser"
|
6
|
+
require "shellwords"
|
7
|
+
require_relative "../lib/jekyll_plugin_template"
|
8
|
+
|
9
|
+
RSpec.describe(KeyValueParser) do
|
10
|
+
it "parses arguments" do
|
11
|
+
argv = "param0 param1=value1 param2='value2' param3=\"value3's tricky\" remainder of line".shellsplit
|
12
|
+
parser = KeyValueParser.new
|
13
|
+
options = parser.parse(argv)
|
14
|
+
# puts options.map { |k, v| "#{k} = #{v}" }.join("\n")
|
15
|
+
|
16
|
+
expect(options[:param0]).to eq(true)
|
17
|
+
expect(options[:param1]).to eq("value1")
|
18
|
+
expect(options[:param2]).to eq("value2")
|
19
|
+
expect(options[:param3]).to eq("value3's tricky")
|
20
|
+
expect(options[:unknown]).to be_nil
|
21
|
+
|
22
|
+
[:param0, :param1, :param2, :param3].each { |key| options.delete key }
|
23
|
+
remainder_of_line = options.keys.join(" ")
|
24
|
+
expect(remainder_of_line).to eq("remainder of line")
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "nokogiri"
|
4
|
+
|
5
|
+
class NokoTest
|
6
|
+
webpage = <<~END_PAGE
|
7
|
+
<html>
|
8
|
+
<body>
|
9
|
+
<p>Marvin the Martian, from Warner Bros, was <a href="https://kidadl.com/quotes/marvin-the-martian-quotes-from-the-looney-tunes-beloved-character">often angry</a>.</p>
|
10
|
+
<p>Being disintegrated makes me very angry! Very angry indeed!</p>
|
11
|
+
<p>I’m not angry. Just terribly, terribly hurt.</p>
|
12
|
+
<p>You make me very angry, very angry.</p>
|
13
|
+
<p>Flux to blow Mars into subatomic space dust make me very angry.</p>
|
14
|
+
</body>
|
15
|
+
</html>
|
16
|
+
END_PAGE
|
17
|
+
|
18
|
+
html = Nokogiri.HTML(webpage)
|
19
|
+
html.css("p").each do |node|
|
20
|
+
# This strips any HTML tags from node.content:
|
21
|
+
node.content = node.content.gsub("angry", "happy")
|
22
|
+
end
|
23
|
+
puts "\n\nHTML:\n#{html}"
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
load "bin/run_this_first"
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.add_setting :work_dir
|
7
|
+
config.work_dir = "/tmp/jekyll_plugin_template"
|
8
|
+
|
9
|
+
config.after(:suite) do
|
10
|
+
FileUtils.rm_rf(config.work_dir)
|
11
|
+
end
|
12
|
+
config.before(:suite) do
|
13
|
+
FileUtils.cp_r "spec/run_this_first_data", config.work_dir, :verbose => true
|
14
|
+
end
|
15
|
+
config.filter_run :focus
|
16
|
+
config.order = "random"
|
17
|
+
config.run_all_when_everything_filtered = true
|
18
|
+
|
19
|
+
# See https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures
|
20
|
+
config.example_status_persistence_file_path = "spec/first_status_persistence.txt"
|
21
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "fileutils"
|
4
|
+
require_relative "run_this_first_helper"
|
5
|
+
load "bin/run_this_first"
|
6
|
+
|
7
|
+
RSpec.describe(JekyllPluginTemplateModule) do
|
8
|
+
it "rename_identifiers" do
|
9
|
+
run_this_first = JekyllPluginTemplateModule::RunThisFirst.new(RSpec.configuration.work_dir)
|
10
|
+
run_this_first.rename_identifiers("old_variable_name", "new_variable_name")
|
11
|
+
|
12
|
+
gemspec = File.read("old_name.gemspec")
|
13
|
+
expect(gemspec).to include <<~END_GEMSPEC
|
14
|
+
require_relative "lib/new_name/version"
|
15
|
+
|
16
|
+
Gem::Specification.new do |spec|
|
17
|
+
github = "https://github.com/mslinn/new_name"
|
18
|
+
spec.name = "new_name"
|
19
|
+
spec.version = NewNameVersion::VERSION
|
20
|
+
end
|
21
|
+
END_GEMSPEC
|
22
|
+
|
23
|
+
version_rb = File.read("old_name/old_name/version.rb")
|
24
|
+
expect(version_rb).to include("class NewName")
|
25
|
+
|
26
|
+
old_name_rb = File.read("old_name/old_name/old_name.rb")
|
27
|
+
expect(old_name_rb).to include("new_name")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "rename_files" do
|
31
|
+
run_this_first = JekyllPluginTemplateModule::RunThisFirst.new(RSpec.configuration.work_dir)
|
32
|
+
run_this_first.rename_files("old_name", "new_name")
|
33
|
+
expect(Dir["."]).to match_array[
|
34
|
+
"new_name.gemspec",
|
35
|
+
"lib/new_name.rb",
|
36
|
+
"lib/new_name/new_name.rb",
|
37
|
+
"lib/new_name/version.rb"
|
38
|
+
]
|
39
|
+
end
|
40
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "jekyll"
|
4
|
+
require "fileutils"
|
5
|
+
require "key_value_parser"
|
6
|
+
require "shellwords"
|
7
|
+
|
8
|
+
require_relative "../lib/jekyll_plugin_template"
|
9
|
+
|
10
|
+
Jekyll.logger.log_level = :info
|
11
|
+
|
12
|
+
RSpec.configure do |config|
|
13
|
+
config.filter_run :focus
|
14
|
+
config.order = "random"
|
15
|
+
config.run_all_when_everything_filtered = true
|
16
|
+
|
17
|
+
# See https://relishapp.com/rspec/rspec-core/docs/command-line/only-failures
|
18
|
+
config.example_status_persistence_file_path = "spec/status_persistence.txt"
|
19
|
+
end
|
@@ -0,0 +1,5 @@
|
|
1
|
+
example_id | status | run_time |
|
2
|
+
------------------------------------------ | ------ | --------------- |
|
3
|
+
./spec/jekyll_plugin_template_spec.rb[1:1] | passed | 0.02165 seconds |
|
4
|
+
./spec/run_this_first_spec.rb[1:1] | failed | 0.00134 seconds |
|
5
|
+
./spec/run_this_first_spec.rb[1:2] | failed | 2.84 seconds |
|
metadata
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jekyll_plugin_template
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Firstname Lastname
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-01-25 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.5.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.5.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: jekyll_plugin_logger
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
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: key-value-parser
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
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: git
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: nokogiri
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: os
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
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: shellwords
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: talk_like_a_pirate
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.2.2
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.2.2
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: tty-prompt
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: 'Expand on what spec.summary says.
|
140
|
+
|
141
|
+
'
|
142
|
+
email:
|
143
|
+
- email@email.com
|
144
|
+
executables: []
|
145
|
+
extensions: []
|
146
|
+
extra_rdoc_files: []
|
147
|
+
files:
|
148
|
+
- ".rubocop.yml"
|
149
|
+
- CHANGELOG.md
|
150
|
+
- LICENSE.txt
|
151
|
+
- PLUGIN_README.md
|
152
|
+
- README.md
|
153
|
+
- Rakefile
|
154
|
+
- jekyll_plugin_template.gemspec
|
155
|
+
- lib/category_combiner.rb
|
156
|
+
- lib/category_index_generator.rb
|
157
|
+
- lib/dumpers.rb
|
158
|
+
- lib/jekyll_block_tag_plugin.rb
|
159
|
+
- lib/jekyll_filter_template.rb
|
160
|
+
- lib/jekyll_hook_examples.rb
|
161
|
+
- lib/jekyll_hooks.rb
|
162
|
+
- lib/jekyll_plugin_template.rb
|
163
|
+
- lib/jekyll_plugin_template/version.rb
|
164
|
+
- lib/jekyll_tag_plugin.rb
|
165
|
+
- spec/jekyll_plugin_template_spec.rb
|
166
|
+
- spec/nokogiri_test.rb
|
167
|
+
- spec/run_this_first_data/lib/old_name.rb
|
168
|
+
- spec/run_this_first_data/lib/old_name/old_name.rb
|
169
|
+
- spec/run_this_first_data/lib/old_name/version.rb
|
170
|
+
- spec/run_this_first_data/old_name.gemspec
|
171
|
+
- spec/run_this_first_helper.rb
|
172
|
+
- spec/run_this_first_spec.rb
|
173
|
+
- spec/spec_helper.rb
|
174
|
+
- spec/status_persistence.txt
|
175
|
+
homepage: https://www.mslinn.com/blog/2020/12/30/jekyll-plugin-template-collection.html
|
176
|
+
licenses:
|
177
|
+
- CC0-1.0
|
178
|
+
metadata:
|
179
|
+
allowed_push_host: https://rubygems.org
|
180
|
+
bug_tracker_uri: https://github.com/mslinn/jekyll_plugin_template/issues
|
181
|
+
changelog_uri: https://github.com/mslinn/jekyll_plugin_template/CHANGELOG.md
|
182
|
+
homepage_uri: https://www.mslinn.com/blog/2020/12/30/jekyll-plugin-template-collection.html
|
183
|
+
source_code_uri: https://github.com/mslinn/jekyll_plugin_template
|
184
|
+
post_install_message:
|
185
|
+
rdoc_options: []
|
186
|
+
require_paths:
|
187
|
+
- lib
|
188
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
189
|
+
requirements:
|
190
|
+
- - ">="
|
191
|
+
- !ruby/object:Gem::Version
|
192
|
+
version: 2.6.0
|
193
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
|
+
requirements:
|
195
|
+
- - ">="
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
requirements: []
|
199
|
+
rubygems_version: 3.3.3
|
200
|
+
signing_key:
|
201
|
+
specification_version: 4
|
202
|
+
summary: Write a short summary; RubyGems requires one.
|
203
|
+
test_files: []
|