Sha256: 28ae7318a5b690a63b57795fef54f29e4959c60084d901c9c4fffc648a84bdf6
Contents?: true
Size: 1.85 KB
Versions: 1
Compression:
Stored size: 1.85 KB
Contents
require "thor" require "json" require 'yaml' require 'hashie' module Json2xxx class CLI < Thor include Thor::Actions class_option :fields, aliases: '-f', type: :array, desc: 'default is first data' def initialize(args = [], options = {}, config = {}) super(args, options, config) @global_options = config[:shell].base.options return unless File.pipe?(STDIN) @data = parse_json(STDIN.read) @core = Core.new unless @global_options['fields'].nil? @data = @core.extract(@data, @global_options['fields']) end end desc 'tsv', 'tsv' class_option :force_quotes, type: :boolean, default: true, desc: 'write quote' class_option :write_header, type: :boolean, default: true, desc: 'write header' def tsv puts @core.convert_csv(@data, "\t", options['force_quotes'], options['write_header']) end desc 'csv', 'csv' class_option :force_quotes, type: :boolean, default: true, desc: 'write quote' class_option :write_header, type: :boolean, default: true, desc: 'write header' def csv puts @core.convert_csv(@data, ',', options['force_quotes'], options['write_header']) end desc 'yaml', 'yaml' def yaml puts YAML.dump(@data) end desc 'markdown', 'markdown' def markdown puts @core.convert_markdown(@data) end desc 'backlog', 'backlog' def backlog puts @core.convert_backlog_wiki(@data) end desc 'html', 'html' def html puts @core.convert_html(@data) end desc 'excel', 'excel' def excel @core.convert_excel(@data) end private def parse_json(buffer) begin data = JSON.parse(buffer) rescue => e data = [] buffer.lines.each do |line| data << JSON.parse(line) end end data.class == Array ? data : [data] end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
json2xxx-0.3.0 | lib/json2xxx/cli.rb |