README.md
# QiitaMatome
[![Gem Version](https://badge.fury.io/rb/qiita_matome.svg)](http://badge.fury.io/rb/qiita_matome)
[![Build Status](https://travis-ci.org/tbpgr/qiita_matome.png?branch=master)](https://travis-ci.org/tbpgr/qiita_matome)
[![Coverage Status](https://coveralls.io/repos/tbpgr/qiita_matome/badge.png)](https://coveralls.io/r/tbpgr/qiita_matome)
[![Code Climate](https://codeclimate.com/github/tbpgr/qiita_matome.png)](https://codeclimate.com/github/tbpgr/qiita_matome)
Qiitaのまとめページジェネレーター
## 概要
Qiitaの特定ユーザー、特定タグのリンクを一覧化したまとめ記事を生成する。
## 前提
* 認証不要(認証不要APIである、`GET /api/v2/users/:url_name/items` のみを利用する)
* 任意のユーザーの任意の1つのタグに限定してまとめ記事を作成する
※基本的には自分のユーザーのまとめを作ることを想定しています
## 確認済み環境
* ruby 2.0.0p451 環境にて動作確認済み
## サブコマンド
|コマンド|ショートカット|内容|
|:--|:--|:--|
|init|i|設定ファイル( *Qiitamatome* )を出力|
|matome|m|まとめ記事の生成。実行するためには事前に *Qiitamatome* を生成、編集する必要がある|
|help|h|ヘルプの表示|
|version|v|バージョンの表示|
## 設定ファイルについて
RubyのDSLで作成されています。
ファイル名は *Qiitamatome*
~~~ruby
qiitam init
~~~
もしくは
~~~ruby
qiitam i
~~~
でテンプレートを生成できます。
Gemfileのような感覚でご利用ください。
Rubyの内部DSLになっているので、Rubyのコードを利用することも可能です。
例えば、出力ファイルの名前に現在時刻を埋め込んだり、など。
### 設定ファイル自動生成時の内容
~~~ruby
# encoding: utf-8
# Set your qiita user name
# user is required
# user allow only String
user "your value"
# Set your matome target tag name
# tag is required
# tag allow only String
tag "your value"
# Set your matome title
# title is required
# title allow only String
title "your value"
# Set your matome file's output path
# output_file is required
# output_file allow only String
# output_file's default value => "matome.md"
output_file "matome.md"
# Set your matome sort type. you can choose created_at_asc/desc, updated_at_asc/desc, title_asc/desc, likes_count_asc/desc
# sort_type allow only String
# sort_type's default value => "created_at_desc"
sort_type "created_at_desc"
# Set your matome display columns. you can choose :title, :created_at, :updated_at, :likes_count and :no
# display_columns allow only Array
# display_columns's default value => [:no, :title, :created_at, :likes_count]
display_columns [:no, :title, :created_at, :likes_count]
# Set your matome exclude files
# excludes allow only Array
# excludes's default value => []
excludes []
~~~
### 設定項目一覧
|設定キー|必須|デフォルト|内容|
|:--|:--|:--|:--|
|user|○|なし|対象ユーザー|
|tag|○|なし|対象タグ|
|title|○|なし|まとめ記事タイトル|
|output_file|○|matome.md|出力パス|
|sort_type|×|created_at_desc|まとめ記事内のソート順。詳しくはソート種別参照|
|display_columns|×|[:no, :title, :created_at, :likes_count]|まとめ記事の表示項目指定。指定順に並ぶ。詳しくは表示項目参照|
|exclude|×|[id1, id2...]|除外記事ID(uuid)を配列で指定。例えば、まとめ記事自信を除外するために指定|
### ソート種別
|種別|内容|
|:--|:--|
|created_at_asc|初回投稿日昇順|
|created_at_desc|初回投稿日降順|
|updated_at_asc|更新日昇順|
|updated_at_desc|更新日降順|
|title_asc|記事タイトル昇順|
|title_desc|記事タイトル降順|
|likes_count_asc|いいね数昇順|
|likes_count_desc|いいね数降順。つまり人気記事順|
### 表示項目
|項目名|内容|
|:--|:--|
|:title|記事タイトル。該当記事へのリンクになる|
|:created_at|初回投稿日 「YYYY/MM/DD hh:mi:ss」 フォーマット|
|:updated_at|更新日 「YYYY/MM/DD hh:mi:ss」 フォーマット|
|:likes_count|いいね数|
|:no|連番|
## インストール
Add this line to your application's Gemfile:
gem 'qiita_matome'
And then execute:
$ bundle
Or install it yourself as:
$ gem install qiita_matome
## 使用手順の例
* 設定ファイル( *Qiitamatome* )の生成
~~~bash
$ qiitam init
~~~
または
~~~bash
$ qiitam i
~~~
* 設定ファイル( *Qiitamatome* )を編集
ユーザー *tbpgr* の *rubocop* タグの記事をまとめ記事として出力します。
~~~bash
user "tbpgr"
tag "rubocop"
title "RuboCop まとめ タイトル昇順"
output_file "./matome_title_asc.md"
sort_type "title_asc"
display_columns [:no, :title, :created_at, :likes_count]
# まとめ記事を除外
excludes ['edbfecb6a6789dd54f47']
~~~
* まとめ記事作成を実行
~~~bash
$ qiitam matome
~~~
または
~~~bash
$ qiitam m
~~~
* 結果を確認
~~~bash
$ cat ./matome_title_asc.md
# 内容が表示される
~~~
## 出力サンプル
[matome_title_asc.md](./samples/matome_title_asc.md)
## History
* version 0.0.1 : 2014/07/03 : first release
## Contributing
1. Fork it ( https://github.com/tbpgr/qiita_matome/fork )
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## 補足
* この gem は [dslable gem](https://github.com/tbpgr/dslable) を利用して作成しています
* この gem のテストクラスは [rspec_piccolo gem](https://github.com/tbpgr/rspec_piccolo) を利用してひな形を生成しています