mumukit-sync 0.1.0 → 0.1.1

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: 26c7c75b632c79a8af3afe1306a0f3b3b79cce1a2d900d0d1719edebef3283a6
4
- data.tar.gz: 4f51621e9f92973ad21ac5f3eb6cd25029c39b89210c786c3f1017db925e3bcd
3
+ metadata.gz: a7a1457a5247f650784ffc17df986bda74d269a00f12ab97e0061a263b91d4a6
4
+ data.tar.gz: 13727e5936569ed91bed1f94aaeb3eb70d4abd9ffc33a3ff44b57f5e67c91bf5
5
5
  SHA512:
6
- metadata.gz: f3abb8f810559b643fa6ea7add76683c197cf6957a89f7d13ca98f65206087d798a459a74825cf96b883919c3e234ba0495b594d3c52098d6a2e0cc5160733ad
7
- data.tar.gz: 18b00a4272b9779bf65e9118765714d555147cfee620944dd403fb935179a8e78e50f5841855823df0eb0b742cd8a8391134cd8e30ef4f6fb1cd7ab877becc62
6
+ metadata.gz: fffc5c4909b2c879054ee8e758f014e1aa20540b3442629c9bf84e719fb3261a914d20282125333b4697ec4d120175cb26e931e525e795b06030b944e6a9800d
7
+ data.tar.gz: 8252258f93539ab08f53a85cd7e2624e524950e2b20394871a5be6ba840f50a6704c1bc6e72b7a33e033205775be5f25a06832b69b9a28c2ebb837754af94562
@@ -6,7 +6,9 @@ module Mumukit::Sync
6
6
  end
7
7
 
8
8
 
9
+ require_relative './store/base'
9
10
  require_relative './store/github'
10
11
  require_relative './store/json'
11
12
  require_relative './store/thesaurus'
13
+ require_relative './store/with_wrapped_language'
12
14
  require_relative './store/bibliotheca'
@@ -0,0 +1,15 @@
1
+ class Mumukit::Sync::Store::Base
2
+ def read_resource(sync_key)
3
+ post_transform sync_key.kind, pre_transform(sync_key.kind, do_read(sync_key)).deep_symbolize_keys
4
+ end
5
+
6
+ private
7
+
8
+ def pre_transform(key, json)
9
+ Mumukit::Sync.constantize(key).whitelist_attributes(json, relations: true)
10
+ end
11
+
12
+ def post_transform(_key, json)
13
+ json
14
+ end
15
+ end
@@ -1,5 +1,7 @@
1
1
  module Mumukit::Sync::Store
2
- class Bibliotheca
2
+ class Bibliotheca < Mumukit::Sync::Store::Base
3
+ include Mumukit::Sync::Store::WithWrappedLanguage
4
+
3
5
  def initialize(bibliotheca_bridge)
4
6
  @bibliotheca_bridge = bibliotheca_bridge
5
7
  end
@@ -12,7 +14,7 @@ module Mumukit::Sync::Store
12
14
  end
13
15
  end
14
16
 
15
- def read_resource(sync_key)
17
+ def do_read(sync_key)
16
18
  @bibliotheca_bridge.send(sync_key.kind, sync_key.id)
17
19
  end
18
20
 
@@ -1,5 +1,5 @@
1
1
  module Mumukit::Sync::Store
2
- class Json
2
+ class Json < Mumukit::Sync::Store::Base
3
3
  def initialize(json)
4
4
  @json = json
5
5
  end
@@ -8,20 +8,12 @@ module Mumukit::Sync::Store
8
8
  raise 'Non-discoverable store'
9
9
  end
10
10
 
11
- def read_resource(sync_key)
12
- post_transform sync_key.kind, pre_transform(sync_key.kind, @json).deep_symbolize_keys
11
+ def do_read(_sync_key)
12
+ @json
13
13
  end
14
14
 
15
15
  def write_resource!(*)
16
16
  raise 'Read-only store'
17
17
  end
18
-
19
- def pre_transform(kind, json)
20
- json
21
- end
22
-
23
- def post_transform(kind, json)
24
- json
25
- end
26
18
  end
27
19
  end
@@ -1,13 +1,14 @@
1
1
  module Mumukit::Sync::Store
2
- class Thesaurus
2
+ class Thesaurus < Mumukit::Sync::Store::Base
3
3
  def initialize(thesaurus_bridge)
4
4
  @thesaurus_bridge = thesaurus_bridge
5
5
  end
6
+
6
7
  def sync_keys
7
8
  @thesaurus_bridge.runners.map { |it| Mumukit::Sync.key(:language, it) }
8
9
  end
9
10
 
10
- def read_resource(sync_key)
11
+ def do_read(sync_key)
11
12
  return unless sync_key.kind == :language
12
13
  Mumukit::Bridge::Runner.new(runner_url).importable_info
13
14
  end
@@ -0,0 +1,16 @@
1
+ module Mumukit::Sync::Store::WithWrappedLanguage
2
+ def post_transform(key, json)
3
+ if key == :guide
4
+ guide = json.dup
5
+ wrap_language! guide
6
+ guide[:exercises].each { |exercise| wrap_language! exercise }
7
+ guide
8
+ else
9
+ json
10
+ end
11
+ end
12
+
13
+ def wrap_language!(hash)
14
+ hash[:language] &&= { name: hash[:language] }
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  module Mumukit
2
2
  module Sync
3
- VERSION = "0.1.0"
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mumukit-sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Franco Bulgarelli
@@ -147,6 +147,7 @@ files:
147
147
  - lib/mumukit/sync/inflator/multiple_choice.rb
148
148
  - lib/mumukit/sync/inflator/single_choice.rb
149
149
  - lib/mumukit/sync/store.rb
150
+ - lib/mumukit/sync/store/base.rb
150
151
  - lib/mumukit/sync/store/bibliotheca.rb
151
152
  - lib/mumukit/sync/store/github.rb
152
153
  - lib/mumukit/sync/store/github/bot.rb
@@ -168,6 +169,7 @@ files:
168
169
  - lib/mumukit/sync/store/github/with_file_reading.rb
169
170
  - lib/mumukit/sync/store/json.rb
170
171
  - lib/mumukit/sync/store/thesaurus.rb
172
+ - lib/mumukit/sync/store/with_wrapped_language.rb
171
173
  - lib/mumukit/sync/syncer.rb
172
174
  - lib/mumukit/sync/version.rb
173
175
  - mumukit-sync.gemspec