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