psychgus 1.3.4 → 1.3.6
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 +4 -4
- data/.yardopts +1 -1
- data/CHANGELOG.md +25 -5
- data/Gemfile +15 -1
- data/README.md +18 -21
- data/Rakefile +4 -41
- data/lib/psychgus/blueberry.rb +2 -6
- data/lib/psychgus/ext/core_ext.rb +5 -6
- data/lib/psychgus/ext/node_ext.rb +1 -5
- data/lib/psychgus/ext/yaml_tree_ext.rb +17 -14
- data/lib/psychgus/stylables.rb +8 -12
- data/lib/psychgus/styled_document_stream.rb +2 -6
- data/lib/psychgus/styled_tree_builder.rb +3 -7
- data/lib/psychgus/styler.rb +1 -8
- data/lib/psychgus/stylers.rb +1 -5
- data/lib/psychgus/super_sniffer/parent.rb +1 -10
- data/lib/psychgus/super_sniffer.rb +1 -8
- data/lib/psychgus/version.rb +3 -4
- data/lib/psychgus.rb +12 -19
- data/psychgus.gemspec +15 -22
- data/test/blueberry_test.rb +58 -60
- data/test/psychgus_test.rb +34 -42
- data/test/sniffer_test.rb +7 -8
- data/test/styler_test.rb +32 -34
- data/test/stylers_test.rb +26 -30
- data/test/{psychgus_tester.rb → test_helper.rb} +8 -18
- metadata +11 -110
- data/lib/psychgus/ext.rb +0 -21
- data/yard/templates/default/layout/html/footer.erb +0 -5
data/test/styler_test.rb
CHANGED
@@ -3,13 +3,39 @@
|
|
3
3
|
|
4
4
|
#--
|
5
5
|
# This file is part of Psychgus.
|
6
|
-
# Copyright (c) 2019
|
6
|
+
# Copyright (c) 2019 Bradley Whited
|
7
7
|
#
|
8
8
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
9
9
|
#++
|
10
10
|
|
11
|
+
require 'test_helper'
|
11
12
|
|
12
|
-
|
13
|
+
class StylerTest < Minitest::Test
|
14
|
+
def setup
|
15
|
+
@styler = MyStyler.new
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_styler
|
19
|
+
expected = TestHelper.lstrip_pipe(<<-YAML)
|
20
|
+
|---
|
21
|
+
|Burgers:
|
22
|
+
| Classic:
|
23
|
+
| Sauce:
|
24
|
+
| - Ketchup
|
25
|
+
| - Mustard
|
26
|
+
| Cheese: American
|
27
|
+
| Bun: Sesame Seed
|
28
|
+
| BBQ: {Sauce: Honey BBQ, Cheese: Cheddar, Bun: Kaiser}
|
29
|
+
| Fancy: {Sauce: Spicy Wasabi, Cheese: Smoked Gouda, Bun: Hawaiian}
|
30
|
+
|Toppings:
|
31
|
+
|- 'Mushrooms'
|
32
|
+
|- [Spinach, Onions, Pickles, Tomatoes]
|
33
|
+
|- [[Ketchup, Mustard], [Salt, Pepper]]
|
34
|
+
YAML
|
35
|
+
|
36
|
+
assert_equal expected,TestHelper::BURGERS_DATA.to_yaml(stylers: @styler)
|
37
|
+
end
|
38
|
+
end
|
13
39
|
|
14
40
|
class MyStyler
|
15
41
|
include Psychgus::Styler
|
@@ -24,15 +50,15 @@ class MyStyler
|
|
24
50
|
parent = sniffer.parent
|
25
51
|
|
26
52
|
if !parent.nil?
|
27
|
-
# BBQ
|
53
|
+
# BBQ.
|
28
54
|
node.style = Psychgus::MAPPING_FLOW if parent.node_of?(:scalar) && parent.value.casecmp('BBQ') == 0
|
29
55
|
|
30
|
-
# Fancy
|
56
|
+
# Fancy.
|
31
57
|
node.style = Psychgus::MAPPING_FLOW if parent.level == 4 && parent.position == 3
|
32
58
|
end
|
33
59
|
end
|
34
60
|
|
35
|
-
def style_scalar(
|
61
|
+
def style_scalar(_sniffer,node)
|
36
62
|
node.style = Psychgus::SCALAR_SINGLE_QUOTED if node.value.casecmp('Mushrooms') == 0
|
37
63
|
node.value = 'Spinach' if node.value.casecmp('Lettuce') == 0
|
38
64
|
end
|
@@ -40,35 +66,7 @@ class MyStyler
|
|
40
66
|
def style_sequence(sniffer,node)
|
41
67
|
node.style = Psychgus::SEQUENCE_FLOW if sniffer.level >= 3
|
42
68
|
|
43
|
-
# Burgers=>Classic=>Sauce and Mushrooms
|
69
|
+
# Burgers => Classic => Sauce and Mushrooms.
|
44
70
|
node.style = Psychgus::SEQUENCE_BLOCK if sniffer.position == 1
|
45
71
|
end
|
46
72
|
end
|
47
|
-
|
48
|
-
class StylerTest < PsychgusTester
|
49
|
-
def setup
|
50
|
-
@styler = MyStyler.new
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_styler
|
54
|
-
expected = <<-YAML
|
55
|
-
|---
|
56
|
-
|Burgers:
|
57
|
-
| Classic:
|
58
|
-
| Sauce:
|
59
|
-
| - Ketchup
|
60
|
-
| - Mustard
|
61
|
-
| Cheese: American
|
62
|
-
| Bun: Sesame Seed
|
63
|
-
| BBQ: {Sauce: Honey BBQ, Cheese: Cheddar, Bun: Kaiser}
|
64
|
-
| Fancy: {Sauce: Spicy Wasabi, Cheese: Smoked Gouda, Bun: Hawaiian}
|
65
|
-
|Toppings:
|
66
|
-
|- 'Mushrooms'
|
67
|
-
|- [Spinach, Onions, Pickles, Tomatoes]
|
68
|
-
|- [[Ketchup, Mustard], [Salt, Pepper]]
|
69
|
-
YAML
|
70
|
-
expected = self.class.lstrip_pipe(expected)
|
71
|
-
|
72
|
-
assert_equal expected,BURGERS_DATA.to_yaml(stylers: @styler)
|
73
|
-
end
|
74
|
-
end
|
data/test/stylers_test.rb
CHANGED
@@ -3,80 +3,76 @@
|
|
3
3
|
|
4
4
|
#--
|
5
5
|
# This file is part of Psychgus.
|
6
|
-
# Copyright (c) 2019
|
6
|
+
# Copyright (c) 2019 Bradley Whited
|
7
7
|
#
|
8
8
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
9
9
|
#++
|
10
10
|
|
11
|
+
require 'test_helper'
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
class EggCarton
|
15
|
-
include Psychgus::Blueberry
|
16
|
-
|
17
|
-
def initialize
|
18
|
-
@eggs = {
|
19
|
-
styles: ['omelette','BBQ eggs','hard-boiled eggs','soft_boiled eggs','fried@eggs'],
|
20
|
-
colors: ['brown','white',['blue','green']]
|
21
|
-
}
|
22
|
-
end
|
23
|
-
|
24
|
-
def psychgus_stylers(sniffer)
|
25
|
-
return Psychgus::FlowStyler.new(4)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
###
|
30
|
-
# @since 1.2.0
|
31
|
-
###
|
32
|
-
class StylersTest < PsychgusTester
|
13
|
+
class StylersTest < Minitest::Test
|
33
14
|
def setup
|
34
15
|
@egg_carton = EggCarton.new
|
35
16
|
end
|
36
17
|
|
37
18
|
def test_capstyler
|
38
19
|
actual = @egg_carton.to_yaml(stylers: Psychgus::CapStyler.new(each_word: false))
|
39
|
-
expected = <<-YAML
|
20
|
+
expected = TestHelper.lstrip_pipe(<<-YAML)
|
40
21
|
|--- !ruby/object:EggCarton
|
41
22
|
|Eggs:
|
42
23
|
| :styles: [Omelette, BBQ eggs, Hard-boiled eggs, Soft_boiled eggs, Fried@eggs]
|
43
24
|
| :colors: [Brown, White, [Blue, Green]]
|
44
25
|
YAML
|
45
26
|
|
46
|
-
assert_equal
|
27
|
+
assert_equal expected,actual
|
47
28
|
|
48
29
|
actual = @egg_carton.to_yaml(stylers: Psychgus::CapStyler.new(new_delim: '+',delim: /[\s_\-@]/))
|
49
|
-
expected = <<-YAML
|
30
|
+
expected = TestHelper.lstrip_pipe(<<-YAML)
|
50
31
|
|--- !ruby/object:EggCarton
|
51
32
|
|Eggs:
|
52
33
|
| :styles: [Omelette, BBQ+Eggs, Hard+Boiled+Eggs, Soft+Boiled+Eggs, Fried+Eggs]
|
53
34
|
| :colors: [Brown, White, [Blue, Green]]
|
54
35
|
YAML
|
55
36
|
|
56
|
-
assert_equal
|
37
|
+
assert_equal expected,actual
|
57
38
|
end
|
58
39
|
|
59
40
|
def test_nosymstyler
|
60
41
|
actual = @egg_carton.to_yaml(stylers: Psychgus::NoSymStyler.new)
|
61
|
-
expected = <<-YAML
|
42
|
+
expected = TestHelper.lstrip_pipe(<<-YAML)
|
62
43
|
|--- !ruby/object:EggCarton
|
63
44
|
|eggs:
|
64
45
|
| Styles: [omelette, BBQ eggs, hard-boiled eggs, soft_boiled eggs, fried@eggs]
|
65
46
|
| Colors: [brown, white, [blue, green]]
|
66
47
|
YAML
|
67
48
|
|
68
|
-
assert_equal
|
49
|
+
assert_equal expected,actual
|
69
50
|
end
|
70
51
|
|
71
52
|
def test_notagstyler
|
72
53
|
actual = @egg_carton.to_yaml(stylers: Psychgus::NoTagStyler.new)
|
73
|
-
expected = <<-YAML
|
54
|
+
expected = TestHelper.lstrip_pipe(<<-YAML)
|
74
55
|
|---
|
75
56
|
|eggs:
|
76
57
|
| :styles: [omelette, BBQ eggs, hard-boiled eggs, soft_boiled eggs, fried@eggs]
|
77
58
|
| :colors: [brown, white, [blue, green]]
|
78
59
|
YAML
|
79
60
|
|
80
|
-
assert_equal
|
61
|
+
assert_equal expected,actual
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class EggCarton
|
66
|
+
include Psychgus::Blueberry
|
67
|
+
|
68
|
+
def initialize
|
69
|
+
@eggs = {
|
70
|
+
styles: ['omelette','BBQ eggs','hard-boiled eggs','soft_boiled eggs','fried@eggs'],
|
71
|
+
colors: ['brown','white',['blue','green']],
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
def psychgus_stylers(_sniffer)
|
76
|
+
return Psychgus::FlowStyler.new(4)
|
81
77
|
end
|
82
78
|
end
|
@@ -3,26 +3,22 @@
|
|
3
3
|
|
4
4
|
#--
|
5
5
|
# This file is part of Psychgus.
|
6
|
-
# Copyright (c) 2019
|
6
|
+
# Copyright (c) 2019 Bradley Whited
|
7
7
|
#
|
8
8
|
# SPDX-License-Identifier: LGPL-3.0-or-later
|
9
9
|
#++
|
10
10
|
|
11
|
-
|
12
11
|
require 'minitest/autorun'
|
13
12
|
|
14
13
|
require 'psychgus'
|
15
14
|
|
16
|
-
# Changing the YAML/data will break tests
|
17
|
-
|
18
|
-
#
|
19
|
-
# -
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
# rake test_all
|
24
|
-
TEST_ALL = (ENV['PSYCHGUS_TEST'].to_s.strip.casecmp('all') == 0)
|
25
|
-
TEST_ALL_SKIP_MSG = 'Execute "rake test_all" for this test'
|
15
|
+
# NOTE: Changing the YAML/data will break tests
|
16
|
+
module TestHelper
|
17
|
+
# This is for `<<-` heredoc.
|
18
|
+
# - Purposely not using `<<~` (tilde) for older Ruby versions.
|
19
|
+
def self.lstrip_pipe(str)
|
20
|
+
return str.gsub(/^\s*\|/,'')
|
21
|
+
end
|
26
22
|
|
27
23
|
BURGERS_YAML = <<-YAML
|
28
24
|
Burgers:
|
@@ -73,10 +69,4 @@ Popular:
|
|
73
69
|
# Don't do 'aliases: true' because that doesn't exist
|
74
70
|
# in older versions of Psych.
|
75
71
|
DOLPHINS_DATA = Psych.unsafe_load(DOLPHINS_YAML).freeze
|
76
|
-
|
77
|
-
# This is for "<<-" heredoc
|
78
|
-
# - Purposely not using "<<~" (tilde) for older Ruby versions
|
79
|
-
def self.lstrip_pipe(str)
|
80
|
-
return str.gsub(/^\s*\|/,'')
|
81
|
-
end
|
82
72
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: psychgus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
autorequire:
|
7
|
+
- Bradley Whited
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: psych
|
@@ -24,104 +24,6 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.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: '2.2'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '2.2'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: minitest
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '5.14'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '5.14'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rake
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '13.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '13.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rdoc
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '6.3'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '6.3'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: redcarpet
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '3.5'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '3.5'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: yard
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0.9'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.9'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: yard_ghurt
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '1.2'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '1.2'
|
125
27
|
description: Easily style YAML files using Psych, like Sequence/Mapping Flow style.
|
126
28
|
email:
|
127
29
|
- code@esotericpig.com
|
@@ -137,7 +39,6 @@ files:
|
|
137
39
|
- Rakefile
|
138
40
|
- lib/psychgus.rb
|
139
41
|
- lib/psychgus/blueberry.rb
|
140
|
-
- lib/psychgus/ext.rb
|
141
42
|
- lib/psychgus/ext/core_ext.rb
|
142
43
|
- lib/psychgus/ext/node_ext.rb
|
143
44
|
- lib/psychgus/ext/yaml_tree_ext.rb
|
@@ -152,21 +53,21 @@ files:
|
|
152
53
|
- psychgus.gemspec
|
153
54
|
- test/blueberry_test.rb
|
154
55
|
- test/psychgus_test.rb
|
155
|
-
- test/psychgus_tester.rb
|
156
56
|
- test/sniffer_test.rb
|
157
57
|
- test/styler_test.rb
|
158
58
|
- test/stylers_test.rb
|
159
|
-
-
|
59
|
+
- test/test_helper.rb
|
160
60
|
homepage: https://github.com/esotericpig/psychgus
|
161
61
|
licenses:
|
162
62
|
- LGPL-3.0-or-later
|
163
63
|
metadata:
|
64
|
+
rubygems_mfa_required: 'true'
|
164
65
|
homepage_uri: https://github.com/esotericpig/psychgus
|
165
66
|
source_code_uri: https://github.com/esotericpig/psychgus
|
166
67
|
bug_tracker_uri: https://github.com/esotericpig/psychgus/issues
|
167
|
-
changelog_uri: https://github.com/esotericpig/psychgus/blob/
|
68
|
+
changelog_uri: https://github.com/esotericpig/psychgus/blob/main/CHANGELOG.md
|
168
69
|
documentation_uri: https://esotericpig.github.io/docs/psychgus/yardoc/index.html
|
169
|
-
post_install_message:
|
70
|
+
post_install_message:
|
170
71
|
rdoc_options: []
|
171
72
|
require_paths:
|
172
73
|
- lib
|
@@ -174,15 +75,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
174
75
|
requirements:
|
175
76
|
- - ">="
|
176
77
|
- !ruby/object:Gem::Version
|
177
|
-
version: 2.
|
78
|
+
version: '2.2'
|
178
79
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
80
|
requirements:
|
180
81
|
- - ">="
|
181
82
|
- !ruby/object:Gem::Version
|
182
83
|
version: '0'
|
183
84
|
requirements: []
|
184
|
-
rubygems_version: 3.
|
185
|
-
signing_key:
|
85
|
+
rubygems_version: 3.5.21
|
86
|
+
signing_key:
|
186
87
|
specification_version: 4
|
187
88
|
summary: Easily style YAML files using Psych.
|
188
89
|
test_files: []
|
data/lib/psychgus/ext.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
#--
|
5
|
-
# This file is part of Psychgus.
|
6
|
-
# Copyright (c) 2019-2021 Jonathan Bradley Whited
|
7
|
-
#
|
8
|
-
# SPDX-License-Identifier: LGPL-3.0-or-later
|
9
|
-
#++
|
10
|
-
|
11
|
-
|
12
|
-
module Psychgus
|
13
|
-
###
|
14
|
-
# Contains all of the extensions (monkey patching) to core/Psych classes/modules.
|
15
|
-
#
|
16
|
-
# @author Jonathan Bradley Whited
|
17
|
-
# @since 1.0.0
|
18
|
-
###
|
19
|
-
module Ext
|
20
|
-
end
|
21
|
-
end
|