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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f1ebde4dbe4932ee6c6d524ce26b4d9d76e54fc
4
- data.tar.gz: a81c5823843a8b79622093f9606a4067e9c493ec
3
+ metadata.gz: 6feeb4ec8f1646fd0348b2a9e370c1816483391d
4
+ data.tar.gz: 3bb19d98bd11bc9354136f3678e238e2fe6779f0
5
5
  SHA512:
6
- metadata.gz: 900466d98a2c32fe4064f2f8b079cc9ad338eb55e5ac4a90ede0c9edd572ba9b2144e3eabbd97ed27c436f451fa4eb5fe6439bf0f5d4294b302e1b358518f16f
7
- data.tar.gz: aac54adf925d1d61391717bc651b906554a459016c364de1f9657cd64d5ddbea56814d02c07baf7b3ab746041cdabe8332daa4a1281d2bb74bad68289b6feb5c
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
- self.ast << parse_line( line )
80
+ ast.last << parse_line( line )
72
81
  end
73
82
  end
74
83
  end
@@ -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(ast) +
11
- end_lines( 2 )
12
- ) # .tap{ |r| puts r }
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
 
@@ -1,3 +1,3 @@
1
1
  class SpecMe
2
- VERSION = "0.0.1.pre3"
2
+ VERSION = "0.0.1"
3
3
  end # class SpecMe
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.pre3
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: 1.3.1
72
+ version: '0'
73
73
  requirements: []
74
74
  rubyforge_project:
75
75
  rubygems_version: 2.2.0