module RuWEB::SewMacros
Gets macros
Public Instance Methods
init(macros, cmds: [], in_macro: '', loops: 100)
click to toggle source
# File lib/ruweb/sewmacros.rb, line 8 def init(macros, cmds: [], in_macro: '', loops: 100) @macros = macros @pass = true @els = obtain_els(cmds, in_macro) @loops = loops sew inspect resolve end
Private Instance Methods
inspect()
click to toggle source
# File lib/ruweb/sewmacros.rb, line 35 def inspect @macros.map do |e| @pass = false if @els.join.scan(e[:macro]).any? end end
inspect_loops()
click to toggle source
# File lib/ruweb/sewmacros.rb, line 50 def inspect_loops if @loops <= 0 puts '🕷️ ruweb: [ERROR] too much recursion: check for missing macros or typos in their names or implementations' abort end end
obtain_els(cmds, macro)
click to toggle source
# File lib/ruweb/sewmacros.rb, line 20 def obtain_els(cmds, macro) cmd = [{index: 0, cmd: '', data: "\u005F#{macro}"}] cmds.empty? ? cmd : cmds end
resolve()
click to toggle source
# File lib/ruweb/sewmacros.rb, line 41 def resolve if @pass @els[0][:cmd].empty? ? @els[0][:data] : @els else inspect_loops init(@macros, cmds: @els, loops: @loops - 1) end end
sew()
click to toggle source
# File lib/ruweb/sewmacros.rb, line 25 def sew @macros.map do |m| @els.map! do |e| e.each do |k, v| e[k] = e[k].gsub(/\b#{m[:macro]}\b/, m[:data]) if k == :data end end end end