markdown_exec 3.0.2 → 3.0.3
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/CHANGELOG.md +6 -0
- data/Gemfile.lock +1 -1
- data/docs/dev/block-type-ux-allowed.md +1 -1
- data/lib/hash_delegator.rb +4 -1
- data/lib/markdown_exec/version.rb +1 -1
- data/lib/mdoc.rb +34 -16
- data/lib/ww.rb +4 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aca4576a97f3d528e52f331941144d91970a5dd6477d60a6270de464e47475cb
|
4
|
+
data.tar.gz: 2c16498793d375c37d4b07c55500e76b63f1ab9dd37cdbbc83dedbeced288d5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d90b01f7fa224697dc393a70fea22cd3083a200e32f52d9bead14e08d83a45d86d2ed00d5a90995c14401a28b850fb92ca0fb2682e91977671cd393924635ce5
|
7
|
+
data.tar.gz: 7272c814fe69625754c7e6c0dcddd2bd21d602636eb089593080f4f26ae0863cbe2915fcfa470058677420781a8d57f13a7e5f52348bcf280738779238871197
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -8,7 +8,7 @@ name: SPECIES
|
|
8
8
|
/ automatic block loads first line in output of exec
|
9
9
|
```ux :[document_ux_GENUS]
|
10
10
|
allowed: :exec
|
11
|
-
exec:
|
11
|
+
exec: printf "Pongo\nHistiophryne psychedelica"
|
12
12
|
name: GENUS
|
13
13
|
```
|
14
14
|
/ executed block presents a menu of the allowed list
|
data/lib/hash_delegator.rb
CHANGED
@@ -3138,7 +3138,10 @@ module MarkdownExec
|
|
3138
3138
|
opts_block_name)
|
3139
3139
|
return if selected_blocks.empty?
|
3140
3140
|
|
3141
|
-
dependency_map =
|
3141
|
+
dependency_map = selected_blocks.map do |block|
|
3142
|
+
[block.id, block.reqs]
|
3143
|
+
end.to_h
|
3144
|
+
|
3142
3145
|
selected_blocks.each do |block|
|
3143
3146
|
mdoc.collect_dependencies(memo: dependency_map, block: block)
|
3144
3147
|
end
|
data/lib/mdoc.rb
CHANGED
@@ -121,7 +121,7 @@ module MarkdownExec
|
|
121
121
|
|
122
122
|
nickname = name_block.pub_name
|
123
123
|
|
124
|
-
dependencies = collect_dependencies(
|
124
|
+
dependencies = collect_dependencies(pubname: nickname)
|
125
125
|
# !!t dependencies.count
|
126
126
|
all_dependency_names =
|
127
127
|
collect_unique_names(dependencies).push(nickname).uniq
|
@@ -372,6 +372,18 @@ module MarkdownExec
|
|
372
372
|
end.fetch(0, default)
|
373
373
|
end
|
374
374
|
|
375
|
+
# Retrieves code blocks by a name.
|
376
|
+
#
|
377
|
+
# @param name [String] The name of the code block to retrieve.
|
378
|
+
# @param default [Hash] The default value to return if the code block is not found.
|
379
|
+
# @return [Hash] The code block as a hash or the default value if not found.
|
380
|
+
#
|
381
|
+
def get_blocks_by_anyname(name)
|
382
|
+
table_not_split.select do |fcb|
|
383
|
+
fcb.is_named?(name)
|
384
|
+
end
|
385
|
+
end
|
386
|
+
|
375
387
|
# Checks if a code block should be hidden based on the given options.
|
376
388
|
#
|
377
389
|
# @param opts [Hash] The options used for hiding code blocks.
|
@@ -426,13 +438,12 @@ module MarkdownExec
|
|
426
438
|
return memo unless source
|
427
439
|
return memo if memo.keys.include? source
|
428
440
|
|
429
|
-
|
430
|
-
|
431
|
-
if block.nil?
|
441
|
+
blocks = get_blocks_by_anyname(source)
|
442
|
+
if blocks.empty?
|
432
443
|
raise "Named code block `#{source}` not found. (@#{__LINE__})"
|
433
444
|
end
|
434
445
|
|
435
|
-
memo[source] =
|
446
|
+
memo[source] = blocks.map(&:reqs).flatten(1)
|
436
447
|
return memo unless memo[source]&.count&.positive?
|
437
448
|
|
438
449
|
memo[source].each do |req|
|
@@ -447,21 +458,28 @@ module MarkdownExec
|
|
447
458
|
# @param source [String] The name of the initial source block.
|
448
459
|
# @param memo [Hash] A memoization hash to store resolved dependencies.
|
449
460
|
# @return [Hash] A hash mapping sources to their respective dependencies.
|
450
|
-
def collect_dependencies(block: nil, memo: {},
|
461
|
+
def collect_dependencies(block: nil, memo: {}, pubname: nil)
|
451
462
|
if block.nil?
|
452
|
-
return memo unless
|
463
|
+
return memo unless pubname
|
453
464
|
|
454
|
-
|
455
|
-
if
|
456
|
-
raise "Named code block `#{
|
465
|
+
blocks = get_blocks_by_anyname(pubname)
|
466
|
+
if blocks.empty?
|
467
|
+
raise "Named code block `#{pubname}` not found. (@#{__LINE__})"
|
457
468
|
end
|
469
|
+
else
|
470
|
+
blocks = [block]
|
458
471
|
end
|
459
|
-
return memo unless
|
472
|
+
return memo unless blocks.count.positive?
|
473
|
+
|
474
|
+
required_blocks = blocks.map(&:reqs).flatten(1)
|
475
|
+
return memo unless required_blocks.count.positive?
|
460
476
|
|
461
|
-
|
477
|
+
blocks.each do |block|
|
478
|
+
memo[block.id] = required_blocks
|
479
|
+
end
|
462
480
|
|
463
|
-
|
464
|
-
collect_dependencies(
|
481
|
+
required_blocks.each do |req|
|
482
|
+
collect_dependencies(pubname: req, memo: memo)
|
465
483
|
end
|
466
484
|
|
467
485
|
memo
|
@@ -519,7 +537,7 @@ if $PROGRAM_NAME == __FILE__
|
|
519
537
|
### must raise error
|
520
538
|
def test_collect_dependencies_with_nonexistent_source
|
521
539
|
assert_raises(RuntimeError) do
|
522
|
-
@mdoc.collect_dependencies(
|
540
|
+
@mdoc.collect_dependencies(pubname: 'nonexistent')
|
523
541
|
end
|
524
542
|
end if false
|
525
543
|
|
@@ -531,7 +549,7 @@ if $PROGRAM_NAME == __FILE__
|
|
531
549
|
.with('source2').returns(OpenStruct.new(id: 'source2', reqs: []))
|
532
550
|
|
533
551
|
expected = { 'source1' => ['source2'], 'source2' => [] }
|
534
|
-
assert_equal expected, @mdoc.collect_dependencies(
|
552
|
+
assert_equal expected, @mdoc.collect_dependencies(pubname: 'source1')
|
535
553
|
end
|
536
554
|
end
|
537
555
|
|
data/lib/ww.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markdown_exec
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fareed Stevenson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-05-
|
11
|
+
date: 2025-05-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clipboard
|