lib/command/list.rb in narou-1.6.3 vs lib/command/list.rb in narou-1.6.4
- old
+ new
@@ -48,10 +48,13 @@
# ハーメルンを含む小説にhamelnタグを付ける
narou l -sg ハーメルン | narou t -a hameln
# 短編を全て凍結する
narou l -f ss | narou freeze --on
+ # リストをそのまま保存したい時(echoオプション)
+ narou l -e > list.txt
+
Options:
EOS
@opt.on("-l", "--latest", "最近更新のあった順に小説を表示する") {
@options["latest"] = true
}
@@ -84,32 +87,37 @@
@options["tags"] = tags.split
else
@options["all-tags"] = true
end
}
+ @opt.on("-e", "--echo", "パイプやリダイレクトでもそのまま出力する") {
+ @options["echo"] = true
+ }
end
def valid_tags?(novel, tags)
novel_tags = novel["tags"] or return false
tags.each do |tag|
return false unless novel_tags.include?(tag)
end
true
end
+ def header
+ [
+ " ID ", " 更新日 ",
+ @options["kind"] ? "種別" : nil,
+ @options["author"] ? "作者名" : nil,
+ @options["site"] ? "サイト名" : nil,
+ " タイトル"
+ ].compact.join(" | ")
+ end
+
def output_list(novels)
now = Time.now
today = now.strftime("%y/%m/%d")
filter = @options["filter"]
- if STDOUT.tty?
- header = [" ID ", " 更新日 ",
- @options["kind"] ? "種別" : nil,
- @options["author"] ? "作者名" : nil,
- @options["site"] ? "サイト名" : nil,
- " タイトル"].compact
- puts header.join(" | ")
- end
selected_lines = {}
novels.each do |novel|
novel_type = novel["novel_type"].to_i
if filter
if filter == "series" && novel_type != 0 && novel_type != 1
@@ -167,13 +175,20 @@
end
}
end
end
if STDOUT.tty?
+ puts header
puts selected_lines.values
else
- # pipeに接続するときはIDを渡す
- puts selected_lines.keys.join(" ")
+ if @options["echo"]
+ # pipeにそのまま出力するときはansicolorコードが邪魔なので削除
+ puts header
+ puts $stdout.strip_color(selected_lines.values.join("\n"))
+ else
+ # pipeに接続するときはIDを渡す
+ puts selected_lines.keys.join(" ")
+ end
end
end
def execute(argv)
super