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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81b6394d8396413e433f83d4229a2b0a256418fcfc8664d910f97543a8060c7e
4
- data.tar.gz: 349cb55b7a9d55bd2419ba6b14c218538998ccd2e57ff7de416e6c84ec90062f
3
+ metadata.gz: c5472c282a2a8354bc9712568465b8eb24636e0eb854a50504c4e659151322f8
4
+ data.tar.gz: 21f3ec5d0bbf681977b0370e6ef96bb9aa54c6751ecc021aa3c323e56cc6ad36
5
5
  SHA512:
6
- metadata.gz: d6c25b536e2afdaee47bc628c718bcbc1c83b03295ed54bdc4b013ace8727e5615e7e83b230d6dafc7b638930d43ee834e6fd328d4b465dd927f6390a1a94619
7
- data.tar.gz: db783ee57bce5561c59f7059a8aa90e43bcdc47d2917680b057119a564ac13fc3f0b10a8b7aa9faadddf4f957c19a1cc914d25efb148ba5a786749f635cb9319
6
+ metadata.gz: b6d2b88052004a2df5c87bba8129367084ea8caad78885044dd8b5bce7b203489a2402cf6e9a28910c4aa423c0dc8c4ada20a590c3b2834c66a1ebeebfdeb24a
7
+ data.tar.gz: 0512a7bc7d98c53facc09923df8a9b5ab14e28fb1db9f48a57d04a6add3bc92cca9f68c4bc6a104d95eec0af80c54718749a18eeb3f2be44e6f10aafc8355628
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pleme
4
+ require 'pleme/abstract_translator'
5
+ end
@@ -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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Pleme
4
4
  module Gem
5
- VERSION = '0.0.1'
5
+ VERSION = '0.0.2'
6
6
  end
7
7
  end
@@ -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.1
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