ruboty-articlegen 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 +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.rubocop.yml +6 -0
- data/.travis.yml +8 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +22 -0
- data/README.md +114 -0
- data/Rakefile +8 -0
- data/bin/ruboty-articlegen +31 -0
- data/lib/ruboty/dsl/dsl.rb +47 -0
- data/lib/ruboty/dsl/dsl_model.rb +29 -0
- data/lib/ruboty/dsl.rb +3 -0
- data/lib/ruboty/gen/article.rb +235 -0
- data/lib/ruboty/gen/version.rb +7 -0
- data/lib/ruboty/gen.rb +12 -0
- data/lib/ruboty/models/command.rb +34 -0
- data/lib/ruboty/models/dependency.rb +26 -0
- data/lib/ruboty/models/env.rb +26 -0
- data/lib/ruboty/models.rb +10 -0
- data/ruboty-articlegen.gemspec +29 -0
- data/sample/Rubotyariticle +57 -0
- data/sample/ruboty-ume.md +73 -0
- data/spec/ruboty/gen/article_spec.rb +187 -0
- data/spec/spec_helper.rb +16 -0
- metadata +141 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a6a10e1146705decf213c969ad5d2227ae020513
|
4
|
+
data.tar.gz: abf5a813a045583a34163068f513b077aed00fa6
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: db0a3178f45d961b1a8a682186b0560c22a484dbcea7fba7b59402c50f85f1e8aea63c42520f5163b027e36fee1cb95961bdd924a6e17a67c4099136744f30f6
|
7
|
+
data.tar.gz: 85b1269017039b19dbfcfa05ddc0c76cd679bfebace2481721c237cefc70ff83a5c909abbdb7143b0fd360aab46fdb74aca72e92764bb305a73ecaf61a15cda8
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 tbpgr
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
# Ruboty::Gen::Article
|
2
|
+
|
3
|
+
Generate Markdown Article for Ruboty Handler + Actions plugin.
|
4
|
+
|
5
|
+
[](https://travis-ci.org/tbpgr/ruboty-articlegen)
|
6
|
+
[](https://coveralls.io/r/tbpgr/ruboty-articlegen)
|
7
|
+
|
8
|
+
[Ruboty](https://github.com/r7kamura/ruboty) is Chat bot framework. Ruby + Bot = Ruboty
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add this line to your application's Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'ruboty-articlegen'
|
16
|
+
```
|
17
|
+
|
18
|
+
And then execute:
|
19
|
+
|
20
|
+
$ bundle
|
21
|
+
|
22
|
+
Or install it yourself as:
|
23
|
+
|
24
|
+
$ gem install ruboty-articlegen
|
25
|
+
|
26
|
+
## Rubotyme
|
27
|
+
### Setting File Parameters
|
28
|
+
|
29
|
+
|key|value|example|
|
30
|
+
|:--|:--|:--|
|
31
|
+
|github_user_name|github user name|tbpgr|
|
32
|
+
|rubygems_user_name|rubygems user name|tbpgr|
|
33
|
+
|gem_name|gem name|ume|
|
34
|
+
|title|タイトル文字列|チャットを空メッセージ or 任意のメッセージで埋める ruboty-ume を作成しました|
|
35
|
+
|purpose|用途|ruboty google_image で妙な画像を引き当ててしまった。<br>そんなときに限って、偉い人が近づいてくる。<br>急いでチャット画面から画像を追い出すんだ。<br><br>内緒のメッセージのやりとり。<br>そんなときに限って、内緒のやりとりがばれるとまずい相手が近づいてくる。<br>急いでチャット画面から画像を追い出すんだ。<br>そんな時に空行を大量に追加してメッセージを画面外に追い出します。|
|
36
|
+
|env/name|環境変数|DEFAULT_UME_TEXT|
|
37
|
+
|env/description|環境変数の説明|default ume text|
|
38
|
+
|dependencies/name|依存先名称|Ume API|
|
39
|
+
|dependencies/description|依存先説明|Ume API の説明やURL|
|
40
|
+
|commands/command name|Ruboty::Handler.on の name に設定する内容 ※件数分|ume|
|
41
|
+
|commands/command pattern|Ruboty::Handler.on の pattern に設定する内容 ※件数分|/ume (?<count>.*?)\z/ |
|
42
|
+
|commands/command description|Ruboty::Handler.on の description に設定する内容 ※件数分|output empty message N lines (<count> times)|
|
43
|
+
|
44
|
+
## Usage
|
45
|
+
### init
|
46
|
+
generate Rubotyarticle template file.
|
47
|
+
|
48
|
+
~~~
|
49
|
+
$ ruboty-articlegen init
|
50
|
+
~~~
|
51
|
+
|
52
|
+
### generate
|
53
|
+
generate Ruboty Handler + Action Article Markdown template
|
54
|
+
|
55
|
+
* edit Rubotyme file
|
56
|
+
|
57
|
+
~~~ruby
|
58
|
+
# encoding: utf-8
|
59
|
+
github_user_name "tbpgr"
|
60
|
+
rubygems_user_name "tbpgr"
|
61
|
+
|
62
|
+
gem_name "ume"
|
63
|
+
|
64
|
+
title "チャットを空メッセージ or 任意のメッセージで埋める ruboty-ume を作成しました"
|
65
|
+
|
66
|
+
env do |e|
|
67
|
+
e.name "ENV1"
|
68
|
+
e.description "ENV1 desc"
|
69
|
+
end
|
70
|
+
|
71
|
+
env do |e|
|
72
|
+
e.name "ENV2"
|
73
|
+
e.description "ENV2 desc"
|
74
|
+
end
|
75
|
+
|
76
|
+
dependency do |d|
|
77
|
+
d.name "dependency1"
|
78
|
+
d.description "dependency1 description"
|
79
|
+
end
|
80
|
+
|
81
|
+
dependency do |d|
|
82
|
+
d.name "dependency2"
|
83
|
+
d.description "dependency2 description"
|
84
|
+
end
|
85
|
+
|
86
|
+
command do |c|
|
87
|
+
c.name "ume"
|
88
|
+
c.pattern "/ume (?<count>.*?)\z/"
|
89
|
+
c.description "output empty message N lines (<count> times)"
|
90
|
+
end
|
91
|
+
|
92
|
+
command do |c|
|
93
|
+
c.name "umec"
|
94
|
+
c.pattern "/umec (?<text>.+?) (?<count>.*?)\z/"
|
95
|
+
c.description "output <text> message N lines (<count> times)"
|
96
|
+
end
|
97
|
+
~~~
|
98
|
+
|
99
|
+
* generate Airticle Markdown
|
100
|
+
|
101
|
+
~~~
|
102
|
+
$ ruboty-articlegen generate
|
103
|
+
~~~
|
104
|
+
|
105
|
+
* output
|
106
|
+
[sample output ruboty-ume ruboty-ume_article](https://github.com/tbpgr/ruboty-articlegen/blob/master/sample/ruboty-ume.md)
|
107
|
+
|
108
|
+
## Contributing
|
109
|
+
|
110
|
+
1. Fork it ( https://github.com/tbpgr/ruboty_articlegen/fork )
|
111
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
112
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
113
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
114
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'ruboty/gen'
|
5
|
+
require 'ruboty/gen/version'
|
6
|
+
require 'thor'
|
7
|
+
|
8
|
+
module Ruboty
|
9
|
+
# = RubotyMegen CLI
|
10
|
+
class CLI < Thor
|
11
|
+
class_option :help, type: :boolean, aliases: '-h', desc: 'help message.'
|
12
|
+
class_option :version, type: :boolean, desc: 'version'
|
13
|
+
|
14
|
+
desc 'generate', 'Generate Article Markdown template'
|
15
|
+
def generate
|
16
|
+
Ruboty::Gen::Article.generate
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'init', 'generate Rubotyme template'
|
20
|
+
def init
|
21
|
+
Ruboty::Gen::Article.init
|
22
|
+
end
|
23
|
+
|
24
|
+
desc 'version', 'version'
|
25
|
+
def version
|
26
|
+
p Ruboty::Gen::VERSION
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Ruboty::CLI.start(ARGV)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'ruboty/dsl/dsl_model'
|
3
|
+
require 'ruboty/models/env'
|
4
|
+
require 'ruboty/models/dependency'
|
5
|
+
require 'ruboty/models/command'
|
6
|
+
|
7
|
+
module Ruboty
|
8
|
+
# Dsl
|
9
|
+
class Dsl
|
10
|
+
attr_accessor :ruboty_articlegen
|
11
|
+
|
12
|
+
[:user_name, :gem_name, :title, :purpose].each do |f|
|
13
|
+
define_method f do |value|
|
14
|
+
@ruboty_articlegen.send("#{f}=", value)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def env
|
19
|
+
e = Ruboty::Models::Env.new
|
20
|
+
yield(e)
|
21
|
+
@ruboty_articlegen.env << e
|
22
|
+
end
|
23
|
+
|
24
|
+
def dependency
|
25
|
+
d = Ruboty::Models::Dependency.new
|
26
|
+
yield(d)
|
27
|
+
@ruboty_articlegen.dependencies << d
|
28
|
+
end
|
29
|
+
|
30
|
+
def command
|
31
|
+
c = Ruboty::Models::Command.new
|
32
|
+
yield(c)
|
33
|
+
@ruboty_articlegen.commands << c
|
34
|
+
end
|
35
|
+
|
36
|
+
def initialize
|
37
|
+
@ruboty_articlegen = Ruboty::DslModel.new
|
38
|
+
@ruboty_articlegen.user_name = 'your user_name username'
|
39
|
+
@ruboty_articlegen.gem_name = 'your_gem_name'
|
40
|
+
@ruboty_articlegen.title = 'title'
|
41
|
+
@ruboty_articlegen.purpose = 'purpose'
|
42
|
+
@ruboty_articlegen.env = []
|
43
|
+
@ruboty_articlegen.dependencies = []
|
44
|
+
@ruboty_articlegen.commands = []
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# rubocop:disable LineLength
|
4
|
+
module Ruboty
|
5
|
+
# DslModel
|
6
|
+
class DslModel
|
7
|
+
# user_name
|
8
|
+
attr_accessor :user_name
|
9
|
+
|
10
|
+
# title
|
11
|
+
attr_accessor :title
|
12
|
+
|
13
|
+
# gem_name
|
14
|
+
attr_accessor :gem_name
|
15
|
+
|
16
|
+
# purpose
|
17
|
+
attr_accessor :purpose
|
18
|
+
|
19
|
+
# env
|
20
|
+
attr_accessor :env
|
21
|
+
|
22
|
+
# dependencies
|
23
|
+
attr_accessor :dependencies
|
24
|
+
|
25
|
+
# commands
|
26
|
+
attr_accessor :commands
|
27
|
+
end
|
28
|
+
end
|
29
|
+
# rubocop:enable LineLength
|
data/lib/ruboty/dsl.rb
ADDED
@@ -0,0 +1,235 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'erb'
|
3
|
+
|
4
|
+
# rubocop:disable LineLength
|
5
|
+
module Ruboty
|
6
|
+
module Gen
|
7
|
+
# Article
|
8
|
+
class Article
|
9
|
+
RUBOTY_MEGEN_FILE = 'Rubotyariticle'
|
10
|
+
RUBOTY_MEGEN_TEMPLATE = <<-EOS
|
11
|
+
# encoding: utf-8
|
12
|
+
|
13
|
+
# user_name(github user name)
|
14
|
+
# user_name is required
|
15
|
+
# user_name allow only String
|
16
|
+
# user_name's default value => "user_name"
|
17
|
+
user_name "user_name"
|
18
|
+
|
19
|
+
# gem_name
|
20
|
+
# gem_name is required
|
21
|
+
# gem_name allow only String
|
22
|
+
# gem_name's default value => "your_gem_name"
|
23
|
+
# ex: sample_gem (not ruboty-sample_gem)
|
24
|
+
gem_name "your_gem_name"
|
25
|
+
|
26
|
+
# title
|
27
|
+
# title is required
|
28
|
+
# title allow only String
|
29
|
+
# title's default value => "title"
|
30
|
+
# ex: チャットを空メッセージ or 任意のメッセージで埋める ruboty-ume を作成しました
|
31
|
+
title "title"
|
32
|
+
|
33
|
+
# purpose
|
34
|
+
# purpose is required
|
35
|
+
# purpose allow only String
|
36
|
+
# purpose's default value => "purpose"
|
37
|
+
# ex: ruboty google_image で妙な画像を引き当ててしまった。
|
38
|
+
# ex: そんなときに限って、偉い人が近づいてくる。
|
39
|
+
# ex: 急いでチャット画面から画像を追い出すんだ。
|
40
|
+
# ex:
|
41
|
+
# ex: 内緒のメッセージのやりとり。
|
42
|
+
# ex: そんなときに限って、内緒のやりとりがばれるとまずい相手が近づいてくる。
|
43
|
+
# ex: 急いでチャット画面から画像を追い出すんだ。
|
44
|
+
# ex:
|
45
|
+
# ex: そんな時に空行を大量に追加してメッセージを画面外に追い出します。
|
46
|
+
purpose <<-PURPOSE
|
47
|
+
plugin の用途を詳細に記述
|
48
|
+
PURPOSE
|
49
|
+
|
50
|
+
# you can set multiple ENV variables
|
51
|
+
env do |e|
|
52
|
+
# name
|
53
|
+
# name allow only String
|
54
|
+
# name's default value => ""
|
55
|
+
e.name "environment variable name"
|
56
|
+
|
57
|
+
# description
|
58
|
+
# description allow only String
|
59
|
+
# description's default value => ""
|
60
|
+
e.description ""
|
61
|
+
end
|
62
|
+
|
63
|
+
# you can set multiple dependencies
|
64
|
+
dependency do |d|
|
65
|
+
# name
|
66
|
+
# name allow only String
|
67
|
+
# name's default value => ""
|
68
|
+
d.name ""
|
69
|
+
|
70
|
+
# description
|
71
|
+
# description allow only String
|
72
|
+
# description's default value => ""
|
73
|
+
d.description ""
|
74
|
+
end
|
75
|
+
|
76
|
+
# you can set multiple commands
|
77
|
+
command do |c|
|
78
|
+
# name
|
79
|
+
# name allow only String
|
80
|
+
c.name ""
|
81
|
+
|
82
|
+
# pattern
|
83
|
+
# pattern allow only String
|
84
|
+
c.pattern ""
|
85
|
+
|
86
|
+
# description
|
87
|
+
# description allow only String
|
88
|
+
c.description ""
|
89
|
+
|
90
|
+
# example
|
91
|
+
# example allow only String
|
92
|
+
c.example ""
|
93
|
+
end
|
94
|
+
EOS
|
95
|
+
|
96
|
+
RUBOTY_ARTICLE_TEMPLATE = <<-EOS
|
97
|
+
# <%=title%> #ruboty
|
98
|
+
|
99
|
+
## 概要
|
100
|
+
<%=title%>
|
101
|
+
|
102
|
+
## 用途
|
103
|
+
<%=purpose%>
|
104
|
+
## Installation
|
105
|
+
|
106
|
+
Add this line to your application's Gemfile:
|
107
|
+
|
108
|
+
```ruby
|
109
|
+
gem 'ruboty-<%=gem_name%>'
|
110
|
+
```
|
111
|
+
|
112
|
+
And then execute:
|
113
|
+
|
114
|
+
$ bundle
|
115
|
+
|
116
|
+
Or install it yourself as:
|
117
|
+
|
118
|
+
$ gem install ruboty-<%=gem_name%>
|
119
|
+
|
120
|
+
## Commands
|
121
|
+
|
122
|
+
|Command|Pattern|Description|
|
123
|
+
|:--|:--|:--|
|
124
|
+
<%=command_table%>
|
125
|
+
|
126
|
+
## Usage
|
127
|
+
<%=usages%>
|
128
|
+
|
129
|
+
## ENV
|
130
|
+
|
131
|
+
|Name|Description|
|
132
|
+
|:--|:--|
|
133
|
+
<%=env_table%>
|
134
|
+
|
135
|
+
## Dependency
|
136
|
+
|
137
|
+
|Name|Description|
|
138
|
+
|:--|:--|
|
139
|
+
<%=dependency_table%>
|
140
|
+
|
141
|
+
## 参照
|
142
|
+
* [ruboty-<%=gem_name%> GitHub](https://github.com/<%=user_name%>/ruboty-<%=gem_name%>)
|
143
|
+
* [ruboty-<%=gem_name%> RubyGems](http://rubygems.org/gems/ruboty-<%=gem_name%>)
|
144
|
+
EOS
|
145
|
+
|
146
|
+
# generate Rubotyarticlegenfile to current directory.
|
147
|
+
def self.init
|
148
|
+
File.open(RUBOTY_MEGEN_FILE, 'w') do |f|
|
149
|
+
f.puts RUBOTY_MEGEN_TEMPLATE
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
# generate ruboty Article Markdown template.
|
154
|
+
def self.generate
|
155
|
+
src = read_dsl
|
156
|
+
dsl = Ruboty::Dsl.new
|
157
|
+
dsl.instance_eval src
|
158
|
+
src = apply(dsl.ruboty_articlegen)
|
159
|
+
File.open("ruboty-#{dsl.ruboty_articlegen.gem_name}.md", 'w:utf-8') do |file|
|
160
|
+
file.puts src
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
def self.read_dsl
|
165
|
+
File.open(RUBOTY_MEGEN_FILE) { |f|f.read }
|
166
|
+
end
|
167
|
+
private_class_method :read_dsl
|
168
|
+
|
169
|
+
# rubocop:disable UselessAssignment
|
170
|
+
def self.apply(config)
|
171
|
+
gem_name = config.gem_name
|
172
|
+
title = config.title
|
173
|
+
command_table = command_table(config.commands)
|
174
|
+
usages = usages(config.commands)
|
175
|
+
env_table = env_table(config.env)
|
176
|
+
dependency_table = dependency_table(config.dependencies)
|
177
|
+
user_name = config.user_name
|
178
|
+
purpose = config.purpose
|
179
|
+
|
180
|
+
erb = ERB.new(RUBOTY_ARTICLE_TEMPLATE)
|
181
|
+
erb.result(binding)
|
182
|
+
end
|
183
|
+
private_class_method :apply
|
184
|
+
# rubocop:enable UselessAssignment
|
185
|
+
|
186
|
+
def self.command_table(commands)
|
187
|
+
command_table = commands.each_with_object([]) do |e, memo|
|
188
|
+
list = ['', e.read_name, e.read_pattern, e.read_description, '']
|
189
|
+
list = normalize_markdown_table(list)
|
190
|
+
memo << list.join('|')
|
191
|
+
end
|
192
|
+
command_table.join("\n")
|
193
|
+
end
|
194
|
+
private_class_method :command_table
|
195
|
+
|
196
|
+
def self.usages(commands)
|
197
|
+
usages = commands.each_with_object([]) do |e, memo|
|
198
|
+
name = e.read_name
|
199
|
+
description = e.read_description
|
200
|
+
example = e.read_example.chomp
|
201
|
+
row = ["### #{name}", "* #{description}", '', '~~~', "#{example}", '~~~']
|
202
|
+
memo << row.join("\n")
|
203
|
+
end
|
204
|
+
usages.join("\n\n")
|
205
|
+
end
|
206
|
+
private_class_method :usages
|
207
|
+
|
208
|
+
def self.env_table(env)
|
209
|
+
env_table = env.each_with_object([]) do |e, memo|
|
210
|
+
list = ['', e.read_name, e.read_description, '']
|
211
|
+
list = normalize_markdown_table(list)
|
212
|
+
memo << list.join('|')
|
213
|
+
end
|
214
|
+
env_table.join("\n")
|
215
|
+
end
|
216
|
+
private_class_method :env_table
|
217
|
+
|
218
|
+
def self.dependency_table(dependencies)
|
219
|
+
dependency_table = dependencies.each_with_object([]) do |e, memo|
|
220
|
+
list = ['', e.read_name, e.read_description, '']
|
221
|
+
list = normalize_markdown_table(list)
|
222
|
+
memo << list.join('|')
|
223
|
+
end
|
224
|
+
dependency_table.join("\n")
|
225
|
+
end
|
226
|
+
private_class_method :dependency_table
|
227
|
+
|
228
|
+
def self.normalize_markdown_table(texts)
|
229
|
+
texts.map { |e| e.gsub('|', '|') }
|
230
|
+
end
|
231
|
+
private_class_method :normalize_markdown_table
|
232
|
+
end
|
233
|
+
end
|
234
|
+
end
|
235
|
+
# rubocop:enable LineLength
|
data/lib/ruboty/gen.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Ruboty
|
4
|
+
module Models
|
5
|
+
# Command
|
6
|
+
class Command
|
7
|
+
def initialize
|
8
|
+
@name, @pattern, @description, @example = ''
|
9
|
+
end
|
10
|
+
|
11
|
+
def name(name)
|
12
|
+
@name = name
|
13
|
+
end
|
14
|
+
|
15
|
+
def pattern(pattern)
|
16
|
+
@pattern = pattern
|
17
|
+
end
|
18
|
+
|
19
|
+
def description(description)
|
20
|
+
@description = description
|
21
|
+
end
|
22
|
+
|
23
|
+
def example(example)
|
24
|
+
@example = example
|
25
|
+
end
|
26
|
+
|
27
|
+
[:name, :pattern, :description, :example].each do |m|
|
28
|
+
define_method :"read_#{m}" do
|
29
|
+
instance_variable_get("@#{m}")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Ruboty
|
4
|
+
module Models
|
5
|
+
# Dependency
|
6
|
+
class Dependency
|
7
|
+
def initialize
|
8
|
+
@name, @description = ''
|
9
|
+
end
|
10
|
+
|
11
|
+
def name(name)
|
12
|
+
@name = name
|
13
|
+
end
|
14
|
+
|
15
|
+
def description(description)
|
16
|
+
@description = description
|
17
|
+
end
|
18
|
+
|
19
|
+
[:name, :description].each do |m|
|
20
|
+
define_method :"read_#{m}" do
|
21
|
+
instance_variable_get("@#{m}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Ruboty
|
4
|
+
module Models
|
5
|
+
# Env
|
6
|
+
class Env
|
7
|
+
def initialize
|
8
|
+
@name, @description = ''
|
9
|
+
end
|
10
|
+
|
11
|
+
def name(name)
|
12
|
+
@name = name
|
13
|
+
end
|
14
|
+
|
15
|
+
def description(description)
|
16
|
+
@description = description
|
17
|
+
end
|
18
|
+
|
19
|
+
[:name, :description].each do |m|
|
20
|
+
define_method :"read_#{m}" do
|
21
|
+
instance_variable_get("@#{m}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'ruboty/gen/version'
|
5
|
+
|
6
|
+
# rubocop:disable LineLength
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = 'ruboty-articlegen'
|
9
|
+
spec.version = Ruboty::Gen::VERSION
|
10
|
+
spec.authors = ['tbpgr']
|
11
|
+
spec.email = ['tbpgr@tbpgr.jp']
|
12
|
+
spec.summary = 'ruboty-articlegen generate ruboty Article Markdown template.'
|
13
|
+
spec.description = 'ruboty-articlegen generate ruboty Article Markdown template.'
|
14
|
+
spec.homepage = 'https://github.com/tbpgr/ruboty-articlegen'
|
15
|
+
spec.license = 'MIT'
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
|
22
|
+
spec.add_runtime_dependency 'thor', '~> 0.18.1'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.6'
|
25
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
26
|
+
spec.add_development_dependency 'rspec'
|
27
|
+
spec.add_development_dependency 'simplecov'
|
28
|
+
end
|
29
|
+
# rubocop:enable LineLength
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
user_name "tbpgr"
|
3
|
+
|
4
|
+
gem_name "ume"
|
5
|
+
|
6
|
+
title "チャットを空メッセージ or 任意のメッセージで埋める ruboty-ume を作成しました"
|
7
|
+
purpose <<-PURPOSE
|
8
|
+
ruboty google_image で妙な画像を引き当ててしまった。
|
9
|
+
そんなときに限って、偉い人が近づいてくる。
|
10
|
+
急いでチャット画面から画像を追い出すんだ。
|
11
|
+
|
12
|
+
内緒のメッセージのやりとり。
|
13
|
+
そんなときに限って、内緒のやりとりがばれるとまずい相手が近づいてくる。
|
14
|
+
急いでチャット画面から画像を追い出すんだ。
|
15
|
+
|
16
|
+
そんな時に空行を大量に追加してメッセージを画面外に追い出します。
|
17
|
+
PURPOSE
|
18
|
+
|
19
|
+
env do |e|
|
20
|
+
e.name "ENV1"
|
21
|
+
e.description "ENV1 desc"
|
22
|
+
end
|
23
|
+
|
24
|
+
env do |e|
|
25
|
+
e.name "ENV2"
|
26
|
+
e.description "ENV2 desc"
|
27
|
+
end
|
28
|
+
|
29
|
+
dependency do |d|
|
30
|
+
d.name "dependency1"
|
31
|
+
d.description "dependency1 description"
|
32
|
+
end
|
33
|
+
|
34
|
+
dependency do |d|
|
35
|
+
d.name "dependency2"
|
36
|
+
d.description "dependency2 description"
|
37
|
+
end
|
38
|
+
|
39
|
+
command do |c|
|
40
|
+
c.name "ume"
|
41
|
+
c.pattern "/ume (?<count>.*?)\z/"
|
42
|
+
c.description "output empty message N lines (<count> times)"
|
43
|
+
c.example <<-EXAMPLE
|
44
|
+
>ruboty command1
|
45
|
+
>result1
|
46
|
+
EXAMPLE
|
47
|
+
end
|
48
|
+
|
49
|
+
command do |c|
|
50
|
+
c.name "umec"
|
51
|
+
c.pattern "/umec (?<text>.+?) (?<count>.*?)\z/"
|
52
|
+
c.description "output <text> message N lines (<count> times)"
|
53
|
+
c.example <<-EXAMPLE
|
54
|
+
>ruboty command2
|
55
|
+
>result2
|
56
|
+
EXAMPLE
|
57
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# チャットを空メッセージ or 任意のメッセージで埋める ruboty-ume を作成しました #ruboty
|
2
|
+
|
3
|
+
## 概要
|
4
|
+
チャットを空メッセージ or 任意のメッセージで埋める ruboty-ume を作成しました
|
5
|
+
|
6
|
+
## 用途
|
7
|
+
ruboty google_image で妙な画像を引き当ててしまった。
|
8
|
+
そんなときに限って、偉い人が近づいてくる。
|
9
|
+
急いでチャット画面から画像を追い出すんだ。
|
10
|
+
|
11
|
+
内緒のメッセージのやりとり。
|
12
|
+
そんなときに限って、内緒のやりとりがばれるとまずい相手が近づいてくる。
|
13
|
+
急いでチャット画面から画像を追い出すんだ。
|
14
|
+
|
15
|
+
そんな時に空行を大量に追加してメッセージを画面外に追い出します。
|
16
|
+
|
17
|
+
## Installation
|
18
|
+
|
19
|
+
Add this line to your application's Gemfile:
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
gem 'ruboty-ume'
|
23
|
+
```
|
24
|
+
|
25
|
+
And then execute:
|
26
|
+
|
27
|
+
$ bundle
|
28
|
+
|
29
|
+
Or install it yourself as:
|
30
|
+
|
31
|
+
$ gem install ruboty-ume
|
32
|
+
|
33
|
+
## Commands
|
34
|
+
|
35
|
+
|Command|Pattern|Description|
|
36
|
+
|:--|:--|:--|
|
37
|
+
|ume|/ume (?<count>.*?)z/|output empty message N lines (<count> times)|
|
38
|
+
|umec|/umec (?<text>.+?) (?<count>.*?)z/|output <text> message N lines (<count> times)|
|
39
|
+
|
40
|
+
## Usage
|
41
|
+
### ume
|
42
|
+
* output empty message N lines (<count> times)
|
43
|
+
|
44
|
+
~~~
|
45
|
+
>ruboty command1
|
46
|
+
>result1
|
47
|
+
~~~
|
48
|
+
|
49
|
+
### umec
|
50
|
+
* output <text> message N lines (<count> times)
|
51
|
+
|
52
|
+
~~~
|
53
|
+
>ruboty command2
|
54
|
+
>result2
|
55
|
+
~~~
|
56
|
+
|
57
|
+
## ENV
|
58
|
+
|
59
|
+
|Name|Description|
|
60
|
+
|:--|:--|
|
61
|
+
|ENV1|ENV1 desc|
|
62
|
+
|ENV2|ENV2 desc|
|
63
|
+
|
64
|
+
## Dependency
|
65
|
+
|
66
|
+
|Name|Description|
|
67
|
+
|:--|:--|
|
68
|
+
|dependency1|dependency1 description|
|
69
|
+
|dependency2|dependency2 description|
|
70
|
+
|
71
|
+
## 参照
|
72
|
+
* [ruboty-ume GitHub](https://github.com/tbpgr/ruboty-ume)
|
73
|
+
* [ruboty-ume RubyGems](http://rubygems.org/gems/ruboty-ume)
|
@@ -0,0 +1,187 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'ruboty/gen'
|
4
|
+
|
5
|
+
# rubocop:disable LineLength, UnusedMethodArgument
|
6
|
+
describe Ruboty::Gen::Article do
|
7
|
+
context :generate do
|
8
|
+
let(:tmp) { 'tmp' }
|
9
|
+
let(:ruboty_articlegen_template) do
|
10
|
+
template = <<-EOS
|
11
|
+
# encoding: utf-8
|
12
|
+
|
13
|
+
user_name 'tbpgr'
|
14
|
+
gem_name 'sample_gem'
|
15
|
+
title 'チャットを空メッセージ or 任意のメッセージで埋める ruboty-sample_gem を作成しました'
|
16
|
+
purpose <<-PURPOSE
|
17
|
+
ruboty google_image で妙な画像を引き当ててしまった。
|
18
|
+
そんなときに限って、偉い人が近づいてくる。
|
19
|
+
急いでチャット画面から画像を追い出すんだ。
|
20
|
+
|
21
|
+
内緒のメッセージのやりとり。
|
22
|
+
そんなときに限って、内緒のやりとりがばれるとまずい相手が近づいてくる。
|
23
|
+
急いでチャット画面から画像を追い出すんだ。
|
24
|
+
|
25
|
+
そんな時に空行を大量に追加してメッセージを画面外に追い出します。
|
26
|
+
PURPOSE
|
27
|
+
|
28
|
+
env do |e|
|
29
|
+
e.name 'ENV1'
|
30
|
+
e.description 'ENV1 description'
|
31
|
+
end
|
32
|
+
|
33
|
+
env do |e|
|
34
|
+
e.name 'ENV2'
|
35
|
+
e.description 'ENV2 description'
|
36
|
+
end
|
37
|
+
|
38
|
+
dependency do |d|
|
39
|
+
d.name 'dependency1 name'
|
40
|
+
d.description 'dependency1 description'
|
41
|
+
end
|
42
|
+
|
43
|
+
dependency do |d|
|
44
|
+
d.name 'dependency2 name'
|
45
|
+
d.description 'dependency2 description'
|
46
|
+
end
|
47
|
+
|
48
|
+
command do |c|
|
49
|
+
c.name 'command1'
|
50
|
+
c.pattern '/command1 | hoge/'
|
51
|
+
c.description 'command1 description'
|
52
|
+
c.example <<-EXAMPLE
|
53
|
+
>ruboty command1
|
54
|
+
>result1
|
55
|
+
EXAMPLE
|
56
|
+
end
|
57
|
+
|
58
|
+
command do |c|
|
59
|
+
c.name 'command2'
|
60
|
+
c.pattern '/command2 | hoge/'
|
61
|
+
c.description 'command2 description'
|
62
|
+
c.example <<-EXAMPLE
|
63
|
+
>ruboty command2
|
64
|
+
>result2
|
65
|
+
EXAMPLE
|
66
|
+
end
|
67
|
+
EOS
|
68
|
+
template
|
69
|
+
end
|
70
|
+
|
71
|
+
cases = [
|
72
|
+
{
|
73
|
+
case_no: 1,
|
74
|
+
case_title: 'valid case',
|
75
|
+
expected: <<-EOS
|
76
|
+
# チャットを空メッセージ or 任意のメッセージで埋める ruboty-sample_gem を作成しました #ruboty
|
77
|
+
|
78
|
+
## 概要
|
79
|
+
チャットを空メッセージ or 任意のメッセージで埋める ruboty-sample_gem を作成しました
|
80
|
+
|
81
|
+
## 用途
|
82
|
+
ruboty google_image で妙な画像を引き当ててしまった。
|
83
|
+
そんなときに限って、偉い人が近づいてくる。
|
84
|
+
急いでチャット画面から画像を追い出すんだ。
|
85
|
+
|
86
|
+
内緒のメッセージのやりとり。
|
87
|
+
そんなときに限って、内緒のやりとりがばれるとまずい相手が近づいてくる。
|
88
|
+
急いでチャット画面から画像を追い出すんだ。
|
89
|
+
|
90
|
+
そんな時に空行を大量に追加してメッセージを画面外に追い出します。
|
91
|
+
|
92
|
+
## Installation
|
93
|
+
|
94
|
+
Add this line to your application's Gemfile:
|
95
|
+
|
96
|
+
```ruby
|
97
|
+
gem 'ruboty-sample_gem'
|
98
|
+
```
|
99
|
+
|
100
|
+
And then execute:
|
101
|
+
|
102
|
+
$ bundle
|
103
|
+
|
104
|
+
Or install it yourself as:
|
105
|
+
|
106
|
+
$ gem install ruboty-sample_gem
|
107
|
+
|
108
|
+
## Commands
|
109
|
+
|
110
|
+
|Command|Pattern|Description|
|
111
|
+
|:--|:--|:--|
|
112
|
+
|command1|/command1 | hoge/|command1 description|
|
113
|
+
|command2|/command2 | hoge/|command2 description|
|
114
|
+
|
115
|
+
## Usage
|
116
|
+
### command1
|
117
|
+
* command1 description
|
118
|
+
|
119
|
+
~~~
|
120
|
+
>ruboty command1
|
121
|
+
>result1
|
122
|
+
~~~
|
123
|
+
|
124
|
+
### command2
|
125
|
+
* command2 description
|
126
|
+
|
127
|
+
~~~
|
128
|
+
>ruboty command2
|
129
|
+
>result2
|
130
|
+
~~~
|
131
|
+
|
132
|
+
## ENV
|
133
|
+
|
134
|
+
|Name|Description|
|
135
|
+
|:--|:--|
|
136
|
+
|ENV1|ENV1 description|
|
137
|
+
|ENV2|ENV2 description|
|
138
|
+
|
139
|
+
## Dependency
|
140
|
+
|
141
|
+
|Name|Description|
|
142
|
+
|:--|:--|
|
143
|
+
|dependency1 name|dependency1 description|
|
144
|
+
|dependency2 name|dependency2 description|
|
145
|
+
|
146
|
+
## 参照
|
147
|
+
* [ruboty-sample_gem GitHub](https://github.com/tbpgr/ruboty-sample_gem)
|
148
|
+
* [ruboty-sample_gem RubyGems](http://rubygems.org/gems/ruboty-sample_gem)
|
149
|
+
EOS
|
150
|
+
}
|
151
|
+
]
|
152
|
+
|
153
|
+
cases.each do |c|
|
154
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
155
|
+
begin
|
156
|
+
case_before c
|
157
|
+
|
158
|
+
# -- given --
|
159
|
+
# nothing
|
160
|
+
|
161
|
+
# -- when --
|
162
|
+
Ruboty::Gen::Article.generate
|
163
|
+
actual = File.open('ruboty-sample_gem.md', 'r:utf-8') { |e|e.read }
|
164
|
+
|
165
|
+
# -- then --
|
166
|
+
expect(actual).to eq(c[:expected])
|
167
|
+
ensure
|
168
|
+
case_after c
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def case_before(_c)
|
173
|
+
FileUtils.mkdir_p(tmp) unless Dir.exist? tmp
|
174
|
+
Dir.chdir(tmp)
|
175
|
+
File.open(Ruboty::Gen::Article::RUBOTY_MEGEN_FILE, 'w:utf-8') do |file|
|
176
|
+
file.puts ruboty_articlegen_template
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
def case_after(_c)
|
181
|
+
Dir.chdir('../')
|
182
|
+
FileUtils.rm_rf(tmp) if Dir.exist? tmp
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
# rubocop:enable LineLength, UnusedMethodArgument
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'simplecov'
|
3
|
+
require 'coveralls'
|
4
|
+
Coveralls.wear!
|
5
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
6
|
+
SimpleCov::Formatter::HTMLFormatter,
|
7
|
+
Coveralls::SimpleCov::Formatter
|
8
|
+
]
|
9
|
+
SimpleCov.start do
|
10
|
+
add_filter '/spec/'
|
11
|
+
end
|
12
|
+
RSpec.configure do |config|
|
13
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
14
|
+
config.run_all_when_everything_filtered = true
|
15
|
+
config.filter_run :focus
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruboty-articlegen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- tbpgr
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.18.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.18.1
|
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.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
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: simplecov
|
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
|
+
description: ruboty-articlegen generate ruboty Article Markdown template.
|
84
|
+
email:
|
85
|
+
- tbpgr@tbpgr.jp
|
86
|
+
executables:
|
87
|
+
- ruboty-articlegen
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- .gitignore
|
92
|
+
- .rspec
|
93
|
+
- .rubocop.yml
|
94
|
+
- .travis.yml
|
95
|
+
- Gemfile
|
96
|
+
- LICENSE.txt
|
97
|
+
- README.md
|
98
|
+
- Rakefile
|
99
|
+
- bin/ruboty-articlegen
|
100
|
+
- lib/ruboty/dsl.rb
|
101
|
+
- lib/ruboty/dsl/dsl.rb
|
102
|
+
- lib/ruboty/dsl/dsl_model.rb
|
103
|
+
- lib/ruboty/gen.rb
|
104
|
+
- lib/ruboty/gen/article.rb
|
105
|
+
- lib/ruboty/gen/version.rb
|
106
|
+
- lib/ruboty/models.rb
|
107
|
+
- lib/ruboty/models/command.rb
|
108
|
+
- lib/ruboty/models/dependency.rb
|
109
|
+
- lib/ruboty/models/env.rb
|
110
|
+
- ruboty-articlegen.gemspec
|
111
|
+
- sample/Rubotyariticle
|
112
|
+
- sample/ruboty-ume.md
|
113
|
+
- spec/ruboty/gen/article_spec.rb
|
114
|
+
- spec/spec_helper.rb
|
115
|
+
homepage: https://github.com/tbpgr/ruboty-articlegen
|
116
|
+
licenses:
|
117
|
+
- MIT
|
118
|
+
metadata: {}
|
119
|
+
post_install_message:
|
120
|
+
rdoc_options: []
|
121
|
+
require_paths:
|
122
|
+
- lib
|
123
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - '>='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: '0'
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
requirements: []
|
134
|
+
rubyforge_project:
|
135
|
+
rubygems_version: 2.3.0
|
136
|
+
signing_key:
|
137
|
+
specification_version: 4
|
138
|
+
summary: ruboty-articlegen generate ruboty Article Markdown template.
|
139
|
+
test_files:
|
140
|
+
- spec/ruboty/gen/article_spec.rb
|
141
|
+
- spec/spec_helper.rb
|