ppcommand 0.1.5 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b056394e4ded505fc8f3504c999b3b4f58151c03
4
+ data.tar.gz: 3d4c6f399311cd0875c843b8bc15bb284eff3921
5
+ SHA512:
6
+ metadata.gz: 69b02307466c3f2f695c9b0cbe4d5775604d31c5bd6f00ccd325a7f69b6bcdd76e1005671d08337cc5b61899f758c42768c210b33917c7bc69c3048734db1f10
7
+ data.tar.gz: 143396ef13ff69181955a997acbcd147fcdd06a470163e30e91d2be4d5f6117fac9701cce1632727a73a97c738b001fb897d283721119cae12d6b60a21886537
data/.gitignore ADDED
@@ -0,0 +1,24 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.bundle
19
+ *.so
20
+ *.o
21
+ *.a
22
+ mkmf.log
23
+
24
+ *~
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ppcommand.gemspec
4
+ gemspec
@@ -1,4 +1,6 @@
1
- Copyright (c) 2010 KOSEKI Kengo
1
+ Copyright (c) 2014 KOSEKI Kengo
2
+
3
+ MIT License
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person obtaining
4
6
  a copy of this software and associated documentation files (the
@@ -1,9 +1,16 @@
1
- = ppcommand
1
+ # ppcommand
2
2
 
3
- Parse and pp YAML/JSON/XML/CSV/HTML.
3
+ Parse and pretty print YAML/JSON/XML/CSV/HTML.
4
4
 
5
- == Usage
5
+ ## Installation
6
6
 
7
+ ```
8
+ $ gem install ppcommand
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```
7
14
  $ pp --help
8
15
  pp [options] [file|URI]
9
16
  -c, --csv parse CSV and pp.
@@ -16,12 +23,13 @@ Parse and pp YAML/JSON/XML/CSV/HTML.
16
23
  -t, --text do not parse. print plain text.
17
24
  -h, --help show this help.
18
25
  -v, --version show version.
26
+ ```
19
27
 
28
+ ## Example
20
29
 
21
- == Examples
22
-
23
- Parse YAML and pp.
30
+ YAML
24
31
 
32
+ ```
25
33
  $ pp ./config/database.yml
26
34
  {"development"=>
27
35
  {"encoding"=>"utf8",
@@ -30,29 +38,39 @@ Parse YAML and pp.
30
38
  "host"=>"localhost",
31
39
  "password"=>nil,
32
40
  "database"=>"appname_test",
33
- "pool"=>5},
34
- :
35
-
36
- Parse JSON and pp.
37
-
38
- $ pp http://api.twitter.com/1/statuses/public_timeline.json
39
- [{"user"=>
40
- {"name"=>"septiasabatina",
41
- "profile_sidebar_fill_color"=>"FFFFFF",
42
- "profile_sidebar_border_color"=>"FFFFFF",
43
- "profile_background_tile"=>true,
44
- "profile_link_color"=>"000000",
45
- "url"=>"http://example.com",
46
- "contributors_enabled"=>false,
47
- "favourites_count"=>0,
48
- "id"=>123456789,
49
- "description"=>"",
50
- "utc_offset"=>0,
51
- "lang"=>"en",
41
+ "pool"=>5},
52
42
  :
53
-
54
- Parse HTML and pp (required nokogiri).
55
-
43
+ ```
44
+
45
+ JSON
46
+
47
+ ```
48
+ $ pp 'http://gdata.youtube.com/feeds/api/standardfeeds/most_popular?v=2&alt=json'
49
+ {"version"=>"1.0",
50
+ "encoding"=>"UTF-8",
51
+ "feed"=>
52
+ {"xmlns"=>"http://www.w3.org/2005/Atom",
53
+ "xmlns$gd"=>"http://schemas.google.com/g/2005",
54
+ "xmlns$openSearch"=>"http://a9.com/-/spec/opensearch/1.1/",
55
+ "xmlns$yt"=>"http://gdata.youtube.com/schemas/2007",
56
+ "xmlns$media"=>"http://search.yahoo.com/mrss/",
57
+ "gd$etag"=>"",
58
+ "id"=>{"$t"=>"tag:youtube.com,2008:standardfeed:global:most_popular"},
59
+ "updated"=>{"$t"=>"2015-01-01T00:00:00.000Z"},
60
+ "category"=>
61
+ [{"scheme"=>"http://schemas.google.com/g/2005#kind",
62
+ "term"=>"http://gdata.youtube.com/schemas/2007#video"}],
63
+ "title"=>{"$t"=>"Most Popular"},
64
+ "logo"=>{"$t"=>"http://www.gstatic.com/youtube/img/logo.png"},
65
+ "link"=>
66
+ [{"rel"=>"alternate",
67
+ "type"=>"text/html",
68
+ :
69
+ ```
70
+
71
+ HTML (required nokogiri)
72
+
73
+ ```
56
74
  $ pp http://www.google.com/
57
75
  #(Document:0x96c0ee {
58
76
  name = "document",
@@ -64,9 +82,11 @@ Parse HTML and pp (required nokogiri).
64
82
  #(Element:0x96adb6 {
65
83
  name = "head",
66
84
  :
85
+ ```
67
86
 
68
87
  Get URL contents as text, skip 3 lines, convert encoding to UTF-8, parse CSV and pp with labels. When using --csvtable(-C), the first line treated as label.
69
88
 
89
+ ```
70
90
  $ pp -t http://example.com/items.csv | head -n +3 | nkf -w | pp -C
71
91
  [[[0, "name", "apple"],
72
92
  [1, "price", "100"],
@@ -80,18 +100,12 @@ Get URL contents as text, skip 3 lines, convert encoding to UTF-8, parse CSV and
80
100
  [3, "label1", "xxx"],
81
101
  [4, "label2", "yyy"],
82
102
  [5, "label3", "zzz"]]]
103
+ ```
83
104
 
84
- == Note on Patches/Pull Requests
85
-
86
- * Fork the project.
87
- * Make your feature addition or bug fix.
88
- * Add tests for it. This is important so I don't break it in a
89
- future version unintentionally.
90
- * Commit, do not mess with rakefile, version, or history.
91
- (if you want to have your own version, that is fine but
92
- bump version in a commit by itself I can ignore when I pull)
93
- * Send me a pull request. Bonus points for topic branches.
94
-
95
- == Copyright
105
+ ## Contributing
96
106
 
97
- Copyright (c) 2010 KOSEKI Kengo. See LICENSE for details.
107
+ 1. Fork it ( https://github.com/[my-github-username]/ppcommand/fork )
108
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
109
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
110
+ 4. Push to the branch (`git push origin my-new-feature`)
111
+ 5. Create a new Pull Request
data/Rakefile CHANGED
@@ -1,38 +1,2 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "ppcommand"
8
- gem.summary = %Q{Parse and pp YAML/JSON/XML/CSV/HTML}
9
- gem.description = %Q{Parse and pp YAML/JSON/XML/CSV/HTML}
10
- gem.email = "koseki@gmail.com"
11
- gem.homepage = "http://github.com/koseki/ppcommand"
12
- gem.authors = ["KOSEKI Kengo"]
13
- gem.add_dependency('json')
14
- gem.add_dependency('xml-simple')
15
- gem.add_development_dependency "rspec", ">= 1.2.9"
16
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
- end
18
- Jeweler::GemcutterTasks.new
19
- rescue LoadError
20
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
21
- end
22
-
23
- require 'spec/rake/spectask'
24
- Spec::Rake::SpecTask.new(:spec) do |spec|
25
- spec.libs << 'lib' << 'spec'
26
- spec.spec_files = FileList['spec/**/*_spec.rb']
27
- end
28
-
29
- Spec::Rake::SpecTask.new(:rcov) do |spec|
30
- spec.libs << 'lib' << 'spec'
31
- spec.pattern = 'spec/**/*_spec.rb'
32
- spec.rcov = true
33
- end
34
-
35
- task :spec => :check_dependencies
36
-
37
- task :default => :spec
1
+ require "bundler/gem_tasks"
38
2
 
data/bin/pp CHANGED
@@ -1,13 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- unless defined? Gem
4
- $:.unshift File.dirname(__FILE__) + "/../lib"
5
- end
3
+ $:.unshift File.join(File.dirname(__FILE__), '../lib')
6
4
 
7
- begin
8
- require 'rubygems'
9
- require 'ppcommand'
10
- PPCommand.execute
11
- rescue LoadError
12
- end
5
+ require 'ppcommand'
13
6
 
7
+ PPCommand.execute
data/lib/ppcommand.rb CHANGED
@@ -1,217 +1,8 @@
1
- require 'pp'
2
- require 'yaml'
3
- require 'optparse'
4
-
5
- $KCODE = 'utf8' if RUBY_VERSION.to_f < 1.9
6
-
7
- class PPCommand
1
+ require "ppcommand/version"
2
+ require "ppcommand/main"
8
3
 
4
+ module PPCommand
9
5
  def self.execute
10
- self.new.execute(ARGV)
11
- end
12
-
13
- def pp_xml(source)
14
- require 'rubygems'
15
- require 'rexml/document'
16
- puts pretty_xml(REXML::Document.new(source))
17
- end
18
-
19
- def pp_xmlsimple(source)
20
- require 'rubygems'
21
- require 'xmlsimple'
22
- pp XmlSimple.xml_in(source)
23
- end
24
-
25
- def pp_json(source)
26
- require 'rubygems'
27
- require 'json'
28
- pp JSON.parse(source)
29
- end
30
-
31
- def pp_yaml(source)
32
- YAML.each_document(StringIO.new(source)) do |obj|
33
- pp obj
34
- end
6
+ PPCommand::Main.new.execute(ARGV)
35
7
  end
36
-
37
- def pp_csv(source)
38
- require 'csv'
39
- pp CSV.parse(source)
40
- end
41
-
42
- def pp_csvtable(source)
43
- require 'csv'
44
- data = CSV.parse(source)
45
- keys = data.shift
46
- result = []
47
- data.each do |values|
48
- entry = []
49
- i = nil
50
- keys.each_with_index do |k, i|
51
- entry << [i, k, values[i]]
52
- end
53
- if keys.length < values.length
54
- values[i + 1 .. -1].each_with_index do |v, j|
55
- entry << [i + j + 1, nil, v]
56
- end
57
- end
58
- result << entry
59
- end
60
- pp result
61
- # data.map {|values| Hash[* [keys,values].transpose.flatten] }
62
- end
63
-
64
- def pp_html(source)
65
- begin
66
- require 'nokogiri'
67
- rescue Exception => e
68
- STDERR.puts "'nokogiri' is required to parse HTML."
69
- STDERR.puts "$ sudo gem install nokorigi"
70
- return
71
- end
72
- doc = Nokogiri.HTML(source)
73
- # doc.serialize(:encoding => 'UTF-8', :save_with => Nokogiri::XML::Node::SaveOptions::FORMAT | Nokogiri::XML::Node::SaveOptions::AS_XML)
74
- pp doc
75
- end
76
-
77
- def execute(argv)
78
- opts = {:type => "auto"}
79
- opp = OptionParser.new
80
-
81
- opp.banner = "pp [options] [file|URI]"
82
- opp.on_tail("-h", "--help", "show this help.") do
83
- puts opp
84
- exit
85
- end
86
- opp.on_tail("-v", "--version", "show version.") do
87
- puts "ppcommand " + File.read(File.dirname(__FILE__) + "/../VERSION")
88
- exit
89
- end
90
-
91
- opp.on("-c", "--csv", "parse CSV and pp."){|x| opts[:type] = "csv"}
92
- opp.on("-C", "--csvtable", "parse CSV, add labels and pp."){|x| opts[:type] = "csvtable"}
93
- opp.on("-H", "--html", "parse HTML and pp."){|x| opts[:type] = "html"}
94
- opp.on("-j", "--json", "parse JSON and pp."){|x| opts[:type] = "json"}
95
- opp.on("-x", "--xml", "parse XML using REXML and pp."){|x| opts[:type] = "xml"}
96
- opp.on("-X", "--xmlsimple", "parse XML using XMLSimple and pp."){|x| opts[:type] = "xmlsimple"}
97
- opp.on("-y", "--yaml", "parse YAML and pp."){|x| opts[:type] = "yaml"}
98
-
99
- opp.on("-t", "--text", "do not parse. print plain text."){|x| opts[:type] = "text"}
100
-
101
- opp.parse!(argv)
102
-
103
- file = argv.shift
104
-
105
- source = ""
106
- if file.nil?
107
- source = STDIN.read
108
- elsif file=~ %r{^https?://}
109
- require 'open-uri'
110
- open(file) do |io|
111
- source = io.read
112
- if opts[:type] == "auto"
113
- t = io.content_type
114
- if t =~ /json/
115
- opts[:type] = "json"
116
- elsif t =~ /yaml/
117
- opts[:type] = "yaml"
118
- elsif t =~ /csv/
119
- opts[:type] = "csv"
120
- elsif t =~ /html/
121
- opts[:type] = "html"
122
- elsif t =~ /xml/
123
- opts[:type] = "xml"
124
- end
125
- end
126
- end
127
- else
128
- source = File.read(file)
129
- end
130
-
131
- if opts[:type] == "auto"
132
- if file =~ /\.xml$/i
133
- opts[:type] = "xml"
134
- elsif file =~ /\.json$/i
135
- opts[:type] = "json"
136
- elsif file =~ /\.(?:csv|txt)$/i
137
- opts[:type] = "csv"
138
- elsif file =~ /\.html$/i
139
- opts[:type] = "html"
140
- else
141
- opts[:type] = "yaml"
142
- end
143
- end
144
-
145
- case opts[:type]
146
- when "xml"
147
- pp_xml(source)
148
- when "xmlsimple"
149
- pp_xmlsimple(source)
150
- when "json"
151
- pp_json(source)
152
- when "csv"
153
- pp_csv(source)
154
- when "csvtable"
155
- pp_csvtable(source)
156
- when "html"
157
- pp_html(source)
158
- when "text"
159
- puts source
160
- else "yaml"
161
- pp_yaml(source)
162
- end
163
- end
164
-
165
-
166
- # original from http://snippets.dzone.com/posts/show/4953
167
- def x_pretty_print(parent_node, itab)
168
- buffer = ''
169
- parent_node.elements.each do |node|
170
- buffer += ' ' * itab + "<#{node.name}#{get_att_list(node, itab)}"
171
- if node.to_a.length > 0
172
- buffer += ">"
173
- if node.text.nil?
174
- buffer += "\n"
175
- buffer += x_pretty_print(node,itab+2)
176
- buffer += ' ' * itab + "</#{node.name}>\n"
177
- else
178
- node_text = node.text.strip
179
- if node_text != ''
180
- buffer += node_text
181
- buffer += "</#{node.name}>\n"
182
- else
183
- buffer += "\n" + x_pretty_print(node,itab+2)
184
- buffer += ' ' * itab + "</#{node.name}>\n"
185
- end
186
- end
187
- else
188
- buffer += " />\n"
189
- end
190
-
191
- end
192
- buffer
193
- end
194
-
195
- def get_att_list(node, itab = 0)
196
- att_list = ''
197
- node.attributes.each { |attribute, val| att_list += "\n" + (" " * itab) + " #{attribute} = \"#{val}\"" }
198
- att_list
199
- end
200
-
201
- def pretty_xml(doc)
202
- buffer = ''
203
- xml_declaration = doc.to_s.match('<\?.*\?>').to_s
204
- buffer += "#{xml_declaration}\n" if not xml_declaration.nil?
205
- xml_doctype = doc.to_s.match('<\!.*\">').to_s
206
- buffer += "#{xml_doctype}\n" if not xml_doctype.nil?
207
- buffer += "<#{doc.root.name}#{get_att_list(doc.root)}"
208
- if doc.root.to_a.length > 0
209
- buffer +=">\n#{x_pretty_print(doc.root,2)}</#{doc.root.name}>"
210
- else
211
- buffer += " />\n"
212
- end
213
- end
214
-
215
8
  end
216
-
217
-
@@ -0,0 +1,211 @@
1
+ # coding: utf-8
2
+
3
+ require 'pp'
4
+ require 'yaml'
5
+ require 'optparse'
6
+
7
+ module PPCommand
8
+ class Main
9
+
10
+ def pp_xml(source)
11
+ require 'rubygems'
12
+ require 'rexml/document'
13
+ puts pretty_xml(REXML::Document.new(source))
14
+ end
15
+
16
+ def pp_xmlsimple(source)
17
+ require 'rubygems'
18
+ require 'xmlsimple'
19
+ pp XmlSimple.xml_in(source)
20
+ end
21
+
22
+ def pp_json(source)
23
+ require 'rubygems'
24
+ require 'json'
25
+ pp JSON.parse(source)
26
+ end
27
+
28
+ def pp_yaml(source)
29
+ YAML.each_document(StringIO.new(source)) do |obj|
30
+ pp obj
31
+ end
32
+ end
33
+
34
+ def pp_csv(source)
35
+ require 'csv'
36
+ pp CSV.parse(source)
37
+ end
38
+
39
+ def pp_csvtable(source)
40
+ require 'csv'
41
+ data = CSV.parse(source)
42
+ keys = data.shift
43
+ result = []
44
+ data.each do |values|
45
+ entry = []
46
+ i = nil
47
+ keys.each_with_index do |k, i|
48
+ entry << [i, k, values[i]]
49
+ end
50
+ if keys.length < values.length
51
+ values[i + 1 .. -1].each_with_index do |v, j|
52
+ entry << [i + j + 1, nil, v]
53
+ end
54
+ end
55
+ result << entry
56
+ end
57
+ pp result
58
+ # data.map {|values| Hash[* [keys,values].transpose.flatten] }
59
+ end
60
+
61
+ def pp_html(source)
62
+ begin
63
+ require 'nokogiri'
64
+ rescue Exception => e
65
+ STDERR.puts "'nokogiri' is required to parse HTML."
66
+ STDERR.puts "$ gem install nokorigi"
67
+ return
68
+ end
69
+ doc = Nokogiri.HTML(source)
70
+ # doc.serialize(:encoding => 'UTF-8', :save_with => Nokogiri::XML::Node::SaveOptions::FORMAT | Nokogiri::XML::Node::SaveOptions::AS_XML)
71
+ pp doc
72
+ end
73
+
74
+ def execute(argv)
75
+ opts = {:type => "auto"}
76
+ opp = OptionParser.new
77
+
78
+ opp.banner = "pp [options] [file|URI]"
79
+ opp.on_tail("-h", "--help", "show this help.") do
80
+ puts opp
81
+ exit
82
+ end
83
+ opp.on_tail("-v", "--version", "show version.") do
84
+ puts "ppcommand #{ PPCommand::VERSION }"
85
+ exit
86
+ end
87
+
88
+ opp.on("-c", "--csv", "parse CSV and pp."){|x| opts[:type] = "csv"}
89
+ opp.on("-C", "--csvtable", "parse CSV, add labels and pp."){|x| opts[:type] = "csvtable"}
90
+ opp.on("-H", "--html", "parse HTML and pp."){|x| opts[:type] = "html"}
91
+ opp.on("-j", "--json", "parse JSON and pp."){|x| opts[:type] = "json"}
92
+ opp.on("-x", "--xml", "parse XML using REXML and pp."){|x| opts[:type] = "xml"}
93
+ opp.on("-X", "--xmlsimple", "parse XML using XMLSimple and pp."){|x| opts[:type] = "xmlsimple"}
94
+ opp.on("-y", "--yaml", "parse YAML and pp."){|x| opts[:type] = "yaml"}
95
+
96
+ opp.on("-t", "--text", "do not parse. print plain text."){|x| opts[:type] = "text"}
97
+
98
+ opp.parse!(argv)
99
+
100
+ file = argv.shift
101
+
102
+ source = ""
103
+ if file.nil?
104
+ source = STDIN.read
105
+ elsif file=~ %r{^https?://}
106
+ require 'open-uri'
107
+ open(file) do |io|
108
+ source = io.read
109
+ if opts[:type] == "auto"
110
+ t = io.content_type
111
+ if t =~ /json/
112
+ opts[:type] = "json"
113
+ elsif t =~ /yaml/
114
+ opts[:type] = "yaml"
115
+ elsif t =~ /csv/
116
+ opts[:type] = "csv"
117
+ elsif t =~ /html/
118
+ opts[:type] = "html"
119
+ elsif t =~ /xml/
120
+ opts[:type] = "xml"
121
+ end
122
+ end
123
+ end
124
+ else
125
+ source = File.read(file)
126
+ end
127
+
128
+ if opts[:type] == "auto"
129
+ if file =~ /\.xml$/i
130
+ opts[:type] = "xml"
131
+ elsif file =~ /\.json$/i
132
+ opts[:type] = "json"
133
+ elsif file =~ /\.(?:csv|txt)$/i
134
+ opts[:type] = "csv"
135
+ elsif file =~ /\.html$/i
136
+ opts[:type] = "html"
137
+ else
138
+ opts[:type] = "yaml"
139
+ end
140
+ end
141
+
142
+ case opts[:type]
143
+ when "xml"
144
+ pp_xml(source)
145
+ when "xmlsimple"
146
+ pp_xmlsimple(source)
147
+ when "json"
148
+ pp_json(source)
149
+ when "csv"
150
+ pp_csv(source)
151
+ when "csvtable"
152
+ pp_csvtable(source)
153
+ when "html"
154
+ pp_html(source)
155
+ when "text"
156
+ puts source
157
+ else "yaml"
158
+ pp_yaml(source)
159
+ end
160
+ end
161
+
162
+ # original from http://snippets.dzone.com/posts/show/4953
163
+ def x_pretty_print(parent_node, itab)
164
+ buffer = ''
165
+ parent_node.elements.each do |node|
166
+ buffer += ' ' * itab + "<#{node.name}#{get_att_list(node, itab)}"
167
+ if node.to_a.length > 0
168
+ buffer += ">"
169
+ if node.text.nil?
170
+ buffer += "\n"
171
+ buffer += x_pretty_print(node,itab+2)
172
+ buffer += ' ' * itab + "</#{node.name}>\n"
173
+ else
174
+ node_text = node.text.strip
175
+ if node_text != ''
176
+ buffer += node_text
177
+ buffer += "</#{node.name}>\n"
178
+ else
179
+ buffer += "\n" + x_pretty_print(node,itab+2)
180
+ buffer += ' ' * itab + "</#{node.name}>\n"
181
+ end
182
+ end
183
+ else
184
+ buffer += " />\n"
185
+ end
186
+
187
+ end
188
+ buffer
189
+ end
190
+
191
+ def get_att_list(node, itab = 0)
192
+ att_list = ''
193
+ node.attributes.each { |attribute, val| att_list += "\n" + (" " * itab) + " #{attribute} = \"#{val}\"" }
194
+ att_list
195
+ end
196
+
197
+ def pretty_xml(doc)
198
+ buffer = ''
199
+ xml_declaration = doc.to_s.match('<\?.*\?>').to_s
200
+ buffer += "#{xml_declaration}\n" if not xml_declaration.nil?
201
+ xml_doctype = doc.to_s.match('<\!.*\">').to_s
202
+ buffer += "#{xml_doctype}\n" if not xml_doctype.nil?
203
+ buffer += "<#{doc.root.name}#{get_att_list(doc.root)}"
204
+ if doc.root.to_a.length > 0
205
+ buffer +=">\n#{x_pretty_print(doc.root,2)}</#{doc.root.name}>"
206
+ else
207
+ buffer += " />\n"
208
+ end
209
+ end
210
+ end
211
+ end
@@ -0,0 +1,3 @@
1
+ module PPCommand
2
+ VERSION = '0.2.0'
3
+ end
data/ppcommand.gemspec CHANGED
@@ -1,64 +1,26 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ppcommand/version'
5
5
 
6
- Gem::Specification.new do |s|
7
- s.name = %q{ppcommand}
8
- s.version = "0.1.4"
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'ppcommand'
8
+ spec.version = PPCommand::VERSION
9
+ spec.authors = ['KOSEKI Kengo']
10
+ spec.email = ['koseki@gmail.com']
11
+ spec.summary = %q{Parse and pretty print YAML/JSON/XML/CSV/HTML}
12
+ spec.description = %q{Parse and pretty print YAML/JSON/XML/CSV/HTML}
13
+ spec.homepage = 'http://github.com/koseki/ppcommand'
14
+ spec.license = 'MIT'
9
15
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["KOSEKI Kengo"]
12
- s.date = %q{2010-04-11}
13
- s.default_executable = %q{pp}
14
- s.description = %q{Parse and pp YAML/JSON/XML/CSV/HTML}
15
- s.email = %q{koseki@gmail.com}
16
- s.executables = ["pp"]
17
- s.extra_rdoc_files = [
18
- "LICENSE",
19
- "README.rdoc"
20
- ]
21
- s.files = [
22
- ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/pp",
29
- "lib/ppcommand.rb",
30
- "ppcommand.gemspec",
31
- "spec/ppcommand_spec.rb",
32
- "spec/spec.opts",
33
- "spec/spec_helper.rb"
34
- ]
35
- s.homepage = %q{http://github.com/koseki/ppcommand}
36
- s.rdoc_options = ["--charset=UTF-8"]
37
- s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.3.5}
39
- s.summary = %q{Parse and pp YAML/JSON/XML/CSV/HTML}
40
- s.test_files = [
41
- "spec/ppcommand_spec.rb",
42
- "spec/spec_helper.rb"
43
- ]
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
44
20
 
45
- if s.respond_to? :specification_version then
46
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
- s.specification_version = 3
21
+ spec.add_dependency 'xml-simple'
48
22
 
49
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
50
- s.add_runtime_dependency(%q<json>, [">= 0"])
51
- s.add_runtime_dependency(%q<xml-simple>, [">= 0"])
52
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
53
- else
54
- s.add_dependency(%q<json>, [">= 0"])
55
- s.add_dependency(%q<xml-simple>, [">= 0"])
56
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
57
- end
58
- else
59
- s.add_dependency(%q<json>, [">= 0"])
60
- s.add_dependency(%q<xml-simple>, [">= 0"])
61
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
62
- end
23
+ spec.add_development_dependency 'bundler', '~> 1.6'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec'
63
26
  end
64
-
metadata CHANGED
@@ -1,122 +1,119 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ppcommand
3
- version: !ruby/object:Gem::Version
4
- hash: 17
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 5
10
- version: 0.1.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - KOSEKI Kengo
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2014-12-21 00:00:00 +09:00
19
- default_executable: pp
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: json
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
11
+ date: 2014-12-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
36
14
  name: xml-simple
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 0
46
- version: "0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
47
20
  type: :runtime
48
- version_requirements: *id002
49
- - !ruby/object:Gem::Dependency
50
- name: rspec
51
21
  prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- hash: 13
58
- segments:
59
- - 1
60
- - 2
61
- - 9
62
- version: 1.2.9
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
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: '0'
63
48
  type: :development
64
- version_requirements: *id003
65
- description: Parse and pp YAML/JSON/XML/CSV/HTML
66
- email: koseki@gmail.com
67
- executables:
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '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
+ description: Parse and pretty print YAML/JSON/XML/CSV/HTML
70
+ email:
71
+ - koseki@gmail.com
72
+ executables:
68
73
  - pp
69
74
  extensions: []
70
-
71
- extra_rdoc_files:
72
- - LICENSE
73
- - README.rdoc
74
- files:
75
+ extra_rdoc_files: []
76
+ files:
75
77
  - .document
76
- - LICENSE
77
- - README.rdoc
78
+ - .gitignore
79
+ - Gemfile
80
+ - LICENSE.txt
81
+ - README.md
78
82
  - Rakefile
79
83
  - VERSION
80
84
  - bin/pp
81
85
  - lib/ppcommand.rb
86
+ - lib/ppcommand/main.rb
87
+ - lib/ppcommand/version.rb
82
88
  - ppcommand.gemspec
83
89
  - spec/ppcommand_spec.rb
84
90
  - spec/spec.opts
85
91
  - spec/spec_helper.rb
86
- has_rdoc: true
87
92
  homepage: http://github.com/koseki/ppcommand
88
- licenses: []
89
-
93
+ licenses:
94
+ - MIT
95
+ metadata: {}
90
96
  post_install_message:
91
97
  rdoc_options: []
92
-
93
- require_paths:
98
+ require_paths:
94
99
  - lib
95
- required_ruby_version: !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
104
- required_rubygems_version: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ">="
108
- - !ruby/object:Gem::Version
109
- hash: 3
110
- segments:
111
- - 0
112
- version: "0"
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
113
110
  requirements: []
114
-
115
111
  rubyforge_project:
116
- rubygems_version: 1.6.2
112
+ rubygems_version: 2.0.14
117
113
  signing_key:
118
- specification_version: 3
119
- summary: Parse and pp YAML/JSON/XML/CSV/HTML
120
- test_files:
114
+ specification_version: 4
115
+ summary: Parse and pretty print YAML/JSON/XML/CSV/HTML
116
+ test_files:
121
117
  - spec/ppcommand_spec.rb
118
+ - spec/spec.opts
122
119
  - spec/spec_helper.rb