Class: CukeModeler::Gherkin4Adapter
- Inherits:
-
Object
- Object
- CukeModeler::Gherkin4Adapter
- Defined in:
- lib/cuke_modeler/adapters/gherkin_4_adapter.rb
Instance Method Summary collapse
- #adapt(parsed_ast) ⇒ Object
- #adapt_background!(parsed_background) ⇒ Object
- #adapt_child_elements!(parsed_children) ⇒ Object
- #adapt_doc_string!(parsed_doc_string) ⇒ Object
- #adapt_example!(parsed_example) ⇒ Object
- #adapt_feature!(parsed_feature) ⇒ Object
- #adapt_outline!(parsed_test) ⇒ Object
- #adapt_scenario!(parsed_test) ⇒ Object
- #adapt_step!(parsed_step) ⇒ Object
- #adapt_step_table!(parsed_step_table) ⇒ Object
- #adapt_table_row!(parsed_table_row) ⇒ Object
- #adapt_tag!(parsed_tag) ⇒ Object
- #adapt_test!(parsed_test) ⇒ Object
- #adapt_tests!(parsed_tests) ⇒ Object
Instance Method Details
#adapt(parsed_ast) ⇒ Object
5 6 7 8 9 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 5 def adapt(parsed_ast) adapt_feature!(parsed_ast[:feature]) if parsed_ast[:feature] [parsed_ast[:feature]].compact end |
#adapt_background!(parsed_background) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 42 def adapt_background!(parsed_background) # Saving off the original data parsed_background['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_background)) parsed_background['keyword'] = parsed_background.delete(:type).to_s parsed_background['name'] = parsed_background.delete(:name) parsed_background['description'] = parsed_background.delete(:description) || '' parsed_background['line'] = parsed_background.delete(:location)[:line] parsed_background['steps'] = [] parsed_background[:steps].each do |step| adapt_step!(step) end parsed_background['steps'].concat(parsed_background.delete(:steps)) end |
#adapt_child_elements!(parsed_children) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 30 def adapt_child_elements!(parsed_children) return if parsed_children.empty? if parsed_children.first[:type] == :Background adapt_background!(parsed_children.first) remaining_children = parsed_children[1..-1] end adapt_tests!(remaining_children || parsed_children) end |
#adapt_doc_string!(parsed_doc_string) ⇒ Object
188 189 190 191 192 193 194 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 188 def adapt_doc_string!(parsed_doc_string) # Saving off the original data parsed_doc_string['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_doc_string)) parsed_doc_string['value'] = parsed_doc_string.delete(:content) parsed_doc_string['content_type'] = parsed_doc_string.delete(:contentType) end |
#adapt_example!(parsed_example) ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 125 def adapt_example!(parsed_example) # Saving off the original data parsed_example['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_example)) parsed_example['name'] = parsed_example.delete(:name) parsed_example['line'] = parsed_example.delete(:location)[:line] parsed_example['description'] = parsed_example.delete(:description) || '' parsed_example['rows'] = [] if parsed_example[:tableHeader] parsed_example['rows'] << adapt_table_row!(parsed_example.delete(:tableHeader)) end if parsed_example[:tableBody] parsed_example[:tableBody].each do |row| adapt_table_row!(row) end parsed_example['rows'].concat(parsed_example.delete(:tableBody)) end parsed_example['tags'] = [] parsed_example[:tags].each do |tag| adapt_tag!(tag) end parsed_example['tags'].concat(parsed_example.delete(:tags)) end |
#adapt_feature!(parsed_feature) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 11 def adapt_feature!(parsed_feature) # Saving off the original data parsed_feature['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_feature)) parsed_feature['name'] = parsed_feature.delete(:name) parsed_feature['description'] = parsed_feature.delete(:description) || '' parsed_feature['line'] = parsed_feature.delete(:location)[:line] parsed_feature['elements'] = [] adapt_child_elements!(parsed_feature[:children]) parsed_feature['elements'].concat(parsed_feature.delete(:children)) parsed_feature['tags'] = [] parsed_feature[:tags].each do |tag| adapt_tag!(tag) end parsed_feature['tags'].concat(parsed_feature.delete(:tags)) end |
#adapt_outline!(parsed_test) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 101 def adapt_outline!(parsed_test) parsed_test['name'] = parsed_test.delete(:name) parsed_test['description'] = parsed_test.delete(:description) || '' parsed_test['line'] = parsed_test.delete(:location)[:line] parsed_test['tags'] = [] parsed_test[:tags].each do |tag| adapt_tag!(tag) end parsed_test['tags'].concat(parsed_test.delete(:tags)) parsed_test['steps'] = [] parsed_test[:steps].each do |step| adapt_step!(step) end parsed_test['steps'].concat(parsed_test.delete(:steps)) parsed_test['examples'] = [] parsed_test[:examples].each do |step| adapt_example!(step) end parsed_test['examples'].concat(parsed_test.delete(:examples)) end |
#adapt_scenario!(parsed_test) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 83 def adapt_scenario!(parsed_test) parsed_test['name'] = parsed_test.delete(:name) parsed_test['description'] = parsed_test.delete(:description) || '' parsed_test['line'] = parsed_test.delete(:location)[:line] parsed_test['tags'] = [] parsed_test[:tags].each do |tag| adapt_tag!(tag) end parsed_test['tags'].concat(parsed_test.delete(:tags)) parsed_test['steps'] = [] parsed_test[:steps].each do |step| adapt_step!(step) end parsed_test['steps'].concat(parsed_test.delete(:steps)) end |
#adapt_step!(parsed_step) ⇒ Object
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 163 def adapt_step!(parsed_step) # Saving off the original data parsed_step['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_step)) parsed_step['keyword'] = parsed_step.delete(:keyword) parsed_step['name'] = parsed_step.delete(:text) parsed_step['line'] = parsed_step.delete(:location)[:line] step_argument = parsed_step[:argument] if step_argument case step_argument[:type] when :DocString adapt_doc_string!(step_argument) parsed_step['doc_string'] = parsed_step.delete(:argument) when :DataTable adapt_step_table!(step_argument) parsed_step['rows'] = parsed_step.delete(:argument) else raise(ArgumentError, "Unknown step argument type: #{step_argument[:type]}") end end end |
#adapt_step_table!(parsed_step_table) ⇒ Object
196 197 198 199 200 201 202 203 204 205 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 196 def adapt_step_table!(parsed_step_table) # Saving off the original data parsed_step_table['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_step_table)) parsed_step_table['rows'] = [] parsed_step_table[:rows].each do |row| adapt_table_row!(row) end parsed_step_table['rows'].concat(parsed_step_table.delete(:rows)) end |
#adapt_table_row!(parsed_table_row) ⇒ Object
207 208 209 210 211 212 213 214 215 216 217 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 207 def adapt_table_row!(parsed_table_row) # Saving off the original data parsed_table_row['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_table_row)) parsed_table_row['line'] = parsed_table_row.delete(:location)[:line] parsed_table_row['cells'] = parsed_table_row.delete(:cells).collect { |cell| cell[:value] } parsed_table_row end |
#adapt_tag!(parsed_tag) ⇒ Object
155 156 157 158 159 160 161 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 155 def adapt_tag!(parsed_tag) # Saving off the original data parsed_tag['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_tag)) parsed_tag['name'] = parsed_tag.delete(:name) parsed_tag['line'] = parsed_tag.delete(:location)[:line] end |
#adapt_test!(parsed_test) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 66 def adapt_test!(parsed_test) # Saving off the original data parsed_test['cuke_modeler_raw_adapter_output'] = Marshal::load(Marshal.dump(parsed_test)) parsed_test['keyword'] = parsed_test.delete(:type).to_s case parsed_test['keyword'] when 'Scenario' adapt_scenario!(parsed_test) when 'ScenarioOutline' parsed_test['keyword'] = 'Scenario Outline' adapt_outline!(parsed_test) else raise(ArgumentError, "Unknown test type: #{parsed_test['keyword']}") end end |
#adapt_tests!(parsed_tests) ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/cuke_modeler/adapters/gherkin_4_adapter.rb', line 58 def adapt_tests!(parsed_tests) return unless parsed_tests parsed_tests.each do |test| adapt_test!(test) end end |