Class: ReferenceRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/_appscript/referencerenderer.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app_data) ⇒ ReferenceRenderer

Returns a new instance of ReferenceRenderer.



16
17
18
19
# File 'lib/_appscript/referencerenderer.rb', line 16

def initialize(app_data)
  @_app_data = app_data
  @result = ""
end

Instance Attribute Details

#resultObject (readonly)

Returns the value of attribute result.



14
15
16
# File 'lib/_appscript/referencerenderer.rb', line 14

def result
  @result
end

Class Method Details

.render(app_data, aem_reference) ⇒ Object

public



221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/_appscript/referencerenderer.rb', line 221

def ReferenceRenderer.render(app_data, aem_reference)
  # Take an aem reference, e.g.:
  #
  #   app.elements('docu').by_index(1).property('ctxt')
  #
  # and an AppData instance containing application's location and terminology,
  # and render an appscript-style reference string, e.g.:
  #
  #   "AS.app('/Applications/TextEdit.app').documents[1].text"
  #
  # Used by AS::Reference#to_s
  #
  f = new(app_data)
  begin
    aem_reference.AEM_resolve(f)
    return f.result
  rescue
    return "#{new(app_data).app.result}.AS_new_reference(#{aem_reference.inspect})"
  end
end

Instance Method Details

#_format(val) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/_appscript/referencerenderer.rb', line 21

def _format(val)
  if val.is_a?(AEMReference::Query)
    return ReferenceRenderer.render(@_app_data, val)
  else
    return val.inspect
  end
end

#afterObject



125
126
127
128
# File 'lib/_appscript/referencerenderer.rb', line 125

def after
  @result += ".after"
  return self
end

#and(*operands) ⇒ Object



204
205
206
207
# File 'lib/_appscript/referencerenderer.rb', line 204

def and(*operands)
  @result += ".and(#{(operands.map { |val| _format(val) }).join(', ')})"
  return self
end

#anyObject



147
148
149
150
# File 'lib/_appscript/referencerenderer.rb', line 147

def any
  @result += ".any"
  return self
end

#appObject



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/_appscript/referencerenderer.rb', line 86

def app
  case @_app_data.constructor
  when :current
    @result = "app.current"
  when :by_path
    @result = "app(#{@_app_data.identifier.inspect})"
  else
    @result = "app.#{@_app_data.constructor}(#{@_app_data.identifier.inspect})"
  end
  return self
end

#beforeObject



120
121
122
123
# File 'lib/_appscript/referencerenderer.rb', line 120

def before
  @result += ".before"
  return self
end

#beginningObject



110
111
112
113
# File 'lib/_appscript/referencerenderer.rb', line 110

def beginning
  @result += ".beginning"
  return self
end

#begins_with(val) ⇒ Object



184
185
186
187
# File 'lib/_appscript/referencerenderer.rb', line 184

def begins_with(val)
  @result += ".begins_with(#{_format(val)})"
  return self
end

#by_filter(sel) ⇒ Object



63
64
65
66
# File 'lib/_appscript/referencerenderer.rb', line 63

def by_filter(sel)
  @result += "[#{_format(sel)}]"
  return self
end

#by_id(id) ⇒ Object



53
54
55
56
# File 'lib/_appscript/referencerenderer.rb', line 53

def by_id(id)
  @result += ".ID(#{_format(id)})"
  return self
end

#by_index(index) ⇒ Object



48
49
50
51
# File 'lib/_appscript/referencerenderer.rb', line 48

def by_index(index)
  @result += "[#{_format(index)}]"
  return self
end

#by_name(name) ⇒ Object



43
44
45
46
# File 'lib/_appscript/referencerenderer.rb', line 43

def by_name(name)
  @result += "[#{_format(name)}]"
  return self
end

#by_range(sel1, sel2) ⇒ Object



58
59
60
61
# File 'lib/_appscript/referencerenderer.rb', line 58

def by_range(sel1, sel2)
  @result += "[#{_format(sel1)}, #{_format(sel2)}]"
  return self
end

#conObject



98
99
100
101
# File 'lib/_appscript/referencerenderer.rb', line 98

def con
  @result = "con"
  return self
end

#contains(val) ⇒ Object



