Class Kwartz::ElementRuleset
In: kwartz/node.rb
Parent: Ruleset

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

Methods

Attributes

append  [RW] 
attrs  [RW] 
cont  [RW] 
elem  [RW] 
etag  [RW] 
logic  [RW] 
name  [RW] 
remove  [RW] 
stag  [RW] 
tagname  [RW] 
value  [RW] 

Public Class methods

[Source]

# File kwartz/node.rb, line 216
    def initialize(name)
      @name = name
    end

Public Instance methods

[Source]

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

[Source]

# 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

[Source]

# 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

[Source]

# File kwartz/node.rb, line 230
    def set_cont(str, escape_flag=nil)
      @cont = NativeExpression.new(str, escape_flag)
    end

[Source]

# File kwartz/node.rb, line 240
    def set_elem(str, escape_flag=nil)
      @elem = NativeExpression.new(str, escape_flag)
    end

[Source]

# File kwartz/node.rb, line 235
    def set_etag(str, escape_flag=nil)
      @etag = NativeExpression.new(str, escape_flag)
    end

[Source]

# 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

[Source]

# File kwartz/node.rb, line 268
    def set_remove(list)
      @remove = list if list
    end

[Source]

# File kwartz/node.rb, line 225
    def set_stag(str, escape_flag=nil)
      @stag = NativeExpression.new(str, escape_flag)
    end

[Source]

# File kwartz/node.rb, line 273
    def set_tagname(str)
      @tagname = str if str
    end

[Source]

# File kwartz/node.rb, line 245
    def set_value(str, escape_flag=nil)
      set_cont(str, escape_flag)
    end

Protected Instance methods

[Source]

# File kwartz/node.rb, line 356
    def parse_error(message, linenum)
      return ParseError.new(message, linenum, nil)
    end

[Validate]