class IfAction
Conditions/Loops
Public Class Methods
new(obj=nil)
click to toggle source
Calls superclass method
Action::new
# File lib/ruby-macrodroid/actions.rb, line 594 def initialize(obj=nil) $debug = false options = { a: true, constraint_list: [] } puts 'obj: ' + obj.inspect if $debug if obj.is_a? Hash then h = obj macro = h[:macro] h2 = options.merge(filter(options,h).merge(macro: macro)) super(h2) elsif obj.is_a? Array e, macro = obj super() puts 'e.xml: ' + e.xml if $debug puts 'e.text: ' + e.text.to_s.strip if $debug raw_txt = e.text.to_s.strip[/^#{@label}[^$]+/i] || e.text('item/description') puts 'raw_txt: ' + raw_txt.inspect if $debug clause = raw_txt[/^#{@label}(.*)/i,1] puts 'clause: ' + clause.inspect if $debug conditions = clause.split(/\s+\b(?:AND|OR)\b\s+/i) puts 'conditions: ' + conditions.inspect if $debug cp = ConstraintsNlp.new @constraints = conditions.map do |c| puts 'c: ' + c.inspect if $debug r = cp.find_constraint c puts 'found constraint ' + r.inspect if $debug r[0].new(r[1]) if r end puts '@constraints: ' + @constraints.inspect if $debug # find any nested actions item = e.element('item') #puts ('item: ' + item.xml.inspect).debug if $debug if item then ap = ActionsNlp.new obj2 = action_to_object(ap, item, item, macro) puts 'obj2: ' + obj2.inspect if $debug #macro.add obj2 end h = { constraint_list: @constraints.map(&:to_h) } super(h) {} else # get the constraints end end
Public Instance Methods
to_s(colour: false, indent: 0)
click to toggle source
# File lib/ruby-macrodroid/actions.rb, line 662 def to_s(colour: false, indent: 0) h = @h.clone #h.delete :macro @s = @label operator = @h[:is_or_condition] ? 'OR' : 'AND' constraints = @constraints.map \ {|x| ' ' * indent + x.to_summary(colour: colour)}.join(" %s " % operator) out = [] out << "; %s" % @h[:comment] if @h[:comment] s = @s.lines.map {|x| (' ' * indent) + x}.join out << s + constraints out.join("\n") end