Class: Kwartz::ElementRuleset

Inherits:
Ruleset
  • Object
show all
Defined in:
lib/kwartz/node.rb

Overview

represents ‘#name { … }’ entry in presentation logic file

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ ElementRuleset

Returns a new instance of ElementRuleset.



216
217
218
# File 'lib/kwartz/node.rb', line 216

def initialize(name)
  @name = name
end

Instance Attribute Details

#appendObject

Returns the value of attribute append.



222
223
224
# File 'lib/kwartz/node.rb', line 222

def append
  @append
end

#attrsObject

Returns the value of attribute attrs.



222
223
224
# File 'lib/kwartz/node.rb', line 222

def attrs
  @attrs
end

#contObject

Returns the value of attribute cont.



221
222
223
# File 'lib/kwartz/node.rb', line 221

def cont
  @cont
end

#elemObject

Returns the value of attribute elem.



221
222
223
# File 'lib/kwartz/node.rb', line 221

def elem
  @elem
end

#etagObject

Returns the value of attribute etag.



221
222
223
# File 'lib/kwartz/node.rb', line 221

def etag
  @etag
end

#logicObject

Returns the value of attribute logic.



222
223
224
# File 'lib/kwartz/node.rb', line 222

def logic
  @logic
end

#nameObject

Returns the value of attribute name.



221
222
223
# File 'lib/kwartz/node.rb', line 221

def name
  @name
end

#removeObject

Returns the value of attribute remove.



222
223
224
# File 'lib/kwartz/node.rb', line 222

def remove
  @remove
end

#stagObject

Returns the value of attribute stag.



221
222
223
# File 'lib/kwartz/node.rb', line 221

def stag
  @stag
end

#tagnameObject

Returns the value of attribute tagname.



222
223
224
# File 'lib/kwartz/node.rb', line 222

def tagname
  @tagname
end

#valueObject

Returns the value of attribute value.



222
223
224
# File 'lib/kwartz/node.rb', line 222

def value
  @value
end

Instance Method Details

#_inspect(indent = 0) ⇒ Object



326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
# File 'lib/kwartz/node.rb', line 326

def _inspect(indent=0)
  space = '  ' * indent
  sb = []
  sb << space <<   "- name: #{@name}\n"
  #sb << space <<   "  value: #{@value == nil ? '' : @value}\n"
  sb << space <<   "  stag: #{@stag.code}\n" unless @stag.nil?
  sb << space <<   "  cont: #{@cont.code}\n" unless @cont.nil?
  sb << space <<   "  etag: #{@etag.code}\n" unless @etag.nil?
  sb << space <<   "  elem: #{@elem.code}\n" unless @elem.nil?
  #
  sb << space <<   "  attrs:\n" if @attrs
  @attrs.keys.sort.each do |key|
    val = @attrs[key]
    sb << space << "    - name:  #{key}\n"
    sb << space << "      value: #{val.code}\n"
  end if @attrs
  #
  sb << space <<   "  append:\n" if @append
  @append.each do |expr|
    sb << space << "    - #{expr.code}\n"
  end if @append
  #
  sb << space <<   "  remove:\n" if @remove
  @remove.each do |name|
    sb << space << "    - #{name}\n"
  end if @remove
  #
  sb << space <<   "  tagname: #{@tagname}\n" unless @tagname.nil?
  #
  sb << space <<   "  logic:\n" if @logic
  @logic.each do |stmt|
    sb << space << "    - " << stmt._inspect()
  end if @logic
  #
  return sb.join
end

#duplicate(name) ⇒ Object



315
316
317
318
319
320
321
322
323
# File 'lib/kwartz/node.rb', line 315

def duplicate(name)
  ruleset = dup()
  ruleset.name   = name
  ruleset.attrs  = @attrs.dup()  if @attrs
  ruleset.append = @append.dup() if @append
  ruleset.remove = @remove.dup() if @remove
  ruleset.logic  = @logic.dup()  if @logic
  return ruleset
end

#set_append(list, escape_flag = nil) ⇒ Object



259
260
261
262
263
264
265
# File 'lib/kwartz/node.rb', line 259

def set_append(list, escape_flag=nil)
  list.each do |expr_str|
    next if !expr_str || expr_str.empty?
    @append ||= []
    @append << NativeExpression.new(expr_str, escape_flag)
  end
end

#set_attrs(hash, escape_flag = nil) ⇒ Object



250
251
252
253
254
255
256
# File 'lib/kwartz/node.rb', line 250

def set_attrs(hash, escape_flag=nil)
  hash.each do |name, expr_str|
    next if !expr_str || expr_str.empty?
    @attrs ||= {}
    @attrs[name] = NativeExpression.new(expr_str, escape_flag)
  end if hash
end

#set_cont(str, escape_flag = nil) ⇒ Object



230
231
232
# File 'lib/kwartz/node.rb', line 230

def set_cont(str, escape_flag=nil)
  @cont = NativeExpression.new(str, escape_flag)
end

#set_elem(str, escape_flag = nil) ⇒ Object



240
241
242
# File 'lib/kwartz/node.rb', line 240

def set_elem(str, escape_flag=nil)
  @elem = NativeExpression.new(str, escape_flag)
end

#set_etag(str, escape_flag = nil) ⇒ Object



235
236
237
# File 'lib/kwartz/node.rb', line 235

def set_etag(str, escape_flag=nil)
  @etag = NativeExpression.new(str, escape_flag)
end

#set_logic(logic_str) ⇒ Object



278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
# File 'lib/kwartz/node.rb', line 278

def set_logic(logic_str)
  return unless logic_str
  stmt_list = []
  logic_str.each_line do |line|
    if line =~ /^\s*_(stag|cont|etag|elem)(?:\(\))?;?\s*(?:\#.*)?$/
      kind = $1
      stmt_list << ExpandStatement.new(kind.intern, @name)
    elsif line =~ /^\s*(_(element|content)([()'"\w\s]*));?\s*(?:\#.*)?$/
      str, kind, arg  = $1, $2, $3
      arg.strip!
      if arg =~ /\A\((.*)\)\z/ then arg = $1 end
      if arg.empty?
        raise parse_error("'#{str}': element name required.", nil)
      end
      case arg
      when /\A"(.*)"\z/  ;  name = $1
      when /\A'(.*)'\z/  ;  name = $1
      when /\A(\w+)\z/   ;  name = $1
      else
        raise parse_error("'#{str}': invalid pattern.", nil)
      end
      unless name =~ /\A\w+\z/
        raise parse_error("'#{name}': invalid #{kind} name.", nil)
      end
      stmt_list << ExpandStatement.new(kind.intern, name)
    #elsif line =~ /^\s*print(?:\s+(\S+)|\((.+)\))\s*;?\s*(?:\#.*)?$/
    elsif line =~ /^\s*print(?:\s+(.*?)|\((.+)\))\s*;?\s*$/
      arg = $1 || $2
      stmt_list << PrintStatement.new([NativeExpression.new(arg)])
    else
      stmt_list << NativeStatement.new(line.chomp, nil)
    end
  end
  @logic = stmt_list
end

#set_remove(list) ⇒ Object



268
269
270
# File 'lib/kwartz/node.rb', line 268

def set_remove(list)
  @remove = list if list
end

#set_stag(str, escape_flag = nil) ⇒ Object



225
226
227
# File 'lib/kwartz/node.rb', line 225

def set_stag(str, escape_flag=nil)
  @stag = NativeExpression.new(str, escape_flag)
end

#set_tagname(str) ⇒ Object



273
274
275
# File 'lib/kwartz/node.rb', line 273

def set_tagname(str)
  @tagname = str if str
end

#set_value(str, escape_flag = nil) ⇒ Object



245
246
247
# File 'lib/kwartz/node.rb', line 245

def set_value(str, escape_flag=nil)
  set_cont(str, escape_flag)
end