syntropy 0.27.1 → 0.27.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: 8fd5a77712915e9472ed58a8786dce7369e9d24852533c19ce25d9f4959815bf
4
- data.tar.gz: d6420486dc63bb1227b723f14e28e170e6e772f28970a2ce62e2d8283bdcd2b8
3
+ metadata.gz: e80e6b84e9a27a66ceea390152e0a5f78e1e9f09faa2e05f2cf3d3633524d859
4
+ data.tar.gz: 6df75f9834f47adb3cbb2d72d7c725c3630f7d2d90deef7d4667e108a812b572
5
5
  SHA512:
6
- metadata.gz: 5041a3820ed58393b643c7ed298fbdfedf255b9116156a1909d39bf0dfbb842004b38a651c85419d28c5dc2cae9b1c0d5fb13a9e24bbb1ec5340508ffbe7591c
7
- data.tar.gz: d239554ae9e5b8c1b3159cbc0bb13cc828d2b00a4cf376197aaeb7740c57ae49d6419ccb957893bc6a1026d2db273a77f25a2960e6c21d84dad68528bf2ebf97
6
+ metadata.gz: 7b244f6672e0cb10456c7723a7f991566a7d31de4ea3072fe498a13901eebaab558dd7914e12de85f0262e08080a51959c742ef1b7149be7f13d75be56259555
7
+ data.tar.gz: 64824cf03670ab6ff06e12c639011dfe67a3b0d0e32d18daad5aa23df24e8dfaafb2d01e2dced957f7493fdf6dc6fbb0f040959d3ab6c2bc2abea55a0bf0fd7d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.27.2 2025-10-21
2
+
3
+ - Add `Module#collection_module!` method
4
+
1
5
  # 0.27.1 2025-10-21
2
6
 
3
7
  - Fix error instantiation and error testing
@@ -53,9 +53,8 @@ module Syntropy
53
53
  # @return [void]
54
54
  def invalidate_fn(fn)
55
55
  ref = @fn_map[fn]
56
- return if !ref
57
-
58
- invalidate_ref(ref)
56
+ invalidate_ref(ref) if ref
57
+ invalidate_collection_modules
59
58
  end
60
59
 
61
60
  private
@@ -75,6 +74,14 @@ module Syntropy
75
74
  entry[:reverse_deps].each { invalidate_ref(it) }
76
75
  end
77
76
 
77
+ def invalidate_collection_modules
78
+ refs = []
79
+ @modules.each do |ref, entry|
80
+ refs << ref if entry[:module].is_collection_module?
81
+ end
82
+ refs.each { invalidate_ref(it) }
83
+ end
84
+
78
85
  # Registers reverse dependencies for the given module reference.
79
86
  #
80
87
  # @param ref [String] module reference
@@ -102,12 +109,13 @@ module Syntropy
102
109
  @fn_map[fn] = ref
103
110
  code = IO.read(fn)
104
111
  env = @env.merge(module_loader: self, ref: clean_ref(ref))
105
- m = Syntropy::Module.load(env, code, fn)
106
- add_dependencies(ref, m.__dependencies__)
107
- export_value = transform_module_export_value(m.__export_value__)
112
+ mod = Syntropy::Module.load(env, code, fn)
113
+ add_dependencies(ref, mod.__dependencies__)
114
+ export_value = transform_module_export_value(mod.__export_value__)
108
115
 
109
116
  {
110
117
  fn: fn,
118
+ module: mod,
111
119
  export_value: export_value,
112
120
  reverse_deps: []
113
121
  }
@@ -195,6 +203,14 @@ module Syntropy
195
203
  Syntropy.page_list(@env, ref)
196
204
  end
197
205
 
206
+ # Returns true if the module is a collection module. See also
207
+ # #collection_module!
208
+ #
209
+ # @return [bool]
210
+ def is_collection_module?
211
+ @collection_module_p
212
+ end
213
+
198
214
  private
199
215
 
200
216
  # Exports the given value. This value will be used as the module's
@@ -217,6 +233,16 @@ module Syntropy
217
233
  @module_loader.load(ref).tap { __dependencies__ << ref }
218
234
  end
219
235
 
236
+ # Marks module as a collection module. This will cause the module to be
237
+ # invalidated on every file change in dev mode, regardless if it is a
238
+ # dependency.
239
+ #
240
+ # @return [self]
241
+ def collection_module!
242
+ @collection_module_p = true
243
+ self
244
+ end
245
+
220
246
  def normalize_import_ref(ref)
221
247
  base = @ref == '' ? '/' : @ref
222
248
  if ref =~ /^\//
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Syntropy
4
- VERSION = '0.27.1'
4
+ VERSION = '0.27.2'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syntropy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.27.1
4
+ version: 0.27.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner