lib/atp.rb in atp-0.8.0 vs lib/atp.rb in atp-1.0.0

- old
+ new

@@ -7,29 +7,67 @@ autoload :Processor, 'atp/processor' autoload :Validator, 'atp/validator' autoload :Runner, 'atp/runner' autoload :Formatter, 'atp/formatter' autoload :Parser, 'atp/parser' + autoload :FlowAPI, 'atp/flow_api' module AST autoload :Node, 'atp/ast/node' - autoload :Builder, 'atp/ast/builder' - autoload :Factories, 'atp/ast/factories' autoload :Extractor, 'atp/ast/extractor' + + # This is a shim to help backwards compatibility with ATP v0 + module Builder + class LazyObject < ::BasicObject + def initialize(&callable) + @callable = callable + end + + def __target_object__ + @__target_object__ ||= @callable.call + end + + def method_missing(method_name, *args, &block) + __target_object__.send(method_name, *args, &block) + end + end + + # Some trickery to lazy load this to fire a deprecation warning if an app references it + CONDITION_KEYS ||= LazyObject.new do + Origen.log.deprecate 'ATP::AST::Builder::CONDITION_KEYS is frozen and is no longer maintained, consider switching to ATP::Flow::CONDITION_KEYS.keys for similar functionality' + [:if_enabled, :enabled, :enable_flag, :enable, :if_enable, :unless_enabled, :not_enabled, + :disabled, :disable, :unless_enable, :if_failed, :unless_passed, :failed, :if_passed, + :unless_failed, :passed, :if_ran, :if_executed, :unless_ran, :unless_executed, :job, + :jobs, :if_job, :if_jobs, :unless_job, :unless_jobs, :if_any_failed, :unless_all_passed, + :if_all_failed, :unless_any_passed, :if_any_passed, :unless_all_failed, :if_all_passed, + :unless_any_failed, :if_flag, :unless_flag] + end + end end # Processors actually modify the AST to clean and optimize the user input # and to implement the flow control API module Processors autoload :Condition, 'atp/processors/condition' autoload :Relationship, 'atp/processors/relationship' autoload :PreCleaner, 'atp/processors/pre_cleaner' - autoload :PostCleaner, 'atp/processors/post_cleaner' autoload :Marshal, 'atp/processors/marshal' autoload :AddIDs, 'atp/processors/add_ids' autoload :AddSetResult, 'atp/processors/add_set_result' autoload :FlowID, 'atp/processors/flow_id' + autoload :EmptyBranchRemover, 'atp/processors/empty_branch_remover' + autoload :AppendTo, 'atp/processors/append_to' + autoload :Flattener, 'atp/processors/flattener' + autoload :RedundantConditionRemover, 'atp/processors/redundant_condition_remover' + autoload :ElseRemover, 'atp/processors/else_remover' + autoload :OnPassFailRemover, 'atp/processors/on_pass_fail_remover' + autoload :ApplyPostGroupActions, 'atp/processors/apply_post_group_actions' + autoload :OneFlagPerTest, 'atp/processors/one_flag_per_test' + autoload :FlagOptimizer, 'atp/processors/flag_optimizer' + autoload :AdjacentIfCombiner, 'atp/processors/adjacent_if_combiner' + autoload :ContinueImplementer, 'atp/processors/continue_implementer' + autoload :ExtractSetFlags, 'atp/processors/extract_set_flags' end # Summarizers extract summary data from the given AST module Summarizers end @@ -46,20 +84,13 @@ # Formatters are run on the processed AST to display the flow or to render # it to a different format module Formatters autoload :Basic, 'atp/formatters/basic' autoload :Datalog, 'atp/formatters/datalog' - autoload :Graph, 'atp/formatters/graph' end - def self.or(*args) - OR.new(*args) - end - - def self.and(*args) - AND.new(*args) - end - - def self.not(*args) - NOT.new(*args) + # Maintains a unique ID counter to ensure that all nodes get a unique ID + def self.next_id + @next_id ||= 0 + @next_id += 1 end end