topoisomerase 0.1.2 → 0.1.3
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/README.md +43 -0
- data/lib/topoisomerase/{comment_adder.rb → comments.rb} +0 -0
- data/lib/topoisomerase/version.rb +1 -1
- data/lib/topoisomerase.rb +8 -9
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d6fbc0409b85e6fee55102846a9ac377c227aa6
|
4
|
+
data.tar.gz: 544470dcb10e26a5575207c38bbeb1e17b955976
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a2499fe4dd9e2ebb2d406edd7781e325c83f35b1c9e360f7bbd6bcf79c06f6c2654192a853f2a919f31129c4da5265bdabe258abf181d63e307af745fed9fa4
|
7
|
+
data.tar.gz: dbb63522e85182c36dd0f79ff7bc40439348eb81dd35ea4ddd6c7b08362facb41a8caf2b02a97e0527561f2fbc34bd8f3689eee7cd71e10a10a0f1091b3eb30a
|
data/README.md
CHANGED
@@ -34,6 +34,11 @@ Or install it yourself as:
|
|
34
34
|
|
35
35
|
## Usage
|
36
36
|
|
37
|
+
### For one class
|
38
|
+
|
39
|
+
Before creating stubs, make sure that you require all the files that you want to create stubs for.
|
40
|
+
Otherwise it will not create stubs for anything.
|
41
|
+
|
37
42
|
To create a stub file for a class, call the `create_stubs_for` passing that class.
|
38
43
|
|
39
44
|
E.g:
|
@@ -58,6 +63,44 @@ Topoisomerase.create_stubs_for ParameterizedClass do
|
|
58
63
|
end
|
59
64
|
```
|
60
65
|
|
66
|
+
### For classes inheriting from another
|
67
|
+
|
68
|
+
To create stubs for all classes inheriting from a class or module use the `create_stubs_based_on` method.
|
69
|
+
If the instantiation of such objects require parameters pass a parameter in the block to represent each class
|
70
|
+
that is found inheriting from the base class.
|
71
|
+
|
72
|
+
Eg:
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
Topoisomerase.create_stubs_based_on PageObject do |inheriting_class|
|
76
|
+
inheriting_class.new(:config_1, 'config 2')
|
77
|
+
end
|
78
|
+
```
|
79
|
+
|
80
|
+
### Comments
|
81
|
+
|
82
|
+
If comments are used above a `define_method` method then they will be used as comments above the stub generated from it
|
83
|
+
by default.
|
84
|
+
|
85
|
+
Otherwise the `Topoisomerase::Comments` class can be used. The following shows hows to add comments when generating stubs
|
86
|
+
for all classes inheriting from / including the `PageObject` module. It adds
|
87
|
+
|
88
|
+
Eg:
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
#
|
92
|
+
Topoisomerase::Comments.add_for_class PageObject do
|
93
|
+
comment "Set the '<%= method_to_stub.to_s.gsub('?', '') %>' text field",
|
94
|
+
method_name: /=$/, source: /text_field_value_set/
|
95
|
+
end
|
96
|
+
```
|
97
|
+
|
98
|
+
### Notes
|
99
|
+
|
100
|
+
For efficiency and maintainability, it's recommended that the least needed to instantiate the class that will still
|
101
|
+
generate the methods you need be used. However it may be just as easy to reuse the code you use when creating the objects
|
102
|
+
themselves if it is generic enough.
|
103
|
+
|
61
104
|
## Development
|
62
105
|
|
63
106
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
File without changes
|
data/lib/topoisomerase.rb
CHANGED
@@ -2,7 +2,7 @@ require 'topoisomerase/version'
|
|
2
2
|
require 'method_source'
|
3
3
|
require 'fileutils'
|
4
4
|
require 'topoisomerase/core_ext/string'
|
5
|
-
require 'topoisomerase/
|
5
|
+
require 'topoisomerase/comments'
|
6
6
|
|
7
7
|
# Module for parsing and creating stubs for dynamic methods
|
8
8
|
module Topoisomerase
|
@@ -54,7 +54,7 @@ module Topoisomerase
|
|
54
54
|
method_data[:comment].strip.empty? ? '' : "Extracted comment #{method_data[:comment].strip}"
|
55
55
|
end
|
56
56
|
|
57
|
-
# @return [Boolean]
|
57
|
+
# @return [Boolean] Whether there is a match based on value and matcher
|
58
58
|
def match?(value_to_test, matcher_value)
|
59
59
|
value_to_test = value_to_test.to_s
|
60
60
|
case matcher_value
|
@@ -70,6 +70,7 @@ module Topoisomerase
|
|
70
70
|
def comment_for(method_to_stub, method_data)
|
71
71
|
return extracted_comment(method_data) unless comments_added[@inheriting_class]
|
72
72
|
|
73
|
+
method_to_stub = method_to_stub.to_s
|
73
74
|
comments_added[@inheriting_class].each do |comment_matcher|
|
74
75
|
matchers = comment_matcher[:matchers]
|
75
76
|
return ERB.new(comment_matcher[:message]).result(binding) if matchers.all? do |matcher_type, matcher_value|
|
@@ -90,19 +91,17 @@ module Topoisomerase
|
|
90
91
|
def create_stubs_for(class_name, inner_folder = nil)
|
91
92
|
template = File.join(File.dirname(__FILE__), 'topoisomerase', 'stub_template.rb.erb')
|
92
93
|
@class_name = class_name
|
93
|
-
@class_instance =
|
94
|
-
yield
|
95
|
-
else
|
96
|
-
class_name.new
|
97
|
-
end
|
94
|
+
@class_instance = block_given? ? yield(class_name) : class_name.new
|
98
95
|
@dynamic_methods = dynamic_instance_methods(class_name) do
|
99
96
|
@class_instance
|
100
97
|
end
|
101
98
|
class_folder = inner_folder ? File.join(stub_folder, inner_folder) : stub_folder
|
102
|
-
FileUtils.mkdir_p class_folder
|
103
99
|
filename = File.join(class_folder, "#{class_name.to_s.snakecase}.rb")
|
100
|
+
puts "Creating stubs for #{class_name} at #{filename}"
|
101
|
+
FileUtils.mkdir_p File.dirname(filename)
|
104
102
|
IO.write filename, ERB.new(File.read(template)).result(binding)
|
105
|
-
|
103
|
+
require 'rubocop'
|
104
|
+
RuboCop::CLI.new.run(['-a', filename, '-f', 'q', '-o', 'stub_log'])
|
106
105
|
end
|
107
106
|
|
108
107
|
# Create stub files for each class that inherits from passed in class
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: topoisomerase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Garratt
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: method_source
|
@@ -144,7 +144,7 @@ files:
|
|
144
144
|
- bin/setup
|
145
145
|
- exe/topoisomerase
|
146
146
|
- lib/topoisomerase.rb
|
147
|
-
- lib/topoisomerase/
|
147
|
+
- lib/topoisomerase/comments.rb
|
148
148
|
- lib/topoisomerase/core_ext/string.rb
|
149
149
|
- lib/topoisomerase/stub_template.rb.erb
|
150
150
|
- lib/topoisomerase/template/page_object.rb
|