event_news/update_event_news.rb

61 lines
2.2 KiB
Ruby

def add_css_style_for_block(c,head_key,value_key,css_key)
#tmp = []
c_tp = c
flag = false
if !c.include?("{{#{css_key}}}")
c_tp = c.clone()
c.scan(/((?:【| )*{{#{head_key}}}((?:(?!<tr).)*){{#{value_key}}})/m) do |c1|
flag = true
s,e = $~.offset(0)
tag_gs = c1[1].scan(/<(\/)*(\w+)(?:(?!<|>).)*>/)
tag_gs.each do |tag_g|
if tag_g[0]
s = s - c[0...s].reverse.match(/>(?:(?!<|>).)*#{tag_g[1].reverse}</).offset(0)[1]
else
e = c[e..-1].match(/<\/#{tag_g[1]}(?:(?!<|>).)*>/).offset(0)[1] + e
end
end
inner_c = c[s...e]
wrap_tag = c[e..-1].match(/<\/(\w+)(?:(?!<|>).)*>/)
e = wrap_tag.offset(0)[1] + e
s = s - c[0...s].reverse.match(/>(?:(?!<|>).)*#{wrap_tag[1].reverse}</).offset(0)[1]
outer_c = c[s...e]
ext_vars = outer_c.scan(/{{((?:(?!}).)*)}}/).flatten-[head_key,value_key]
#tmp << [outer_c,inner_c,ext_vars]
if ext_vars.length==0
outer_c_new = outer_c.gsub(/(<\w+)((?:(?!>).)*)(>.*)/m) do |m|
v1 = $1
v2 = $2
v3 = $3
have_style_flag = false
v2 = v2.gsub(/(style=(?:\"|\'))((?:(?!\"|\').)*)((?:\"|\'))/) do |m2|
have_style_flag = true
"#{$1}#{$2}{{#{css_key}}}#{$3}"
end
if !have_style_flag
v2 = v2 + " style=\"{{#{css_key}}}\""
end
v1+v2+v3
end
c_tp = c_tp.sub(outer_c,outer_c_new)
else
c_tp = c_tp.sub(inner_c,"<span style=\"{{#{css_key}}}\">#{inner_c}<\/span>")
end
end
end
#[tmp,c_tp]
[flag,c_tp]
end
def update_event_news_template(folder)
Dir["#{folder}modules/event_news_mod/*.html.erb"].each do |f|
c = File.open(f,'r'){|f1| f1.read}.encode("UTF-8", "UTF-8", invalid: :replace, replace: "???")
next if (c.include?("???") rescue true)
flag1,c = add_css_style_for_block(c,'speaker-head','speaker','speaker-css')
flag2,c = add_css_style_for_block(c,'host-head','host','host-css')
flag3,c = add_css_style_for_block(c,'place-head','place','place-css')
if flag1 || flag2 || flag3
puts ['update file:',f]
File.open(f,'w'){|f1| f1.write(c)}
end
end
end