194
195
196
197
# File 'lib/_appscript/referencerenderer.rb', line 194

def contains(val)
  @result += ".contains(#{_format(val)})"
  return self
end

#custom_root(value) ⇒ Object



80
81
82
83
84
# File 'lib/_appscript/referencerenderer.rb', line 80

def custom_root(value)
  app
  @result += ".AS_new_reference(#{value.inspect})"
  return self
end

#elements(code) ⇒ Object



37
38
39
40
41
# File 'lib/_appscript/referencerenderer.rb', line 37

def elements(code)
  name = @_app_data.reference_by_code.fetch('e'+code) { @_app_data.reference_by_code.fetch('p'+code) }
  @result += ".#{name}"
  return self
end

#endObject



115
116
117
118
# File 'lib/_appscript/referencerenderer.rb', line 115

def end
  @result += ".end"
  return self
end

#ends_with(val) ⇒ Object



189
190
191
192
# File 'lib/_appscript/referencerenderer.rb', line 189

def ends_with(val)
  @result += ".ends_with(#{_format(val)})"
  return self
end

#eq(val) ⇒ Object



164
165
166
167
# File 'lib/_appscript/referencerenderer.rb', line 164

def eq(val)
  @result += ".eq(#{_format(val)})"
  return self
end

#firstObject



132
133
134
135
# File 'lib/_appscript/referencerenderer.rb', line 132

def first
  @result += ".first"
  return self
end

#ge(val) ⇒ Object



159
160
161
162
# File 'lib/_appscript/referencerenderer.rb', line 159

def ge(val)
  @result += ".ge(#{_format(val)})"
  return self
end

#gt(val) ⇒ Object



154
155
156
157
# File 'lib/_appscript/referencerenderer.rb', line 154

def gt(val)
  @result += ".gt(#{_format(val)})"
  return self
end

#is_in(val) ⇒ Object



199
200
201
202
# File 'lib/_appscript/referencerenderer.rb', line 199

def is_in(val)
  @result += ".is_in(#{_format(val)})"
  return self
end

#itsObject



103
104
105
106
# File 'lib/_appscript/referencerenderer.rb', line 103

def its
  @result = "its"
  return self
end

#lastObject



142
143
144
145
# File 'lib/_appscript/referencerenderer.rb', line 142

def last
  @result += ".last"
  return self
end

#le(val) ⇒ Object



179
180
181
182
# File 'lib/_appscript/referencerenderer.rb', line 179

def le(val)
  @result += ".le(#{_format(val)})"
  return self
end

#lt(val) ⇒ Object



174
175
176
177
# File 'lib/_appscript/referencerenderer.rb', line 174

def lt(val)
  @result += ".lt(#{_format(val)})"
  return self
end

#middleObject



137
138
139
140
# File 'lib/_appscript/referencerenderer.rb', line 137

def middle
  @result += ".middle"
  return self
end

#ne(val) ⇒ Object



169
170
171
172
# File 'lib/_appscript/referencerenderer.rb', line 169

def ne(val)
  @result += ".ne(#{_format(val)})"
  return self
end

#next(sel) ⇒ Object



73
74
75
76
# File 'lib/_appscript/referencerenderer.rb', line 73

def next(sel)
  @result += ".next(#{_format(@_app_data.type_by_code[sel])})"
  return self
end

#notObject



214
215
216
217
# File 'lib/_appscript/referencerenderer.rb', line 214

def not
  @result += ".not"
  return self
end

#or(*operands) ⇒ Object



209
210
211
212
# File 'lib/_appscript/referencerenderer.rb', line 209

def or(*operands)
  @result += ".or(#{(operands.map { |val| _format(val) }).join(', ')})"
  return self
end

#previous(sel) ⇒ Object



68
69
70
71
# File 'lib/_appscript/referencerenderer.rb', line 68

def previous(sel)
  @result += ".previous(#{_format(@_app_data.type_by_code[sel])})"
  return self
end

#property(code) ⇒ Object



31
32
33
34
35
# File 'lib/_appscript/referencerenderer.rb', line 31

def property(code)
  name = @_app_data.reference_by_code.fetch('p'+code) { @_app_data.reference_by_code.fetch('e'+code) }
  @result += ".#{name}"
  return self
end