tailor 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/Manifest.txt +22 -2
- data/PostInstall.txt +4 -0
- data/README.rdoc +7 -6
- data/Rakefile +7 -1
- data/bin/tailor +21 -5
- data/features/indentation.feature +22 -0
- data/features/spacing.feature +13 -18
- data/features/spacing/commas.feature +44 -0
- data/features/step_definitions/indentation_steps.rb +139 -0
- data/features/step_definitions/spacing/commas_steps.rb +14 -0
- data/features/step_definitions/spacing_steps.rb +1 -36
- data/features/support/1_file_with_bad_comma_spacing/bad_comma_spacing.rb +43 -5
- data/features/support/1_file_with_bad_curly_brace_spacing/bad_curly_brace_spacing.rb +60 -0
- data/features/support/1_file_with_bad_operator_spacing/bad_op_spacing.rb +31 -0
- data/features/support/1_file_with_bad_parenthesis/bad_parenthesis.rb +1 -3
- data/features/support/1_file_with_bad_square_brackets/bad_square_brackets.rb +62 -0
- data/features/support/1_file_with_bad_ternary_colon_spacing/bad_ternary_colon_spacing.rb +31 -0
- data/features/support/1_good_simple_file/simple_project.rb +5 -0
- data/features/support/1_long_file_with_indentation/my_project.rb +56 -0
- data/features/support/common.rb +74 -1
- data/features/support/env.rb +3 -1
- data/features/support/world.rb +0 -52
- data/lib/tailor.rb +132 -41
- data/lib/tailor/file_line.rb +66 -177
- data/lib/tailor/indentation.rb +251 -0
- data/lib/tailor/spacing.rb +243 -0
- data/lib/tasks/metrics.rake +23 -0
- data/lib/tasks/stats.rake +11 -0
- data/logic.txt +30 -0
- data/ruby-style-checker.rb +77 -46
- data/spec/file_line_spec.rb +18 -193
- data/spec/indentation_spec.rb +259 -0
- data/spec/spacing/colon_spacing_spec.rb +71 -0
- data/spec/spacing/comma_spacing_spec.rb +159 -0
- data/spec/spacing/curly_brace_spacing_spec.rb +258 -0
- data/spec/spacing/parentheses_spacing_spec.rb +28 -0
- data/spec/spacing/square_bracket_spacing_spec.rb +116 -0
- data/spec/spacing_spec.rb +167 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/tailor_spec.rb +2 -2
- metadata +73 -38
- data/features/support/1_good_simple_file/my_project.rb +0 -7
- data/lib/tailor/indentation_checker.rb +0 -27
data/History.txt
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 0.1.0 2010-05-21
|
2
|
+
|
3
|
+
* Added checks for spacing around { and }
|
4
|
+
* Added check for spacing around ternary ':'
|
5
|
+
* Colorized error messages to be red
|
6
|
+
* Problem message are now grouped by file line (when multiple problems per line)
|
7
|
+
* Temporarily removed reporting of # of trailing whitespaces
|
8
|
+
|
1
9
|
=== 0.0.3 2010-04-26
|
2
10
|
|
3
11
|
* Added checks for spacing around commas
|
data/Manifest.txt
CHANGED
@@ -7,12 +7,20 @@ Rakefile
|
|
7
7
|
bin/tailor
|
8
8
|
features/case_checking.feature
|
9
9
|
features/development.feature
|
10
|
+
features/indentation.feature
|
10
11
|
features/spacing.feature
|
12
|
+
features/spacing/commas.feature
|
11
13
|
features/step_definitions/case_checking_steps.rb
|
12
14
|
features/step_definitions/common_steps.rb
|
15
|
+
features/step_definitions/indentation_steps.rb
|
16
|
+
features/step_definitions/spacing/commas_steps.rb
|
13
17
|
features/step_definitions/spacing_steps.rb
|
14
18
|
features/support/1_file_with_bad_comma_spacing/bad_comma_spacing.rb
|
19
|
+
features/support/1_file_with_bad_curly_brace_spacing/bad_curly_brace_spacing.rb
|
20
|
+
features/support/1_file_with_bad_operator_spacing/bad_op_spacing.rb
|
15
21
|
features/support/1_file_with_bad_parenthesis/bad_parenthesis.rb
|
22
|
+
features/support/1_file_with_bad_square_brackets/bad_square_brackets.rb
|
23
|
+
features/support/1_file_with_bad_ternary_colon_spacing/bad_ternary_colon_spacing.rb
|
16
24
|
features/support/1_file_with_camel_case_class/camel_case_class.rb
|
17
25
|
features/support/1_file_with_camel_case_method/camel_case_method.rb
|
18
26
|
features/support/1_file_with_hard_tabs/hard_tab.rb
|
@@ -20,19 +28,31 @@ features/support/1_file_with_long_lines/long_lines.rb
|
|
20
28
|
features/support/1_file_with_snake_case_class/snake_case_class.rb
|
21
29
|
features/support/1_file_with_snake_case_method/snake_case_method.rb
|
22
30
|
features/support/1_file_with_trailing_whitespace/trailing_whitespace.rb
|
23
|
-
features/support/1_good_simple_file/
|
31
|
+
features/support/1_good_simple_file/simple_project.rb
|
32
|
+
features/support/1_long_file_with_indentation/my_project.rb
|
24
33
|
features/support/common.rb
|
25
34
|
features/support/env.rb
|
26
35
|
features/support/matchers.rb
|
27
36
|
features/support/world.rb
|
28
37
|
lib/tailor.rb
|
29
38
|
lib/tailor/file_line.rb
|
30
|
-
lib/tailor/
|
39
|
+
lib/tailor/indentation.rb
|
40
|
+
lib/tailor/spacing.rb
|
41
|
+
lib/tasks/metrics.rake
|
42
|
+
lib/tasks/stats.rake
|
43
|
+
logic.txt
|
31
44
|
ruby-style-checker.rb
|
32
45
|
script/console
|
33
46
|
script/destroy
|
34
47
|
script/generate
|
35
48
|
spec/file_line_spec.rb
|
49
|
+
spec/indentation_spec.rb
|
50
|
+
spec/spacing/colon_spacing_spec.rb
|
51
|
+
spec/spacing/comma_spacing_spec.rb
|
52
|
+
spec/spacing/curly_brace_spacing_spec.rb
|
53
|
+
spec/spacing/parentheses_spacing_spec.rb
|
54
|
+
spec/spacing/square_bracket_spacing_spec.rb
|
55
|
+
spec/spacing_spec.rb
|
36
56
|
spec/spec.opts
|
37
57
|
spec/spec_helper.rb
|
38
58
|
spec/tailor_spec.rb
|
data/PostInstall.txt
CHANGED
data/README.rdoc
CHANGED
@@ -4,9 +4,8 @@
|
|
4
4
|
|
5
5
|
== DESCRIPTION:
|
6
6
|
|
7
|
-
tailor
|
8
|
-
|
9
|
-
a number of style guides that are popular in the Ruby community. More on this
|
7
|
+
tailor recursively parses Ruby files in a directory and checks them for bad
|
8
|
+
style. Rules for judging style are based on a number of style guides that are popular in the Ruby community. More on this
|
10
9
|
here http://wiki.github.com/turboladen/tailor.
|
11
10
|
|
12
11
|
== FEATURES/PROBLEMS:
|
@@ -21,9 +20,11 @@ here http://wiki.github.com/turboladen/tailor.
|
|
21
20
|
* Extra whitespace
|
22
21
|
* At the end of lines
|
23
22
|
* On empty lines
|
24
|
-
*
|
25
|
-
*
|
26
|
-
*
|
23
|
+
* Around commas
|
24
|
+
* Around open/closed parentheses
|
25
|
+
* Around open/closed square brackets
|
26
|
+
* Around open/closed curly braces
|
27
|
+
* Around colons in ternary statements
|
27
28
|
* Line length
|
28
29
|
* Should be <= 80 characters
|
29
30
|
|
data/Rakefile
CHANGED
@@ -4,10 +4,14 @@ require 'hoe'
|
|
4
4
|
require 'fileutils'
|
5
5
|
require './lib/tailor'
|
6
6
|
|
7
|
+
# Load nsm5200 rakefile extensions
|
8
|
+
Dir["#{File.dirname(__FILE__)}/lib/tasks/*.rake"].each { |ext| load ext }
|
9
|
+
|
7
10
|
Hoe.plugin :newgem
|
8
11
|
Hoe.plugin :yard
|
9
12
|
# Hoe.plugin :website
|
10
|
-
|
13
|
+
Hoe.plugin :cucumberfeatures
|
14
|
+
Hoe.plugins.delete :rubyforge
|
11
15
|
|
12
16
|
# Gets the description from the main README file
|
13
17
|
def get_descr_from_readme
|
@@ -76,3 +80,5 @@ Dir['tasks/**/*.rake'].each { |t| load t }
|
|
76
80
|
# TODO - want other tests/tasks run by default? Add them to the list
|
77
81
|
# remove_task :default
|
78
82
|
# task :default => [:spec, :features]
|
83
|
+
|
84
|
+
|
data/bin/tailor
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
$:.unshift
|
3
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib/') unless
|
4
|
+
$:.include?(File.dirname(__FILE__) + '/../lib/') ||
|
5
|
+
$:.include?(File.expand_path(File.dirname(__FILE__) + '/../lib/'))
|
4
6
|
|
5
7
|
require 'tailor'
|
6
8
|
|
@@ -11,8 +13,22 @@ end
|
|
11
13
|
if ARGV[0].nil?
|
12
14
|
puts usage
|
13
15
|
else
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
begin
|
17
|
+
path_to_check = ARGV[0]
|
18
|
+
|
19
|
+
# Check to make sure we got a file or directory
|
20
|
+
unless File.file?(path_to_check) or File.directory?(path_to_check)
|
21
|
+
raise "Invalid file or directory: #{path_to_check}"
|
22
|
+
end
|
23
|
+
|
24
|
+
# Check the requested files/dirs for problems
|
25
|
+
files_and_problems = Tailor.check path_to_check
|
18
26
|
|
27
|
+
# Print summary of the problems we found
|
28
|
+
Tailor.print_report files_and_problems
|
29
|
+
rescue Exception => ex
|
30
|
+
puts ex.message
|
31
|
+
puts ex.backtrace
|
32
|
+
puts
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Feature: Indentation
|
2
|
+
|
3
|
+
Scenario: A single file project with every in/outdent expression, indented properly
|
4
|
+
Given I have a project directory "1_long_file_with_indentation"
|
5
|
+
And I have 1 file in my project
|
6
|
+
And that file is indented properly
|
7
|
+
When I run the checker on the project
|
8
|
+
Then the checker should tell me my indentation is OK
|
9
|
+
|
10
|
+
Scenario: A single file that's indented properly
|
11
|
+
Given I have a project directory "1_good_simple_file"
|
12
|
+
And I have 1 file in my project
|
13
|
+
And the indentation of that file starts at level 0
|
14
|
+
And the line 1 is a "class" statement
|
15
|
+
And the line 2 is a "def" statement
|
16
|
+
When I run the checker on the project
|
17
|
+
Then the level of line 1 should be 0.0
|
18
|
+
And the level of line 2 should be 1.0
|
19
|
+
And the level of line 3 should be 2.0
|
20
|
+
And the level of line 4 should be 1.0
|
21
|
+
And the level of line 5 should be 0.0
|
22
|
+
|
data/features/spacing.feature
CHANGED
@@ -6,15 +6,6 @@ Feature: Spacing
|
|
6
6
|
which lines those problems occur on,
|
7
7
|
and what type of spacing they're missing
|
8
8
|
|
9
|
-
Scenario: A single class-less file in a project; 1 method, indented properly
|
10
|
-
Given I have a project directory "1_good_simple_file"
|
11
|
-
And I have "1" file in my project
|
12
|
-
And that file does not contain any "class" statements
|
13
|
-
And the file contains only "1" "def" statement
|
14
|
-
And that file is indented properly
|
15
|
-
When I run the checker on the project
|
16
|
-
Then the checker should tell me my indentation is OK
|
17
|
-
|
18
9
|
Scenario: A single class-less file with hard tabs
|
19
10
|
Given I have a project directory "1_file_with_hard_tabs"
|
20
11
|
And I have "1" file in my project
|
@@ -26,21 +17,21 @@ Feature: Spacing
|
|
26
17
|
|
27
18
|
Scenario: A single file that has all lines with trailing whitespace
|
28
19
|
Given I have a project directory "1_file_with_trailing_whitespace"
|
29
|
-
And I have
|
20
|
+
And I have 1 file in my project
|
30
21
|
And that file contains lines with trailing whitespace
|
31
22
|
When I run the checker on the project
|
32
23
|
Then the checker should tell me each line has trailing whitespace
|
33
24
|
|
34
25
|
Scenario: A single file that has a comment and a code line 90 characters long
|
35
26
|
Given I have a project directory "1_file_with_long_lines"
|
36
|
-
And I have
|
27
|
+
And I have 1 file in my project
|
37
28
|
And that file contains lines longer than 80 characters
|
38
29
|
When I run the checker on the project
|
39
30
|
Then the checker should tell me each line is too long
|
40
31
|
|
41
32
|
Scenario: A single file that has a comment, method name, and statement without spaces after the commas
|
42
33
|
Given I have a project directory "1_file_with_bad_comma_spacing"
|
43
|
-
And I have
|
34
|
+
And I have 1 file in my project
|
44
35
|
And that file contains a "comment" line without spaces after commas
|
45
36
|
And that file contains a "method" line without spaces after commas
|
46
37
|
And that file contains a "statement" line without spaces after commas
|
@@ -49,7 +40,7 @@ Feature: Spacing
|
|
49
40
|
|
50
41
|
Scenario: A single file that has a comment, method name, and statement with > 1 spaces after the commas
|
51
42
|
Given I have a project directory "1_file_with_bad_comma_spacing"
|
52
|
-
And I have
|
43
|
+
And I have 1 file in my project
|
53
44
|
And that file contains a "comment" line with > 1 spaces after commas
|
54
45
|
And that file contains a "method" line with > 1 spaces after commas
|
55
46
|
And that file contains a "statement" line with > 1 spaces after commas
|
@@ -58,7 +49,7 @@ Feature: Spacing
|
|
58
49
|
|
59
50
|
Scenario: A single file that has a comment, method name, and statement with spaces before the commas
|
60
51
|
Given I have a project directory "1_file_with_bad_comma_spacing"
|
61
|
-
And I have
|
52
|
+
And I have 1 file in my project
|
62
53
|
And that file contains a "comment" line with spaces before commas
|
63
54
|
And that file contains a "method" line with spaces before commas
|
64
55
|
And that file contains a "statement" line with spaces before commas
|
@@ -67,7 +58,7 @@ Feature: Spacing
|
|
67
58
|
|
68
59
|
Scenario: A single file that has a comment, method, and statement with spaces after open parentheses
|
69
60
|
Given I have a project directory "1_file_with_bad_parenthesis"
|
70
|
-
And I have
|
61
|
+
And I have 1 file in my project
|
71
62
|
And that file contains a "comment" line with spaces after an open parenthesis
|
72
63
|
And that file contains a "method" line with spaces after an open parenthesis
|
73
64
|
And that file contains a "statement" line with spaces after an open parenthesis
|
@@ -76,7 +67,7 @@ Feature: Spacing
|
|
76
67
|
|
77
68
|
Scenario: A single file that has a comment, method, and statement with spaces after open brackets
|
78
69
|
Given I have a project directory "1_file_with_bad_parenthesis"
|
79
|
-
And I have
|
70
|
+
And I have 1 file in my project
|
80
71
|
And that file contains a "comment" line with spaces after an open bracket
|
81
72
|
And that file contains a "method" line with spaces after an open bracket
|
82
73
|
And that file contains a "statement" line with spaces after an open bracket
|
@@ -85,7 +76,7 @@ Feature: Spacing
|
|
85
76
|
|
86
77
|
Scenario: A single file that has a comment, method, and statement with spaces before closed parentheses
|
87
78
|
Given I have a project directory "1_file_with_bad_parenthesis"
|
88
|
-
And I have
|
79
|
+
And I have 1 file in my project
|
89
80
|
And that file contains a "comment" line with spaces after an open parenthesis
|
90
81
|
And that file contains a "method" line with spaces after an open parenthesis
|
91
82
|
And that file contains a "statement" line with spaces after an open parenthesis
|
@@ -94,9 +85,13 @@ Feature: Spacing
|
|
94
85
|
|
95
86
|
Scenario: A single file that has a comment, method, and statement with spaces before closed brackets
|
96
87
|
Given I have a project directory "1_file_with_bad_parenthesis"
|
97
|
-
And I have
|
88
|
+
And I have 1 file in my project
|
98
89
|
And that file contains a "comment" line with spaces after an open bracket
|
99
90
|
And that file contains a "method" line with spaces after an open bracket
|
100
91
|
And that file contains a "statement" line with spaces after an open bracket
|
101
92
|
When I run the checker on the project
|
102
93
|
Then the checker should tell me each line has closed brackets with spaces before them
|
94
|
+
|
95
|
+
Scenario: A single file that has a comment, method, and statement with each operator
|
96
|
+
Given I have a project directory "1_file_with_bad_operator_spacing"
|
97
|
+
And I have 1 file in my project
|
@@ -0,0 +1,44 @@
|
|
1
|
+
Feature: Detect bad spacing around commas
|
2
|
+
As a Ruby developer
|
3
|
+
I want to detect bad spacing around commas in my code
|
4
|
+
So that it's easy to read and maintain
|
5
|
+
|
6
|
+
Scenario: More than 1 space after a comma
|
7
|
+
Given a file with 1 space after a comma in a:
|
8
|
+
| Type |
|
9
|
+
| comment |
|
10
|
+
| method |
|
11
|
+
| Array |
|
12
|
+
| Hash |
|
13
|
+
|
14
|
+
Scenario: 0 spaces after a comma
|
15
|
+
Given a file with 0 spaces after a comma in a:
|
16
|
+
| Type |
|
17
|
+
| comment |
|
18
|
+
| method |
|
19
|
+
| Array |
|
20
|
+
| Hash |
|
21
|
+
|
22
|
+
Scenario: 1 space after a comma
|
23
|
+
Given a file with 1 space after a comma in a:
|
24
|
+
| Type |
|
25
|
+
| comment |
|
26
|
+
| method |
|
27
|
+
| Array |
|
28
|
+
| Hash |
|
29
|
+
|
30
|
+
Scenario: More than 0 spaces before a comma
|
31
|
+
Given a file with more than 0 spaces before a comma in a:
|
32
|
+
| Type |
|
33
|
+
| comment |
|
34
|
+
| method |
|
35
|
+
| Array |
|
36
|
+
| Hash |
|
37
|
+
|
38
|
+
Scenario: 0 spaces before a comma
|
39
|
+
Given a file with 0 spaces before a comma in a:
|
40
|
+
| Type |
|
41
|
+
| comment |
|
42
|
+
| method |
|
43
|
+
| Array |
|
44
|
+
| Hash |
|
@@ -0,0 +1,139 @@
|
|
1
|
+
require 'tailor/indentation'
|
2
|
+
require 'tailor/file_line'
|
3
|
+
|
4
|
+
Given /^that file is indented properly$/ do
|
5
|
+
pending
|
6
|
+
current_line = 1
|
7
|
+
|
8
|
+
file_path = Pathname.new(File.expand_path(@file_list[0]))
|
9
|
+
|
10
|
+
current_level = 0.0
|
11
|
+
problem_count = 0
|
12
|
+
next_proper_level = 0.0
|
13
|
+
|
14
|
+
check_file do |line|
|
15
|
+
line = Tailor::FileLine.new(line, file_path, current_line)
|
16
|
+
|
17
|
+
puts '----'
|
18
|
+
puts "line = #{current_line}"
|
19
|
+
puts "current = #{current_level}"
|
20
|
+
actual_level = line.is_at_level
|
21
|
+
puts "actual = #{actual_level}"
|
22
|
+
should_be_at = line.should_be_at_level(current_level)
|
23
|
+
puts "should = #{should_be_at}"
|
24
|
+
|
25
|
+
problem_count += 1 if line.at_proper_level?(actual_level, should_be_at)
|
26
|
+
next_proper_level = line.next_line_should_be_at_level current_level
|
27
|
+
puts "next proper = #{next_proper_level}"
|
28
|
+
current_level = next_proper_level
|
29
|
+
|
30
|
+
current_line += 1
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
Given /^the indentation of that file starts at level (\d*)$/ do |level|
|
35
|
+
current_line = 1
|
36
|
+
result = nil
|
37
|
+
|
38
|
+
file_path = Pathname.new(File.expand_path(@file_list[0]))
|
39
|
+
|
40
|
+
check_file do |line|
|
41
|
+
line = FileLine.new(line, file_path, current_line)
|
42
|
+
result = line.is_at_level
|
43
|
+
break line
|
44
|
+
end
|
45
|
+
|
46
|
+
result.should == 0
|
47
|
+
end
|
48
|
+
|
49
|
+
Given /^the line (\d*) is a "([^\"]*)" statement$/ do |line_num, statement_type|
|
50
|
+
current_line = 1
|
51
|
+
result = nil
|
52
|
+
|
53
|
+
check_file do |line|
|
54
|
+
result = line.strip =~ /^#{statement_type}/
|
55
|
+
current_line == line_num.to_i ? (break line) : current_line += 1
|
56
|
+
end
|
57
|
+
result.should_not be_nil
|
58
|
+
end
|
59
|
+
|
60
|
+
Then "the checker should tell me my indentation is OK" do
|
61
|
+
pending
|
62
|
+
end
|
63
|
+
|
64
|
+
=begin
|
65
|
+
Then /^the level of line 1 should be 0.0$/ do
|
66
|
+
file_path = Pathname.new(File.expand_path(@file_list[0]))
|
67
|
+
@current_level = nil
|
68
|
+
|
69
|
+
check_file do |line|
|
70
|
+
line = FileLine.new(line, file_path, 1)
|
71
|
+
|
72
|
+
@current_level = line.is_at_level
|
73
|
+
@level_change = @current_level + line.next_line_level_change
|
74
|
+
break line
|
75
|
+
end
|
76
|
+
@current_level.should.eql? 0.0
|
77
|
+
end
|
78
|
+
=end
|
79
|
+
|
80
|
+
|
81
|
+
Then /^the level of line (\d*) should be (\d+\.\d+)$/ do |line_num_to_check, level_to_check|
|
82
|
+
file_path = Pathname.new(File.expand_path(@file_list[0]))
|
83
|
+
current_line_num = 1
|
84
|
+
next_proper_level = 0.0
|
85
|
+
current_proper_level = 0.0
|
86
|
+
|
87
|
+
check_file do |line|
|
88
|
+
line = FileLine.new(line, file_path, current_line_num)
|
89
|
+
|
90
|
+
if current_line_num == line_num_to_check
|
91
|
+
line.is_at_level.should == level_to_check.to_f
|
92
|
+
|
93
|
+
# Determine what the next line's level should be at, based on the current line's
|
94
|
+
# level.
|
95
|
+
next_proper_level = current_proper_level + line.indent_next_line_by
|
96
|
+
end
|
97
|
+
|
98
|
+
current_line_num += 1
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
=begin
|
103
|
+
Then /^the level of line (\d*) should be (\d+\.\d+)$/ do |line_num_to_check, level_to_check|
|
104
|
+
file_path = Pathname.new(File.expand_path(@file_list[0]))
|
105
|
+
current_line = 1
|
106
|
+
actual_level = nil
|
107
|
+
current_level = 0.0 # new
|
108
|
+
level_change = nil # new
|
109
|
+
|
110
|
+
check_file do |line|
|
111
|
+
line = FileLine.new(line, file_path, current_line)
|
112
|
+
|
113
|
+
# If the first line of the file,
|
114
|
+
if current_line == 1 # new
|
115
|
+
level_change = current_level + line.next_line_level_change #new
|
116
|
+
break line #new
|
117
|
+
else # new
|
118
|
+
actual_level = line.is_at_level
|
119
|
+
end # new
|
120
|
+
|
121
|
+
# Only check the line specified; skip if it's the first line.
|
122
|
+
if (current_line == line_num_to_check) and (line_num_to_check > 1)
|
123
|
+
this_level = current_level + level_change # new
|
124
|
+
this_level < 0.0 ? (this_level = 0.0) : this_level # new
|
125
|
+
this_level.should == level_to_check # new
|
126
|
+
actual_level.should == this_level
|
127
|
+
level_change = line.next_line_level_change
|
128
|
+
break line
|
129
|
+
else
|
130
|
+
current_line += 1
|
131
|
+
end
|
132
|
+
end
|
133
|
+
if current_line == 1
|
134
|
+
current_level.should.eql? level_to_check
|
135
|
+
else
|
136
|
+
current_level += level_change #new
|
137
|
+
end
|
138
|
+
end
|
139
|
+
=end
|