Class | Kwartz::Ruleset |
In: |
kwartz/node.rb
|
Parent: | Object |
ruleset in presentation logic file
after | [RW] | |
append | [RW] | |
attrs | [RW] | |
before | [RW] | |
cont | [RW] | |
elem | [RW] | |
etag | [RW] | |
logic | [RW] | |
remove | [RW] | |
selectors | [RW] | |
stag | [RW] | |
tagname | [RW] |
# File kwartz/node.rb, line 208 def initialize(selectors) @selectors = selectors # list of string ('#id', '.class', or 'tagname') end
# File kwartz/node.rb, line 359 def _inspect(indent=0) space = ' ' * indent sb = [] sb << space << "- selectors: #{@selectors.inspect}\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 # sb << space << " before:\n" if @before @before.each do |stmt| sb << space << " - " << stmt._inspect() end if @before # sb << space << " after:\n" if @after @after.each do |stmt| sb << space << " - " << stmt._inspect() end if @after # return sb.join end
# File kwartz/node.rb, line 291 def _parse_logic_str(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) 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 return stmt_list end
# File kwartz/node.rb, line 328 def duplicate() ruleset = dup() r = ruleset r.selectors = nil r.attrs = @attrs.dup() if @attrs r.append = @append.dup() if @append r.remove = @remove.dup() if @remove r.logic = @logic.dup() if @logic r.before = @before.dup() if @before r.after = @after.dup() if @after return r end
# File kwartz/node.rb, line 342 def merge(ruleset) r = ruleset r2 = duplicate() r2.stag = r.stag if r.stag r2.etag = r.etag if r.etag r2.cont = r.cont if r.cont (r2.attrs ||= {}).update(r.attrs) if r.attrs r2.append += r.append if r.append r2.remove += r.remove if r.remove r2.tagname = r.tagname if r.tagname r2.logic = r.logic if r.logic r2.before = r.before if r.before r2.after = r.after if r.after return r2 end
# File kwartz/node.rb, line 285 def set_after(logic_str) stmt_list = _parse_logic_str(logic_str) @after = stmt_list end
# File kwartz/node.rb, line 254 def set_append(list, flag_escape=nil) list.each do |expr_str| next if !expr_str || expr_str.empty? @append ||= [] @append << NativeExpression.new(expr_str, flag_escape) end end
# File kwartz/node.rb, line 245 def set_attrs(hash, flag_escape=nil) hash.each do |aname, expr_str| next if !expr_str || expr_str.empty? @attrs ||= {} @attrs[aname] = NativeExpression.new(expr_str, flag_escape) end if hash end
# File kwartz/node.rb, line 279 def set_before(logic_str) stmt_list = _parse_logic_str(logic_str) @before = stmt_list end
# File kwartz/node.rb, line 225 def set_cont(str, flag_escape=nil) @cont = NativeExpression.new(str, flag_escape) end
# File kwartz/node.rb, line 235 def set_elem(str, flag_escape=nil) @elem = NativeExpression.new(str, flag_escape) end
# File kwartz/node.rb, line 230 def set_etag(str, flag_escape=nil) @etag = NativeExpression.new(str, flag_escape) end
# File kwartz/node.rb, line 273 def set_logic(logic_str) stmt_list = _parse_logic_str(logic_str) @logic = stmt_list end
# File kwartz/node.rb, line 220 def set_stag(str, flag_escape=nil) @stag = NativeExpression.new(str, flag_escape) end