SpecMe 0.0.1.pre3 → 0.0.1
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/lib/spec_me.rb +12 -3
- data/lib/spec_me/renderer.rb +14 -5
- data/lib/spec_me/version.rb +1 -1
- 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: 6feeb4ec8f1646fd0348b2a9e370c1816483391d
|
4
|
+
data.tar.gz: 3bb19d98bd11bc9354136f3678e238e2fe6779f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04202fe805bac5d6d87b1a394b91c50fbb54a69b0666a4199a7f420afe5dfaa0cc77c2df25b3f503ae858e199f3dccae23c8d1c62dd289d41d0e1e5c3a42da76
|
7
|
+
data.tar.gz: 5f7bea2dfb0a026fa7e5bf878bae3694583109ed1ab17c2a37056f0924128d68c7cc6965da2b89f9c9468e930043c0f36e6e0bee3752ee9bc89301ecaa78941e
|
data/lib/spec_me.rb
CHANGED
@@ -38,7 +38,7 @@ class SpecMe
|
|
38
38
|
lines.each do | line |
|
39
39
|
state_machine line.chomp
|
40
40
|
end
|
41
|
-
post_parse
|
41
|
+
# post_parse
|
42
42
|
end
|
43
43
|
|
44
44
|
def parse_line line
|
@@ -54,9 +54,16 @@ class SpecMe
|
|
54
54
|
|
55
55
|
def post_parse
|
56
56
|
# No need to create specs if there are no expectations
|
57
|
-
self.ast = [] unless ast.any?{ |node| %r{_xp\z} === node.first }
|
58
57
|
end
|
58
|
+
|
59
59
|
private
|
60
|
+
def add_block_to_ast
|
61
|
+
self.ast << []
|
62
|
+
end
|
63
|
+
|
64
|
+
def clean_last_node
|
65
|
+
ast.pop unless ast.last.any?{ |node| %r{_xp\z} === node.first }
|
66
|
+
end
|
60
67
|
|
61
68
|
def state_machine line
|
62
69
|
case @state
|
@@ -64,11 +71,13 @@ class SpecMe
|
|
64
71
|
# update_config_from line if config.instruction_line === line
|
65
72
|
return unless config.start_code_block === line
|
66
73
|
@state = :inside
|
74
|
+
add_block_to_ast
|
67
75
|
when :inside
|
68
76
|
if config.end_code_block === line
|
69
77
|
@state = :outside
|
78
|
+
clean_last_node
|
70
79
|
else
|
71
|
-
|
80
|
+
ast.last << parse_line( line )
|
72
81
|
end
|
73
82
|
end
|
74
83
|
end
|
data/lib/spec_me/renderer.rb
CHANGED
@@ -6,10 +6,19 @@ class SpecMe
|
|
6
6
|
(
|
7
7
|
spec_helper_lines(spec_helper) +
|
8
8
|
description( file_name: file_name, count: count, **params ) +
|
9
|
+
ast.each_with_index.map do | block_node, idx |
|
10
|
+
render_one( block_node, count: count + idx, **params )
|
11
|
+
end +
|
12
|
+
end_lines( 1 )
|
13
|
+
).flatten
|
14
|
+
end
|
15
|
+
|
16
|
+
def render_one( block_node, count:1, **params)
|
17
|
+
(
|
9
18
|
example( count: count ) +
|
10
|
-
code(
|
11
|
-
end_lines(
|
12
|
-
)
|
19
|
+
code(block_node) +
|
20
|
+
end_lines(1, 1)
|
21
|
+
)# .tap{ |r| puts r }
|
13
22
|
end
|
14
23
|
|
15
24
|
def code(ast)
|
@@ -22,9 +31,9 @@ class SpecMe
|
|
22
31
|
[%{describe '#{example_group_name}', :#{rspec_tag} do}] #.tap{|r| p description: r}
|
23
32
|
end
|
24
33
|
|
25
|
-
def end_lines n
|
34
|
+
def end_lines n, indent=0
|
26
35
|
n.times.map{ |i|
|
27
|
-
' ' * (n-i.succ) + 'end'
|
36
|
+
' ' * (n-i.succ+indent) + 'end'
|
28
37
|
}
|
29
38
|
end
|
30
39
|
|
data/lib/spec_me/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: SpecMe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Dober
|
@@ -67,9 +67,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
67
|
version: 2.1.0
|
68
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
69
|
requirements:
|
70
|
-
- - "
|
70
|
+
- - ">="
|
71
71
|
- !ruby/object:Gem::Version
|
72
|
-
version:
|
72
|
+
version: '0'
|
73
73
|
requirements: []
|
74
74
|
rubyforge_project:
|
75
75
|
rubygems_version: 2.2.0
|