prettify 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +57 -0
- data/Rakefile +1 -0
- data/bin/prettify +9 -0
- data/img/formatted_json.png +0 -0
- data/img/prettify_icon.png +0 -0
- data/json/test_1.json +1 -0
- data/json/test_2.json +1 -0
- data/lib/prettify.rb +61 -0
- data/lib/prettify/version.rb +3 -0
- data/prettify.gemspec +27 -0
- metadata +128 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZWU5MGJiYzcxOGM1NTE3MTIyNWU0NTU4Mzk5MDlkNzc4YmNmMGQ4MQ==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZWYwNDcxMGRkNTcwNTBlMTJiMmMzNmVlZTY0NzVhZjYxNGI4MWMyZQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
Mzk4YWRlZGNjNDFiN2ZjYTIxNjU1NTFiNzVmMGI1MjcwNDE1ZTc5ZmIwYjAy
|
10
|
+
ODhmYmI1ZDkzOTc3MmRhOTM5N2M3MGEzMzczOTExNDM2MzJkNGRlYzY1MDcy
|
11
|
+
NTY4ZWUzYmY4ZDFkOGMwZTZiYjFjZDVhMDFiYTgzODkyYmQ2NWQ=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MTg1MTgzYzdkOTlmOGM3NzI1ODIwN2M3NTI5YTkyNDQ3ZGU5ZDI4ODJjZjli
|
14
|
+
OTI5MGQ1MmM3NzQxZjAxNDk2ZDkyOWQxOWNmYzYwYzhhZjM5MjY1YTU3ODE3
|
15
|
+
ZWU0NWNmY2FiNDZjZGZkNGUxZDBjYzliNmI0NjU5NmViMTc4M2E=
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Nayyara Samuel
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
<img src='https://github.com/nayyara-samuel/prettify/blob/master/img/prettify_icon.png?raw=true' height='100'>
|
2
|
+
|
3
|
+
This gem is inspired by the [JSON Editor Online](http://www.jsoneditoronline.org/) tool. It contains a CLI for pretty formatting JSON files on your file system. It will let you bulk format files as well. It also has a `Prettify::Prettifier` module which you can use in your code to generated pretty JSON output. It uses the Ruby JSON gem's `pretty_generate` method with a minor modification to improve formatting.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'prettify'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install prettify
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
To use in our code:
|
22
|
+
|
23
|
+
class MyClass
|
24
|
+
include Prettify::Prettifier
|
25
|
+
def pretty
|
26
|
+
# Use a JSON string
|
27
|
+
some_json = '{"one": 1}'
|
28
|
+
puts prettify(some_json)
|
29
|
+
|
30
|
+
# Or use a hash
|
31
|
+
some_json = {"one"=> 1}
|
32
|
+
puts prettify(some_json)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
To use the CLI use type the command `prettify`.
|
37
|
+
|
38
|
+
Usage:
|
39
|
+
prettify json -l, --location=LOCATION
|
40
|
+
|
41
|
+
Options:
|
42
|
+
-l, --location=LOCATION # The desired file/directory containing the JSON files
|
43
|
+
-o, [--output=OUTPUT] # The desired output file/directory to write to
|
44
|
+
|
45
|
+
Formats JSON files on the file system
|
46
|
+
|
47
|
+
##Example Formatting:
|
48
|
+
|
49
|
+
<img src='https://raw.github.com/nayyara-samuel/prettify/master/img/formatted_json.png' height='350'>
|
50
|
+
|
51
|
+
## Contributing
|
52
|
+
|
53
|
+
1. Fork it
|
54
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
55
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
56
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
57
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/prettify
ADDED
Binary file
|
Binary file
|
data/json/test_1.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"firstName":"John","lastName":"Smith","age":25,"address":{"streetAddress":"21 2nd Street","city":"New York","state":"NY","postalCode":10021},"phoneNumbers":[{"type":"home","number":"212 555-1234"},{"type":"fax","number":"646 555-4567"}],"children":[],"hasCar":true}
|
data/json/test_2.json
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
[{"attribute":"something"}, {"attribute":"something else"}]
|
data/lib/prettify.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'prettify/version'
|
2
|
+
require 'thor'
|
3
|
+
require 'json'
|
4
|
+
require 'colorize'
|
5
|
+
|
6
|
+
#
|
7
|
+
# This file contains the prettifier module and the CLI support code for this gem
|
8
|
+
# Author: Nayyara Samuel (nayyara.samuel@opower.com)
|
9
|
+
#
|
10
|
+
module Prettify
|
11
|
+
|
12
|
+
module Prettifier
|
13
|
+
def prettify(json)
|
14
|
+
json_map = json.class == String ? JSON.parse(json) : json
|
15
|
+
JSON.pretty_generate(json_map).gsub(/\[\n+\s*\]/, '[]')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class Command < Thor
|
20
|
+
include Prettifier
|
21
|
+
|
22
|
+
desc 'json', 'Formats JSON files on the file system'
|
23
|
+
option :location, aliases: '-l', required: true, desc: 'The desired file/directory containing the JSON files'
|
24
|
+
option :output, aliases: '-o', required: false, desc: 'The desired output file/directory to write to'
|
25
|
+
|
26
|
+
def json
|
27
|
+
_options = options.dup
|
28
|
+
_options['output'] = _options['location'] if !_options['output']
|
29
|
+
|
30
|
+
puts "\nRunning with options:"
|
31
|
+
_options.each do |k, v|
|
32
|
+
puts "\t#{k}: #{v}".yellow
|
33
|
+
end
|
34
|
+
puts ''
|
35
|
+
|
36
|
+
prettify_block = Proc.new do |read_file, write_file|
|
37
|
+
puts "Processing file: #{File.basename(read_file)}".cyan
|
38
|
+
content = File.read(read_file)
|
39
|
+
content = prettify(content)
|
40
|
+
f = File.open(write_file, 'w')
|
41
|
+
f.write(content)
|
42
|
+
f.close
|
43
|
+
end
|
44
|
+
|
45
|
+
location = _options['location']
|
46
|
+
output = _options['output']
|
47
|
+
if File.directory?(location)
|
48
|
+
raise 'Output location must be a directory' unless File.directory?(output)
|
49
|
+
Dir.glob(File.join(location, '*.json')) do |file|
|
50
|
+
prettify_block.call(file, File.join(output, File.basename(file)))
|
51
|
+
end
|
52
|
+
else
|
53
|
+
output = File.directory?(output) ? File.join(output, location) : output
|
54
|
+
prettify_block.call(location, output)
|
55
|
+
end
|
56
|
+
|
57
|
+
puts ''
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
data/prettify.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'prettify/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'prettify'
|
8
|
+
spec.version = Prettify::VERSION
|
9
|
+
spec.authors = ['Nayyara Samuel']
|
10
|
+
spec.email = ['nayyara.samuel@opower.com']
|
11
|
+
spec.description = %q{A gem that prettifies JSON files on your file system}
|
12
|
+
spec.summary = %q{Make your JSON files formatted using this gem's cli}
|
13
|
+
spec.homepage = ''
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
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']
|
20
|
+
|
21
|
+
spec.add_development_dependency 'bundler'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
|
24
|
+
spec.add_dependency 'thor'
|
25
|
+
spec.add_dependency 'json'
|
26
|
+
spec.add_dependency 'colorize'
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: prettify
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nayyara Samuel
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
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: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: thor
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
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: json
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: colorize
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: A gem that prettifies JSON files on your file system
|
84
|
+
email:
|
85
|
+
- nayyara.samuel@opower.com
|
86
|
+
executables:
|
87
|
+
- prettify
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- .gitignore
|
92
|
+
- Gemfile
|
93
|
+
- LICENSE.txt
|
94
|
+
- README.md
|
95
|
+
- Rakefile
|
96
|
+
- bin/prettify
|
97
|
+
- img/formatted_json.png
|
98
|
+
- img/prettify_icon.png
|
99
|
+
- json/test_1.json
|
100
|
+
- json/test_2.json
|
101
|
+
- lib/prettify.rb
|
102
|
+
- lib/prettify/version.rb
|
103
|
+
- prettify.gemspec
|
104
|
+
homepage: ''
|
105
|
+
licenses:
|
106
|
+
- MIT
|
107
|
+
metadata: {}
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options: []
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ! '>='
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ! '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 2.1.3
|
125
|
+
signing_key:
|
126
|
+
specification_version: 4
|
127
|
+
summary: Make your JSON files formatted using this gem's cli
|
128
|
+
test_files: []
|