xvert 0.1.1 → 0.3.0

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 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: