Class | Kwartz::ElementRuleset |
In: |
kwartz/node.rb
|
Parent: | Ruleset |
represents ‘name { … }’ entry in presentation logic file
append | [RW] | |
attrs | [RW] | |
cont | [RW] | |
elem | [RW] | |
etag | [RW] | |
logic | [RW] | |
name | [RW] | |
remove | [RW] | |
stag | [RW] | |
tagname | [RW] | |
value | [RW] |
# File 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
# File 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
# File 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
# File 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
# File kwartz/node.rb, line 230 def set_cont(str, escape_flag=nil) @cont = NativeExpression.new(str, escape_flag) end
# File kwartz/node.rb, line 240 def set_elem(str, escape_flag=nil) @elem = NativeExpression.new(str, escape_flag) end
# File kwartz/node.rb, line 235 def set_etag(str, escape_flag=nil) @etag = NativeExpression.new(str, escape_flag) end
# File 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
# File kwartz/node.rb, line 225 def set_stag(str, escape_flag=nil) @stag = NativeExpression.new(str, escape_flag) end