pleme 0.0.1 → 0.0.2
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/pleme.rb +5 -0
- data/lib/pleme/abstract_translator.rb +81 -0
- data/lib/pleme/gem/version.rb +1 -1
- data/lib/pleme/resource_translator.rb +24 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5472c282a2a8354bc9712568465b8eb24636e0eb854a50504c4e659151322f8
|
4
|
+
data.tar.gz: 21f3ec5d0bbf681977b0370e6ef96bb9aa54c6751ecc021aa3c323e56cc6ad36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6d2b88052004a2df5c87bba8129367084ea8caad78885044dd8b5bce7b203489a2402cf6e9a28910c4aa423c0dc8c4ada20a590c3b2834c66a1ebeebfdeb24a
|
7
|
+
data.tar.gz: 0512a7bc7d98c53facc09923df8a9b5ab14e28fb1db9f48a57d04a6add3bc92cca9f68c4bc6a104d95eec0af80c54718749a18eeb3f2be44e6f10aafc8355628
|
data/lib/pleme.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
def add_bury_to_hash
|
4
|
+
Hash.send(:define_method, :bury) do |*args|
|
5
|
+
if args.count < 2
|
6
|
+
raise ArgumentError, '2 or more arguments required'
|
7
|
+
elsif args.count == 2
|
8
|
+
self[args[0]] = args[1]
|
9
|
+
else
|
10
|
+
arg = args.shift
|
11
|
+
self[arg] = {} unless self[arg]
|
12
|
+
self[arg].bury(*args) unless args.empty?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class AbstractTranslation
|
18
|
+
attr_accessor :template,
|
19
|
+
:context,
|
20
|
+
:data,
|
21
|
+
:ancestors
|
22
|
+
def initialize
|
23
|
+
add_bury_to_hash
|
24
|
+
|
25
|
+
@ancestors = []
|
26
|
+
@template = {}
|
27
|
+
@context = nil
|
28
|
+
@data = {}
|
29
|
+
end
|
30
|
+
|
31
|
+
def inspect
|
32
|
+
@template
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class AbstractTranslator
|
37
|
+
def abstract_method_missing(translation, method_name, keys, *args)
|
38
|
+
if translation.context.nil?
|
39
|
+
unless keys.include?(method_name.to_sym) ||
|
40
|
+
keys.include?(method_name.to_s)
|
41
|
+
raise ArgumentError.new(
|
42
|
+
method_name: method_name,
|
43
|
+
keys: keys
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
keys.each do |key|
|
49
|
+
case translation.context
|
50
|
+
when key
|
51
|
+
translation.ancestors.push(method_name)
|
52
|
+
yield if block_given?
|
53
|
+
if args.length == 1
|
54
|
+
translation.template.bury(*translation.ancestors, args[0])
|
55
|
+
translation.ancestors.pop
|
56
|
+
elsif args.empty?
|
57
|
+
translation.ancestors.pop
|
58
|
+
else
|
59
|
+
raise ArgumentError,
|
60
|
+
"field: #{
|
61
|
+
method_name
|
62
|
+
} must have exactly one argument, had #{
|
63
|
+
args.length
|
64
|
+
}, which were #{args}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
next unless [key.to_s, key.to_sym].include?(method_name)
|
68
|
+
|
69
|
+
translation.ancestors.push(method_name.to_sym)
|
70
|
+
translation.ancestors.push(*args)
|
71
|
+
translation.context = method_name.to_sym
|
72
|
+
yield if block_given?
|
73
|
+
translation.ancestors = []
|
74
|
+
translation.context = nil
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def eval_in_context(content)
|
79
|
+
instance_eval(content)
|
80
|
+
end
|
81
|
+
end
|
data/lib/pleme/gem/version.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'pleme/abstract_translator'
|
4
|
+
|
5
|
+
class ResourceTranslation < AbstractTranslation
|
6
|
+
end
|
7
|
+
class ResourceTranslator < AbstractTranslator
|
8
|
+
attr_accessor :translation
|
9
|
+
attr_reader :resource_symbols
|
10
|
+
def initialize
|
11
|
+
@translation = ResourceTranslation.new
|
12
|
+
@resource_symbols = %i[resource]
|
13
|
+
end
|
14
|
+
|
15
|
+
def method_missing(method_name, *args, &block)
|
16
|
+
abstract_method_missing(
|
17
|
+
@translation,
|
18
|
+
method_name,
|
19
|
+
@resource_symbols,
|
20
|
+
*args,
|
21
|
+
&block
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pleme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
@@ -85,7 +85,10 @@ files:
|
|
85
85
|
- Rakefile
|
86
86
|
- dependencies.sh
|
87
87
|
- init.sh
|
88
|
+
- lib/pleme.rb
|
89
|
+
- lib/pleme/abstract_translator.rb
|
88
90
|
- lib/pleme/gem/version.rb
|
91
|
+
- lib/pleme/resource_translator.rb
|
89
92
|
- pkg/ltk-gem-0.0.1.gem
|
90
93
|
- pleme.gemspec
|
91
94
|
- scripts/init.sh
|