immosquare-yaml 0.1.12 → 0.1.13
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/lib/immosquare-yaml/shared_methods.rb +0 -13
- data/lib/immosquare-yaml/version.rb +1 -1
- data/lib/immosquare-yaml.rb +20 -4
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e9284e5c8a302af2d5c35d6a88ec0bbaea401be34629800f585347a9ad0de22
|
4
|
+
data.tar.gz: f9e2da6ee693fe3e001eaa6ec9d233bca746c805b2eaabacecc9152d4fe7e781
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 523ee5214b2a8bef47ddad6f94c2035cc84eef36d2312a144b07757546f9487d7baeb2c88ecbd0e1558fc3571ec7c868f40518e214fd80b59320bf505c829293
|
7
|
+
data.tar.gz: 980155dbb44f8bba350c060b20d64f3cb0106f2d84d374b7aa6953ace6df467cdbb5db539830e9b93f1762b5d34c69ca28abecc7ba327dc3bb6c011056615439
|
@@ -28,18 +28,5 @@ module ImmosquareYaml
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
32
|
-
##============================================================##
|
33
|
-
## sort_by_key Function
|
34
|
-
## Purpose: Sort a hash by its keys, optionally recursively, with
|
35
|
-
## case-insensitive comparison and stripping of double quotes.
|
36
|
-
## ============================================================ #
|
37
|
-
def sort_by_key(hash, recursive = false, &block)
|
38
|
-
block ||= proc {|a, b| a.to_s.downcase.gsub("\"", "") <=> b.to_s.downcase.gsub("\"", "") }
|
39
|
-
hash.keys.sort(&block).each_with_object({}) do |key, seed|
|
40
|
-
seed[key] = hash[key]
|
41
|
-
seed[key] = sort_by_key(seed[key], true, &block) if recursive && seed[key].is_a?(Hash)
|
42
|
-
end
|
43
|
-
end
|
44
31
|
end
|
45
32
|
end
|
data/lib/immosquare-yaml.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "English"
|
2
|
+
require "immosquare-extensions"
|
2
3
|
require_relative "immosquare-yaml/configuration"
|
3
4
|
require_relative "immosquare-yaml/shared_methods"
|
4
5
|
require_relative "immosquare-yaml/translate"
|
@@ -54,6 +55,7 @@ module ImmosquareYaml
|
|
54
55
|
}.merge(options)
|
55
56
|
|
56
57
|
begin
|
58
|
+
output_file_path = nil
|
57
59
|
raise("File not found") if !File.exist?(file_path)
|
58
60
|
|
59
61
|
##===========================================================================##
|
@@ -73,7 +75,7 @@ module ImmosquareYaml
|
|
73
75
|
##===========================================================================##
|
74
76
|
clean_yml(file_path)
|
75
77
|
parsed_yml = parse(file_path)
|
76
|
-
parsed_yml = sort_by_key(
|
78
|
+
parsed_yml = parsed_yml.sort_by_key(true)
|
77
79
|
parsed_yml = dump(parsed_yml)
|
78
80
|
|
79
81
|
##===========================================================================##
|
@@ -88,7 +90,12 @@ module ImmosquareYaml
|
|
88
90
|
File.write(output_file_path, parsed_yml)
|
89
91
|
true
|
90
92
|
rescue StandardError => e
|
93
|
+
##===========================================================================##
|
94
|
+
## Restore original content if necessary
|
95
|
+
##===========================================================================##
|
96
|
+
File.write(file_path, original_content) if output_file_path != file_path && !original_content.nil?
|
91
97
|
puts(e.message)
|
98
|
+
puts(e.backtrace)
|
92
99
|
false
|
93
100
|
end
|
94
101
|
end
|
@@ -110,6 +117,7 @@ module ImmosquareYaml
|
|
110
117
|
options = {:sort => true}.merge(options)
|
111
118
|
|
112
119
|
begin
|
120
|
+
original_content = nil
|
113
121
|
raise("File not found") if !File.exist?(file_path)
|
114
122
|
|
115
123
|
##===========================================================================##
|
@@ -118,22 +126,30 @@ module ImmosquareYaml
|
|
118
126
|
original_content = File.read(file_path)
|
119
127
|
|
120
128
|
##===========================================================================##
|
121
|
-
## clean
|
129
|
+
## clean the file
|
122
130
|
##===========================================================================##
|
123
131
|
clean_yml(file_path)
|
132
|
+
|
133
|
+
##===========================================================================##
|
134
|
+
## parse the file & sort if necessary
|
135
|
+
##===========================================================================##
|
124
136
|
parsed_xml = parse_xml(file_path)
|
125
|
-
parsed_xml = sort_by_key(
|
137
|
+
parsed_xml = parsed_xml.sort_by_key(true) if options[:sort]
|
126
138
|
|
127
139
|
##===========================================================================##
|
128
140
|
## Restore original content
|
129
141
|
##===========================================================================##
|
130
|
-
File.write(file_path, original_content)
|
142
|
+
File.write(file_path, original_content) if !original_content.nil?
|
131
143
|
|
132
144
|
##===========================================================================##
|
133
145
|
## Return the parsed YAML file
|
134
146
|
##===========================================================================##
|
135
147
|
parsed_xml
|
136
148
|
rescue StandardError => e
|
149
|
+
##===========================================================================##
|
150
|
+
## Restore original content
|
151
|
+
##===========================================================================##
|
152
|
+
File.write(file_path, original_content) if !original_content.nil?
|
137
153
|
puts(e.message)
|
138
154
|
false
|
139
155
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: immosquare-yaml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- IMMO SQUARE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: iso-639
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: immosquare-extensions
|
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'
|
41
55
|
description: IMMOSQUARE-YAML is a specialized Ruby gem tailored primarily for parsing
|
42
56
|
and dumping YML translation files, addressing challenges faced with other parsers
|
43
57
|
like interpreting translation keys as booleans, multi-line strings, and more.
|