xvert 0.1.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e08b317c06391c961129a015fa498543b7ef3bdf646883eeafb52b4135100c2f
4
- data.tar.gz: 4d27c0bb688bcae0c9934603d2b9a049fbf18e1e3eddd329d2063ccebea20595
3
+ metadata.gz: 2bdccff9925d173e41be9dec926b83ca609a09843245367bf28a3b75fc5993bf
4
+ data.tar.gz: 818797603eca5da9837fcd4ded7dffecfeaecd361b7b5ee408ab86a751bf161a
5
5
  SHA512:
6
- metadata.gz: 1b5af035a6f9e8ef5454380cfb9bfa419fa53d0e3f6926dcf0de70536e504df28731b2aaa6b2140c6964fd0d9878a2a18d5e12222d98d9b8eff9ab647fdd953f
7
- data.tar.gz: 2d4a15ddaa7289b51a478acdd1bd0fb6bf45bde3d08d84a2e959418cd087a6ee647490af0432d4002a030456fccb6fee09cd98383e0611fa0eb29a94311b6082
6
+ metadata.gz: f7dab70151e4d7938c9b043e45967ec16e51a3a9ba54b599c745479570ed151411730abf32328bdd8846ac66edab85b0b4c72fad59253d5544dd0985f18267b2
7
+ data.tar.gz: f4b6510f03956ae5ee8fbb498e6f650e2a8968e3f439cea2e6751d9e5a8f65323a394a14213347987218b4c3a64b76617225480acf61e2e713775d85a2e540e3
data/Gemfile.lock CHANGED
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xvert (0.1.1)
4
+ xvert (0.3.0)
5
5
  json (~> 2.6.0)
6
+ rouge (~> 3.2.0)
6
7
  thor (~> 1.2.0)
7
8
  toml-rb (~> 2.2.0)
8
9
  yaml (~> 0.2.0)
@@ -22,6 +23,7 @@ GEM
22
23
  rake (13.0.6)
23
24
  regexp_parser (2.8.0)
24
25
  rexml (3.2.5)
26
+ rouge (3.2.1)
25
27
  rubocop (1.50.2)
26
28
  json (~> 2.3)
27
29
  parallel (~> 1.10)
data/README.md CHANGED
@@ -16,9 +16,10 @@ $ gem install xvert
16
16
 
17
17
  ## Usage
18
18
 
19
- ```
19
+ ```console
20
20
  $ xvert help
21
21
  Commands:
22
+ xvert --version, -v # Print Xvert version
22
23
  xvert help [COMMAND] # Describe available commands or one specific command
23
24
  xvert jt # Convert JSON to TOML
24
25
  xvert jy # Convert JSON to YAML
@@ -28,6 +29,61 @@ Commands:
28
29
  xvert yt # Convert YAML to TOML
