card-mod-content 0.11.5 → 0.11.6

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: 20ef16ab1cd68c60cef87aac784c6e59e693653c1dd83824c41836c779241dbc
4
- data.tar.gz: af181919b1be08412e2f1a58e114ee1bd5f58fd115d23fd1f4971b8bbe0b2e40
3
+ metadata.gz: f2291c460c993a049e0a2f34017937f1e3277da3772b417a6b66fcea70cbfc18
4
+ data.tar.gz: c417b2ef2edba1ca4d68358a11e54774f5efd6074b19a2e75531207864083dda
5
5
  SHA512:
6
- metadata.gz: e4a460218fb818da58cfc64fdd5bee8ad0a88901833d03fa2a2bb7291386986dbb9acc0130b8f8a1ad9091ef779cd8d22d9f3537003d1ddc3b07a09a1a0c2c50
7
- data.tar.gz: 6dfa5408e034673b954087356ee7f9c90f2e331c584e7b6761ae559b9571b487267091a4334346d80dc7edb0e13813200387d5108f271dc90b7b84901041f8e4
6
+ metadata.gz: 808f4ab388779bb84ddb82290aaf2aaf86c554e66d77716baf45b4da5a812aa60845ebf0f277fbd19b3db34059aaac8d935e1a845aaf3b0bb0f8c4d5e4c000c5
7
+ data.tar.gz: d22f792f974626167e3f76e6b5c24e5cf2782b7ddfd364e7b9c585cf4186a09d4e0b3b9928d08a42fa9cd79629644196caeaec0720842c9f4c7a7c5d28c52787
@@ -6,22 +6,75 @@ load File.expand_path("reference.rb", __dir__)
6
6
  class Card
7
7
  class Content
8
8
  module Chunk
9
- # extend ActiveSupport::Autoload
10
- # autoload :Reference , "reference"
11
-
12
- class Link < Card::Content::Chunk::Reference
9
+ class Link < Reference
13
10
  CODE = "L".freeze # L for "Link"
14
11
  attr_reader :link_text
15
12
 
16
- # Groups: $1, [$2]: [[$1]] or [[$1|$2]] or $3, $4: [$3][$4]
17
- Card::Content::Chunk.register_class self,
18
- prefix_re: '\\[\\[',
19
- full_re: /\A\[\[([^\]]+)\]\]/,
20
- idx_char: "["
13
+ Chunk.register_class self, prefix_re: '\\[\\[',
14
+ full_re: /\A\[\[([^\]]+)\]\]/,
15
+ idx_char: "["
16
+
21
17
  def reference_code
22
18
  CODE
23
19
  end
24
20
 
21
+ def process_chunk
22
+ @process_chunk ||= render_link
23
+ end
24
+
25
+ def inspect
26
+ "<##{self.class}:e[#{@explicit_link}]n[#{@name}]l[#{@link_text}]" \
27
+ "p[#{@process_chunk}] txt:#{@text}>"
28
+ end
29
+
30
+ # view options
31
+ def options
32
+ link_text ? { title: link_text } : {}
33
+ end
34
+
35
+ def replace_reference old_name, new_name
36
+ replace_name_reference old_name, new_name
37
+ replace_link_text old_name, new_name
38
+ link_text_syntax = "|#{@link_text}" if @link_text.present?
39
+ @text = "[[#{referee_name}#{link_text_syntax}]]"
40
+ end
41
+
42
+ def explicit_link?
43
+ @explicit_link
44
+ end
45
+
46
+ def render_link view: :link, explicit_link_opts: {}
47
+ @link_text = render_obj @link_text
48
+
49
+ if @explicit_link
50
+ render_explicit_link explicit_link_opts
51
+ elsif @name
52
+ render_name_link view
53
+ end
54
+ end
55
+
56
+ def link_target
57
+ if @explicit_link
58
+ render_obj @explicit_link
59
+ elsif @name
60
+ referee_name
61
+ end
62
+ end
63
+
64
+ private
65
+
66
+ def render_explicit_link explicit_link_opts
67
+ @explicit_link = render_obj @explicit_link
68
+ format.link_to_resource @explicit_link, @link_text, explicit_link_opts
69
+ end
70
+
71
+ def render_name_link view
72
+ format.with_nest_mode :normal do
73
+ format.nest referee_name, options.merge(view: view)
74
+ end
75
+ end
76
+
77
+ # interpret a chunk matching
25
78
  def interpret match, _content
26
79
  target, @link_text = target_and_link_text match[1]
27
80
 
@@ -36,9 +89,9 @@ class Card
36
89
  def target_and_link_text raw_syntax
37
90
  return unless raw_syntax
38
91
 
39
- if (i = divider_index raw_syntax) # [[A | B]]
92
+ if (i = divider_index raw_syntax) # if [[A | B]]
40
93
  [raw_syntax[0..(i - 1)], raw_syntax[(i + 1)..-1]] # [A, B]
41
- else # [[ A ]]
94
+ else # else must be [[ A ]]
42
95
  [raw_syntax, nil] # [A, nil]
43
96
  end
44
97
  end
@@ -55,61 +108,21 @@ class Card
55
108
  string_copy.index "|"
56
109
  end
57
110
 
58
- # view options
59
- def options
60
- link_text ? { title: link_text } : {}
61
- end
62
-
111
+ # turn a string into a Content object if it looks like it might have more
112
+ # chunks in it
63
113
  def objectify raw
64
114
  return unless raw
65
115
 
66
116
  raw.strip!
67
117
  if raw.match?(/(^|[^\\])\{\{/)
68
- Card::Content.new raw, format
118
+ Content.new raw, format
69
119
  else
70
120
  raw
71
121
  end
72
122
  end
73
123
 
74
- def render_link view: :link, explicit_link_opts: {}
75
- @link_text = render_obj @link_text
76
-
77
- if @explicit_link
78
- @explicit_link = render_obj @explicit_link
79
- format.link_to_resource @explicit_link, @link_text, explicit_link_opts
80
- elsif @name
81
- format.with_nest_mode :normal do
82
- format.nest referee_name, options.merge(view: view)
83
- end
84
- end
85
- end
86
-
87
- def link_target
88
- if @explicit_link
89
- render_obj @explicit_link
90
- elsif @name
91
- referee_name
92
- end
93
- end
94
-
95
- def process_chunk
96
- @process_chunk ||= render_link
97
- end
98
-
99
- def inspect
100
- "<##{self.class}:e[#{@explicit_link}]n[#{@name}]l[#{@link_text}]" \
101
- "p[#{@process_chunk}] txt:#{@text}>"
102
- end
103
-
104
- def replace_reference old_name, new_name
105
- replace_name_reference old_name, new_name
106
- replace_link_text old_name, new_name
107
- @text =
108
- @link_text.nil? ? "[[#{referee_name}]]" : "[[#{referee_name}|#{@link_text}]]"
109
- end
110
-
111
124
  def replace_link_text old_name, new_name
112
- if @link_text.is_a?(Card::Content)
125
+ if @link_text.is_a?(Content)
113
126
  @link_text.find_chunks(:Reference).each do |chunk|
114
127
  chunk.replace_reference old_name, new_name
115
128
  end
@@ -117,10 +130,6 @@ class Card
117
130
  @link_text = old_name.to_name.sub_in(@link_text, with: new_name)
118
131
  end
119
132
  end
120
-
121
- def explicit_link?
122
- @explicit_link
123
- end
124
133
  end
125
134
  end
126
135
  end
@@ -0,0 +1,20 @@
1
+ def context_card
2
+ @context_card || self
3
+ end
4
+
5
+ def with_context context_card
6
+ old_context = @context_card
7
+ @context_card = context_card if context_card
8
+ yield
9
+ ensure
10
+ @context_card = old_context
11
+ end
12
+
13
+ format do
14
+ delegate :context_card, :with_context, to: :card
15
+
16
+ def contextual_content context_card, options={}
17
+ view = options.delete(:view) || :core
18
+ with_context(context_card) { render! view, options }
19
+ end
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: card-mod-content
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.5
4
+ version: 0.11.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-05-10 00:00:00.000000000 Z
13
+ date: 2021-05-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: card
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 1.101.5
21
+ version: 1.101.6
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 1.101.5
28
+ version: 1.101.6
29
29
  description: ''
30
30
  email:
31
31
  - info@decko.org
@@ -47,6 +47,7 @@ files:
47
47
  - set/abstract/templated_nests.rb
48
48
  - set/abstract/vendor_code_file.rb
49
49
  - set/all/chunk.rb
50
+ - set/all/contextual_content.rb
50
51
  - set/all/templating.rb
51
52
  - set/right/default.rb
52
53
  - set/right/structure.rb