swamp 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.ruby-version +1 -0
- data/Guardfile +33 -0
- data/README.md +24 -10
- data/features/specifications/changing_scope_to_source.feature +16 -0
- data/features/specifications/scope_changing.feature +14 -24
- data/features/specifications/using_prism_scope.feature +100 -0
- data/features/step_definitions/swamp_steps.rb +14 -4
- data/lib/swamp/builders/basic.rb +39 -0
- data/lib/swamp/builders/prism.rb +9 -0
- data/lib/swamp/collections/buttons.rb +28 -0
- data/lib/swamp/{fields.rb → collections/fields.rb} +9 -3
- data/lib/swamp/{input_buttons.rb → collections/input_buttons.rb} +7 -2
- data/lib/swamp/{links.rb → collections/links.rb} +3 -1
- data/lib/swamp/collections/select_boxes.rb +28 -0
- data/lib/swamp/{button.rb → elements/button.rb} +1 -0
- data/lib/swamp/{complex_select_box.rb → elements/complex_select_box.rb} +2 -0
- data/lib/swamp/{element.rb → elements/element.rb} +12 -0
- data/lib/swamp/{field.rb → elements/field.rb} +1 -0
- data/lib/swamp/{input_button.rb → elements/input_button.rb} +1 -0
- data/lib/swamp/{link.rb → elements/link.rb} +1 -0
- data/lib/swamp/{select_box.rb → elements/select_box.rb} +1 -0
- data/lib/swamp/scopes/page.rb +9 -0
- data/lib/swamp/scopes/prism.rb +9 -0
- data/lib/swamp/scopes/scope.rb +13 -0
- data/lib/swamp/scopes/source.rb +9 -0
- data/lib/swamp/setup.rb +7 -3
- data/lib/swamp/version.rb +1 -1
- data/lib/swamp/wrapper.rb +1 -1
- data/lib/swamp.rb +19 -14
- data/spec/swamp/builders/basic_spec.rb +44 -0
- data/spec/swamp/builders/prism_spec.rb +17 -0
- data/spec/swamp/buttons_spec.rb +7 -4
- data/spec/swamp/fields_spec.rb +3 -0
- data/spec/swamp/input_buttons_spec.rb +1 -0
- data/spec/swamp/links_spec.rb +1 -0
- data/spec/swamp/select_boxes_spec.rb +3 -0
- data/spec/swamp/setup_spec.rb +11 -4
- data/swamp.gemspec +12 -10
- metadata +96 -55
- data/lib/swamp/builder.rb +0 -39
- data/lib/swamp/buttons.rb +0 -22
- data/lib/swamp/select_boxes.rb +0 -22
- data/spec/swamp/builder_spec.rb +0 -46
- /data/lib/swamp/{elements.rb → collections/elements.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d75a81ad2f5980818dc56e8a9142268169597d0a
|
4
|
+
data.tar.gz: 762d89066107e05871ef922878edc4127cbb7d26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8487ad90dd5a1a27c3afa5678fbb39884a7517832cb062cc26c06aa4378fa475eedade961a6efa4b4ed48d9abfe5aa710f200fde997675453c783bcf081dae41
|
7
|
+
data.tar.gz: dad587976af09e6837e65dbd0ae6951733839b94f5120ce03416ebe39350bdea58679b3d856de119c4a0615e0c1a8e17a0c0cea1702e14a66804909577b1b7fa
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.1.1
|
data/Guardfile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
# Note: The cmd option is now required due to the increasing number of ways
|
5
|
+
# rspec may be run, below are examples of the most common uses.
|
6
|
+
# * bundler: 'bundle exec rspec'
|
7
|
+
# * bundler binstubs: 'bin/rspec'
|
8
|
+
# * spring: 'bin/rsspec' (This will use spring if running and you have
|
9
|
+
# installed the spring binstubs per the docs)
|
10
|
+
# * zeus: 'zeus rspec' (requires the server to be started separetly)
|
11
|
+
# * 'just' rspec: 'rspec'
|
12
|
+
guard :rspec, cmd: 'bundle exec rspec' do
|
13
|
+
watch(%r{^spec/.+_spec\.rb$})
|
14
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
15
|
+
watch('spec/spec_helper.rb') { "spec" }
|
16
|
+
|
17
|
+
# Rails example
|
18
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
19
|
+
watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
20
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
21
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
22
|
+
watch('config/routes.rb') { "spec/routing" }
|
23
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
24
|
+
watch('spec/rails_helper.rb') { "spec" }
|
25
|
+
|
26
|
+
# Capybara features specs
|
27
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
28
|
+
|
29
|
+
# Turnip features and steps
|
30
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
31
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
32
|
+
end
|
33
|
+
|
data/README.md
CHANGED
@@ -68,8 +68,6 @@ end
|
|
68
68
|
module PageObjects
|
69
69
|
class SignIn
|
70
70
|
|
71
|
-
path ""
|
72
|
-
|
73
71
|
def type_email(input)
|
74
72
|
page.fill_in("Email", with: input)
|
75
73
|
end
|
@@ -108,15 +106,20 @@ When /^I attempt to sign in with valid credentials/ do
|
|
108
106
|
end
|
109
107
|
```
|
110
108
|
|
111
|
-
###
|
109
|
+
### Generating code snippets to use with [SitePrism](https://github.com/natritmeyer/site_prism)
|
110
|
+
|
111
|
+
You can easily change the scope from "page" to "prism" by using the following command:
|
112
|
+
|
113
|
+
```shell
|
114
|
+
:scope = prism
|
115
|
+
```
|
116
|
+
|
117
|
+
then the code snippets will be generated in the SitePrism fromat:
|
118
|
+
|
119
|
+
```shell
|
120
|
+
element :sign_up, 'button', text: 'Sign Up'
|
121
|
+
```
|
112
122
|
|
113
|
-
* You can navigate in the browser that swamp opens
|
114
|
-
* Lets say you need to log in to have access to some page
|
115
|
-
* Just enter the url for this page
|
116
|
-
* Do the login procedure in the oppened browser manually
|
117
|
-
* Wait for the new page to load
|
118
|
-
* Then just go to the terminal and hit ENTER
|
119
|
-
* Swamp will detect the new elements (if any) and will generate the code snippets the same way as before
|
120
123
|
|
121
124
|
### Generating code snippets to use with [capybara-page-object](https://github.com/andyw8/capybara-page-object)
|
122
125
|
|
@@ -134,6 +137,17 @@ then the code snippets will be generated with the "source" scope like this:
|
|
134
137
|
end
|
135
138
|
```
|
136
139
|
|
140
|
+
### Dynamically detecting elements
|
141
|
+
|
142
|
+
You can navigate in the browser that swamp opens. Lets say a page that you want to scan requires login, then just do the following:
|
143
|
+
|
144
|
+
* Enter the url for this page on swamp and wait for the page to load
|
145
|
+
* Do the login procedure in the oppened browser manually
|
146
|
+
* Wait for the new page to load
|
147
|
+
* Then just go to the terminal and hit ENTER
|
148
|
+
* Swamp will detect the new elements (if any) and will generate the code snippets the same way as before
|
149
|
+
|
150
|
+
|
137
151
|
## How it works?
|
138
152
|
|
139
153
|
It uses capybara to fireup the browser and visit the target URL then it looks for patterns like:
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Feature: User chooses the source scope
|
2
|
+
|
3
|
+
As a Swamp user
|
4
|
+
I want to change the scope to "source"
|
5
|
+
So I can have snippets that are compatible with capybara-page-object gem
|
6
|
+
|
7
|
+
Scenario: User changes the scope from page to source
|
8
|
+
Given that swamp is already running
|
9
|
+
When I attempt to execute the command ":scope = source"
|
10
|
+
And I attempt to scan this page: "button.html"
|
11
|
+
Then swamp should output the following code snippet
|
12
|
+
"""
|
13
|
+
def sign_up
|
14
|
+
source.click_button("Sign Up")
|
15
|
+
end
|
16
|
+
"""
|
@@ -1,34 +1,24 @@
|
|
1
1
|
Feature: user changes the scope in the runtime
|
2
2
|
|
3
3
|
As a swamp user
|
4
|
-
I want to change
|
5
|
-
So I can have snippets that are compatible
|
4
|
+
I want to change Swamp's scope
|
5
|
+
So I can have snippets that are compatible me favorite framework
|
6
6
|
|
7
7
|
Scenario Outline: User receives feedback from swamp on command execution
|
8
8
|
Given that swamp is already running
|
9
9
|
When I attempt to execute the command <command>
|
10
10
|
Then I should see <expected>
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
Examples: Happy paths
|
13
|
+
| command | expected |
|
14
|
+
| ":scope = source" | "Option :scope set to source" |
|
15
|
+
| ":scope = page" | "Option :scope set to page" |
|
16
|
+
| ":scope = prism" | "Option :scope set to prism" |
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
Scenario: User changes the scope from page to source
|
26
|
-
Given that swamp is already running
|
27
|
-
When I attempt to execute the command ":scope = source"
|
28
|
-
And I attempt to scan this page: "button.html"
|
29
|
-
Then swamp should output the following code snippet
|
30
|
-
"""
|
31
|
-
def sign_up
|
32
|
-
source.click_button("Sign Up")
|
33
|
-
end
|
34
|
-
"""
|
18
|
+
Examples: Corner cases
|
19
|
+
| command | expected |
|
20
|
+
| ":scope=source" | "Option :scope set to source" |
|
21
|
+
| ":scope = page" | "Option :scope set to page" |
|
22
|
+
| ":scope = " | "Invalid command" |
|
23
|
+
| ":whatever = random" | "Invalid command" |
|
24
|
+
| ": = " | "Invalid command" |
|
@@ -0,0 +1,100 @@
|
|
1
|
+
Feature: User chooses the prism scope
|
2
|
+
|
3
|
+
As a Swamp user
|
4
|
+
I want to change the scope to "prism"
|
5
|
+
So that I have snippets compatible with SitePrism page object
|
6
|
+
|
7
|
+
Background: Swamp is running using prism scope
|
8
|
+
Given that swamp is already running
|
9
|
+
And its using "prism" scope
|
10
|
+
|
11
|
+
Scenario: Scanning a button which has text
|
12
|
+
When swamp scan this page: "button.html"
|
13
|
+
Then it should output the following code snippet
|
14
|
+
"""
|
15
|
+
element :sign_up, 'button', text: 'Sign Up'
|
16
|
+
"""
|
17
|
+
|
18
|
+
Scenario: Scanning a button that doesn't has text but has id
|
19
|
+
When swamp scan this page: "button_without_text.html"
|
20
|
+
Then it should output the following code snippet
|
21
|
+
"""
|
22
|
+
element :search_button, '#search-button'
|
23
|
+
"""
|
24
|
+
|
25
|
+
Scenario: Scanning a button that doesn't has either text or id but has the value attribute
|
26
|
+
When swamp scan this page: "button_without_text_without_id_with_value.html"
|
27
|
+
Then it should output the following code snippet
|
28
|
+
"""
|
29
|
+
element :buy_now, "[value='buy-now']"
|
30
|
+
"""
|
31
|
+
|
32
|
+
Scenario: Scanning an input that has id, name and whose the type is text
|
33
|
+
When swamp scan this page: "field.html"
|
34
|
+
Then it should output the following code snippet
|
35
|
+
"""
|
36
|
+
element :username, '#id_username'
|
37
|
+
"""
|
38
|
+
|
39
|
+
Scenario: Scanning an input that has no name, has id and whose the type is text
|
40
|
+
When swamp scan this page: "field_without_name.html"
|
41
|
+
Then it should output the following code snippet
|
42
|
+
"""
|
43
|
+
element :username, '#username'
|
44
|
+
"""
|
45
|
+
|
46
|
+
Scenario: Scanning an input without the id attribute that has name and the type is text
|
47
|
+
When swamp scan this page: "field_without_id.html"
|
48
|
+
Then it should output the following code snippet
|
49
|
+
"""
|
50
|
+
element :username, 'input[name="username"]'
|
51
|
+
"""
|
52
|
+
|
53
|
+
Scenario: Scanning a submit that has value and id
|
54
|
+
When swamp scan this page: "input_submit.html"
|
55
|
+
Then it should output the following code snippet
|
56
|
+
"""
|
57
|
+
element :log_in, '#u_0_b'
|
58
|
+
"""
|
59
|
+
|
60
|
+
Scenario: Scanning a submit that has no id
|
61
|
+
When swamp scan this page: "input_submit_without_id.html"
|
62
|
+
Then it should output the following code snippet
|
63
|
+
"""
|
64
|
+
element :continue, "input.button.g-button.g-button-submit[value='Continue']"
|
65
|
+
"""
|
66
|
+
Scenario: Scanning a link that has id
|
67
|
+
When swamp scan this page: "link_with_id.html"
|
68
|
+
Then it should output the following code snippet
|
69
|
+
"""
|
70
|
+
element :link_forgot_passwd, '#link-forgot-passwd'
|
71
|
+
"""
|
72
|
+
|
73
|
+
Scenario: Scanning a select box that has id
|
74
|
+
When swamp scan this page: "select_box_with_id.html"
|
75
|
+
Then it should output the following code snippet
|
76
|
+
"""
|
77
|
+
element :month, '#month'
|
78
|
+
"""
|
79
|
+
Scenario: Scanning a select box that has name only
|
80
|
+
When swamp scan this page: "select_box_with_name_only.html"
|
81
|
+
Then it should output the following code snippet
|
82
|
+
"""
|
83
|
+
element :region, "select[name='Region']"
|
84
|
+
"""
|
85
|
+
|
86
|
+
Scenario: Scanning a select box that doesn't has either id or name
|
87
|
+
When swamp scan this page: "select_without_id_and_name.html"
|
88
|
+
Then it should output the following code snippet
|
89
|
+
"""
|
90
|
+
element :provider_select, 'select.provider-select'
|
91
|
+
"""
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
|
@@ -1,15 +1,15 @@
|
|
1
|
-
Given /^swamp is not yet running$/
|
1
|
+
Given /^swamp is not yet running$/ do
|
2
2
|
end
|
3
3
|
|
4
|
-
When /^(?:I start it|that swamp is already running)$/
|
4
|
+
When /^(?:I start it|that swamp is already running)$/ do
|
5
5
|
swamp.run
|
6
6
|
end
|
7
7
|
|
8
|
-
Then /^I should see "(.*?)"$/
|
8
|
+
Then /^I should see "(.*?)"$/ do |outcome|
|
9
9
|
fake_output.messages.should include(outcome)
|
10
10
|
end
|
11
11
|
|
12
|
-
Given /^I enter the url for this page: "(\w+\.html)"$/
|
12
|
+
Given /^I enter the url for this page: "(\w+\.html)"$/ do |page|
|
13
13
|
path = File.join(File.dirname(__FILE__), '../support/page_examples/', page)
|
14
14
|
@url = "file://#{path}"
|
15
15
|
end
|
@@ -69,3 +69,13 @@ end
|
|
69
69
|
When /^I attempt to execute the command "(.*?)"$/ do |command|
|
70
70
|
swamp.setup_command(command)
|
71
71
|
end
|
72
|
+
|
73
|
+
Given(/^its using "(.*?)" scope$/) do |scope|
|
74
|
+
swamp.setup_command(":scope = #{scope}")
|
75
|
+
end
|
76
|
+
|
77
|
+
When(/^swamp scan this page: "(.*?)"$/) do |page|
|
78
|
+
path = File.join(File.dirname(__FILE__), '../support/page_examples/', page)
|
79
|
+
@url = "file://#{path}"
|
80
|
+
swamp.scan(@url)
|
81
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Swamp
|
2
|
+
module Builders
|
3
|
+
class Basic
|
4
|
+
|
5
|
+
def initialize(base)
|
6
|
+
@base = base
|
7
|
+
end
|
8
|
+
|
9
|
+
def build_snippet(element)
|
10
|
+
if element.name
|
11
|
+
[method_definition, element.method_signature, line_break, identation, base, element.accessor, line_break, method_end].join
|
12
|
+
else
|
13
|
+
[base, element.accessor].join
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def method_definition
|
18
|
+
'def '
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def method_end
|
23
|
+
'end'
|
24
|
+
end
|
25
|
+
|
26
|
+
def base
|
27
|
+
[@base, '.'].join
|
28
|
+
end
|
29
|
+
|
30
|
+
def identation
|
31
|
+
' '
|
32
|
+
end
|
33
|
+
|
34
|
+
def line_break
|
35
|
+
"\n"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Swamp
|
2
|
+
class Buttons < Elements
|
3
|
+
def get
|
4
|
+
elements = []
|
5
|
+
page.all('button').map do |element|
|
6
|
+
if element.visible?
|
7
|
+
if has_valid_text?(element)
|
8
|
+
shine %\//button[text()='#{element.text}']\, :xpath
|
9
|
+
button = Swamp::Button.new(element.text, element.text)
|
10
|
+
button.prism_selector = %\'button', text: '#{element.text}'\
|
11
|
+
elements << button
|
12
|
+
elsif has_id?(element) and has_valid_id?(element)
|
13
|
+
shine %/##{element['id']}/
|
14
|
+
button = Swamp::Button.new(element['id'], element['id'])
|
15
|
+
button.prism_selector = "'##{element['id']}'"
|
16
|
+
elements << button
|
17
|
+
elsif has_value?(element) and has_valid_value?(element)
|
18
|
+
shine %/button[value='#{element['value']}']/
|
19
|
+
button = Swamp::Button.new(element['value'], element['value'])
|
20
|
+
button.prism_selector = %\"[value='#{element['value']}']"\
|
21
|
+
elements << button
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
elements
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -6,13 +6,19 @@ module Swamp
|
|
6
6
|
if element.visible? and valid_type?(element)
|
7
7
|
if has_id?(element) and has_name?(element)
|
8
8
|
shine %/##{element['id']}/
|
9
|
-
|
9
|
+
field = Swamp::Field.new(element['name'], element['id'])
|
10
|
+
field.prism_selector = "'##{element['id']}'"
|
11
|
+
elements << field
|
10
12
|
elsif has_id?(element)
|
11
13
|
shine %/##{element['id']}/
|
12
|
-
|
14
|
+
field = Swamp::Field.new(element['id'], element['id'])
|
15
|
+
field.prism_selector = "'##{element['id']}'"
|
16
|
+
elements << field
|
13
17
|
elsif has_name?(element)
|
14
18
|
shine %/input[name=#{element['name']}]/
|
15
|
-
|
19
|
+
field = Swamp::Field.new(element['name'], element['name'])
|
20
|
+
field.prism_selector = %/'input[name="#{element['name']}"]'/
|
21
|
+
elements << field
|
16
22
|
end
|
17
23
|
end
|
18
24
|
end
|
@@ -7,10 +7,15 @@ module Swamp
|
|
7
7
|
if has_value?(element)
|
8
8
|
if has_id?(element)
|
9
9
|
shine %/##{element["id"]}/
|
10
|
-
|
10
|
+
button = Swamp::InputButton.new(element["value"], "##{element["id"]}")
|
11
|
+
button.prism_selector = %\'##{element['id']}'\
|
12
|
+
elements << button
|
11
13
|
elsif has_class?(element)
|
12
14
|
shine %/input.#{formatter.format_class(element["class"])}[value='#{element["value"]}']/
|
13
|
-
|
15
|
+
capybara_selector = "input.#{formatter.format_class(element["class"])}[value='#{element["value"]}']"
|
16
|
+
button = Swamp::InputButton.new(element["value"], capybara_selector)
|
17
|
+
button.prism_selector = %\"#{capybara_selector}"\
|
18
|
+
elements << button
|
14
19
|
end
|
15
20
|
end
|
16
21
|
end
|
@@ -5,7 +5,9 @@ module Swamp
|
|
5
5
|
page.all('a[href][id]').map do | element |
|
6
6
|
if element.visible?
|
7
7
|
shine_link %/##{element["id"]}/
|
8
|
-
|
8
|
+
link = Swamp::Link.new(element["id"], element["id"])
|
9
|
+
link.prism_selector = "'##{element['id']}'"
|
10
|
+
elements << link
|
9
11
|
end
|
10
12
|
end
|
11
13
|
elements
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Swamp
|
2
|
+
class SelectBoxes < Elements
|
3
|
+
def get
|
4
|
+
elements = []
|
5
|
+
page.all('select').map do | element |
|
6
|
+
if element.visible?
|
7
|
+
if has_id?(element)
|
8
|
+
shine %/##{element["id"]}/
|
9
|
+
select_box = Swamp::SelectBox.new(element["id"], element["id"])
|
10
|
+
select_box.prism_selector = "'##{element['id']}'"
|
11
|
+
elements << select_box
|
12
|
+
elsif has_name?(element)
|
13
|
+
shine %/select[name='#{element["name"]}']/
|
14
|
+
select_box = Swamp::SelectBox.new(element["name"], element["name"])
|
15
|
+
select_box.prism_selector = %\"select[name='#{element['name']}']"\
|
16
|
+
elements << select_box
|
17
|
+
else
|
18
|
+
shine %/select.#{element["class"]}/
|
19
|
+
select_box = Swamp::ComplexSelectBox.new(element["class"], element["class"])
|
20
|
+
select_box.prism_selector = %\'select.#{element['class']}'\
|
21
|
+
elements << select_box
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
elements
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -16,6 +16,18 @@ module Swamp
|
|
16
16
|
raise NotImplementedError, "Must be implemented by subtypes"
|
17
17
|
end
|
18
18
|
|
19
|
+
def prism_selector
|
20
|
+
raise NotImplementedError, "Must be implemented by subtypes"
|
21
|
+
end
|
22
|
+
|
23
|
+
def prism_selector=(value)
|
24
|
+
raise NotImplementedError, "Must be implemented by subtypes"
|
25
|
+
end
|
26
|
+
|
27
|
+
def formatted_name
|
28
|
+
format(name)
|
29
|
+
end
|
30
|
+
|
19
31
|
def format(text)
|
20
32
|
Swamp::Formatter.new.format(text)
|
21
33
|
end
|
data/lib/swamp/setup.rb
CHANGED
@@ -3,13 +3,13 @@ module Swamp
|
|
3
3
|
attr_reader :scope
|
4
4
|
|
5
5
|
COMMAND_LIST = {
|
6
|
-
":scope" => ["source", "page"]
|
6
|
+
":scope" => ["source", "page", "prism"]
|
7
7
|
}
|
8
8
|
|
9
9
|
include Swamp::Assertions
|
10
10
|
|
11
11
|
def initialize
|
12
|
-
@scope =
|
12
|
+
@scope = Swamp::Scope.from_value('page')
|
13
13
|
end
|
14
14
|
|
15
15
|
def handle_command(input)
|
@@ -22,11 +22,15 @@ module Swamp
|
|
22
22
|
return ["Invalid command"]
|
23
23
|
end
|
24
24
|
|
25
|
-
@scope = value
|
25
|
+
@scope = Swamp::Scope.from_value(value)
|
26
26
|
|
27
27
|
[success_message]
|
28
28
|
end
|
29
29
|
|
30
|
+
def builder
|
31
|
+
@scope.builder
|
32
|
+
end
|
33
|
+
|
30
34
|
private
|
31
35
|
|
32
36
|
def success_message
|
data/lib/swamp/version.rb
CHANGED
data/lib/swamp/wrapper.rb
CHANGED
@@ -18,7 +18,7 @@ module Swamp
|
|
18
18
|
def scan
|
19
19
|
found_snippets = []
|
20
20
|
@meta_collection.each do | element_collection |
|
21
|
-
found_snippets += element_collection.get.map { | element |
|
21
|
+
found_snippets += element_collection.get.map { | element | @setup.builder.build_snippet(element) }
|
22
22
|
end
|
23
23
|
found_snippets
|
24
24
|
end
|