29
30
  ```
30
31
 
32
+ - [JSON to TOML](#json-to-toml)
33
+ - [JSON to YAML](#json-to-yaml)
34
+ - [TOML to JSON](#toml-to-json)
35
+ - [TOML to YAML](#toml-to-yaml)
36
+ - [YAML to JSON](#yaml-to-json)
37
+ - [YAML to TOML](#yaml-to-toml)
38
+
39
+ ### JSON to TOML
40
+
41
+ ```console
42
+ $ xvert jt < foo.json
43
+ ```
44
+
45
+ ![](./assets/jt.gif)
46
+
47
+ ### JSON to YAML
48
+
49
+ ```console
50
+ $ xvert jy < foo.json
51
+ ```
52
+
53
+ ![](./assets/jy.gif)
54
+
55
+ ### TOML to JSON
56
+
57
+ ```console
58
+ $ xvert tj < foo.toml
59
+ ```
60
+
61
+ ![](./assets/tj.gif)
62
+
63
+ ### TOML to YAML
64
+
65
+ ```console
66
+ $ xvert ty < foo.toml
67
+ ```
68
+
69
+ ![](./assets/ty.gif)
70
+
71
+ ### YAML to JSON
72
+
73
+ ```console
74
+ $ xvert yj < foo.yaml
75
+ ```
76
+
77
+ ![](./assets/yj.gif)
78
+
79
+ ### YAML to TOML
80
+
81
+ ```console
82
+ $ xvert yt < foo.yaml
83
+ ```
84
+
85
+ ![](./assets/yt.gif)
86
+
31
87
  ## License
32
88
 
33
89
  [MIT License](./LICENSE.txt)
data/assets/jt.gif ADDED
Binary file
data/assets/jy.gif ADDED
Binary file
data/assets/tj.gif ADDED
Binary file
data/assets/ty.gif ADDED
Binary file
data/assets/yj.gif ADDED
Binary file
data/assets/yt.gif ADDED
Binary file
data/lib/xvert/cli.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "rouge"
3
4
  require "thor"
4
5
 
5
6
  module Xvert
@@ -10,6 +11,13 @@ module Xvert
10
11
  end
11
12
  end
12
13
 
14
+ map %w[-v --version] => :version
15
+
16
+ desc "--version, -v", "Print Xvert version"
17
+ def version
18
+ puts ::Xvert::VERSION
19
+ end
20
+
13
21
  #
14
22
  # JSON => X
15
23
  #
@@ -55,7 +63,27 @@ module Xvert
55
63
  private
56
64
 
57
65
  def run(from:, to:)
58
- puts ::Xvert.convert(input, from: from, to: to)
66
+ text = ::Xvert.convert(input, from: from, to: to).chomp
67
+ puts highlight(text, to)
68
+ end
69
+
70
+ def highlight(text, format)
71
+ return text unless $stdout.isatty
72
+
73
+ formatter(Rouge::Themes::Monokai.new).format(lexer(format).lex(text))
74
+ end
75
+
76
+ def formatter(theme)
77
+ Rouge::Formatters::Terminal256.new(theme)
78
+ end
79
+
80
+ def lexer(format)
81
+ case format
82
+ when :json then Rouge::Lexers::JSON.new
83
+ when :yaml then Rouge::Lexers::YAML.new
84
+ when :toml then Rouge::Lexers::TOML.new
85
+ else raise UnsupportedFormatError, format
86
+ end
59
87
  end
60
88
 
61
89
  def input
data/lib/xvert/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Xvert
4
- VERSION = "0.1.1"
4
+ VERSION = "0.3.0"
5
5
  end
data/lib/xvert.rb CHANGED
@@ -7,19 +7,11 @@ require_relative "xvert/version"
7
7
  require_relative "xvert/cli"
8
8
 
9
9
  module Xvert
10
- TO_OBJECT_MAP = {
11
- json: :json_to_object,
12
- yaml: :yaml_to_object,
13
- toml: :toml_to_object
14
- }.freeze
15
-
16
- TO_TEXT_MAP = {
17
- json: :object_to_json,
18
- yaml: :object_to_yaml,
19
- toml: :object_to_toml
20
- }.freeze
21
-
22
- private_constant :TO_OBJECT_MAP, :TO_TEXT_MAP
10
+ class UnsupportedFormatError < StandardError
11
+ def initialize(format)
12
+ super("Unsupported format: #{format}")
13
+ end
14
+ end
23
15
 
24
16
  class << self
25
17
  def convert(text, from:, to:)
@@ -28,11 +20,21 @@ module Xvert
28
20
  end
29
21
 
30
22
  def to_object(text, format:)
31
- send(TO_OBJECT_MAP[format], text)
23
+ case format
24
+ when :json then json_to_object(text)
25
+ when :yaml then yaml_to_object(text)
26
+ when :toml then toml_to_object(text)
27
+ else raise UnsupportedFormatError, format
28
+ end
32
29
  end
33
30
 
34
31
  def to_text(object, format:)
35
- send(TO_TEXT_MAP[format], object)
32
+ case format
33
+ when :json then object_to_json(object)
34
+ when :yaml then object_to_yaml(object)
35
+ when :toml then object_to_toml(object)
36
+ else raise UnsupportedFormatError, format
37
+ end
36
38
  end
37
39
 
38
40
  private
data/tapes/foo.json ADDED
@@ -0,0 +1 @@
1
+ {"message":"hello world"}
data/tapes/foo.toml ADDED
@@ -0,0 +1 @@
1
+ message = "hello world"
data/tapes/foo.yaml ADDED
@@ -0,0 +1 @@
1
+ message: hello world
data/tapes/jt.tape ADDED
@@ -0,0 +1,21 @@
1
+ Output assets/jt.gif
2
+
3
+ Require xvert
4
+
5
+ Set Shell "bash"
6
+ Set FontSize 32
7
+ Set Width 1200
8
+ Set Height 600
9
+
10
+ Hide
11
+ Type "cd ./tapes" Enter
12
+ Ctrl+l
13
+ Show
14
+
15
+ Type "cat foo.json" Sleep 500ms Enter Sleep 500ms
16
+ Sleep 1s
17
+ Type "clear" Sleep 500ms Enter Sleep 500ms
18
+
19
+ Type "xvert jt < foo.json" Sleep 500ms Enter
20
+
21
+ Sleep 5s
data/tapes/jy.tape ADDED
@@ -0,0 +1,21 @@
1
+ Output assets/jy.gif
2
+
3
+ Require xvert
4
+
5
+ Set Shell "bash"
6
+ Set FontSize 32
7
+ Set Width 1200
8
+ Set Height 600
9
+
10
+ Hide
11
+ Type "cd ./tapes" Enter
12
+ Ctrl+l
13
+ Show
14
+
15
+ Type "cat foo.json" Sleep 500ms Enter Sleep 500ms
16
+ Sleep 1s
17
+ Type "clear" Sleep 500ms Enter Sleep 500ms
18
+
19
+ Type "xvert jy < foo.json" Sleep 500ms Enter
20
+
21
+ Sleep 5s
data/tapes/tj.tape ADDED
@@ -0,0 +1,21 @@
1
+ Output assets/tj.gif
2
+
3
+ Require xvert
4
+
5
+ Set Shell "bash"
6
+ Set FontSize 32
7
+ Set Width 1200
8
+ Set Height 600
9
+
10
+ Hide
11
+ Type "cd ./tapes" Enter
12
+ Ctrl+l
13
+ Show
14
+
15
+ Type "cat foo.toml" Sleep 500ms Enter Sleep 500ms
16
+ Sleep 1s
17
+ Type "clear" Sleep 500ms Enter Sleep 500ms
18
+
19
+ Type "xvert tj < foo.toml" Sleep 500ms Enter
20
+
21
+ Sleep 5s
data/tapes/ty.tape ADDED
@@ -0,0 +1,21 @@
1
+ Output assets/ty.gif
2
+
3
+ Require xvert
4
+
5
+ Set Shell "bash"
6
+ Set FontSize 32
7
+ Set Width 1200
8
+ Set Height 600
9
+
10
+ Hide
11
+ Type "cd ./tapes" Enter
12
+ Ctrl+l
13
+ Show
14
+
15
+ Type "cat foo.toml" Sleep 500ms Enter Sleep 500ms
16
+ Sleep 1s
17
+ Type "clear" Sleep 500ms Enter Sleep 500ms
18
+
19
+ Type "xvert ty < foo.toml" Sleep 500ms Enter
20
+
21
+ Sleep 5s
data/tapes/yj.tape ADDED
@@ -0,0 +1,21 @@
1
+ Output assets/yj.gif
2
+
3
+ Require xvert
4
+
5
+ Set Shell "bash"
6
+ Set FontSize 32
7
+ Set Width 1200
8
+ Set Height 600
9
+
10
+ Hide
11
+ Type "cd ./tapes" Enter
12
+ Ctrl+l
13
+ Show
14
+
15
+ Type "cat foo.yaml" Sleep 500ms Enter Sleep 500ms
16
+ Sleep 1s
17
+ Type "clear" Sleep 500ms Enter Sleep 500ms
18
+
19
+ Type "xvert yj < foo.yaml" Sleep 500ms Enter
20
+
21
+ Sleep 5s
data/tapes/yt.tape ADDED
@@ -0,0 +1,21 @@
1
+ Output assets/yt.gif
2
+
3
+ Require xvert
4
+
5
+ Set Shell "bash"
6
+ Set FontSize 32
7
+ Set Width 1200
8
+ Set Height 600
9
+
10
+ Hide
11
+ Type "cd ./tapes" Enter
12
+ Ctrl+l
13
+ Show
14
+
15
+ Type "cat foo.yaml" Sleep 500ms Enter Sleep 500ms
16
+ Sleep 1s
17
+ Type "clear" Sleep 500ms Enter Sleep 500ms
18
+
19
+ Type "xvert yt < foo.yaml" Sleep 500ms Enter
20
+
21
+ Sleep 5s
data/xvert.gemspec CHANGED
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.require_paths = ["lib"]
27
27
 
28
28
  spec.add_runtime_dependency "json", "~> 2.6.0"
29
+ spec.add_runtime_dependency "rouge", "~> 3.2.0"
29
30
  spec.add_runtime_dependency "thor", "~> 1.2.0"
30
31
  spec.add_runtime_dependency "toml-rb", "~> 2.2.0"
31
32
  spec.add_runtime_dependency "yaml", "~> 0.2.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xvert
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - koki-develop
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.6.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rouge
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.2.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.2.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: thor
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -81,12 +95,27 @@ files:
81
95
  - LICENSE.txt
82
96
  - README.md
83
97
  - Rakefile
98
+ - assets/jt.gif
99
+ - assets/jy.gif
100
+ - assets/tj.gif
101
+ - assets/ty.gif
102
+ - assets/yj.gif
103
+ - assets/yt.gif
84
104
  - bin/xvert
85
105
  - lib/xvert.rb
86
106
  - lib/xvert/cli.rb
87
107
  - lib/xvert/version.rb
88
108
  - renovate.json
89
109
  - sig/xvert.rbs
110
+ - tapes/foo.json
111
+ - tapes/foo.toml
112
+ - tapes/foo.yaml
113
+ - tapes/jt.tape
114
+ - tapes/jy.tape
115
+ - tapes/tj.tape
116
+ - tapes/ty.tape
117
+ - tapes/yj.tape
118
+ - tapes/yt.tape
90
119
  - xvert.gemspec
91
120
  homepage: https://github.com/koki-develop/xvert
92
121
  licenses: