lstrip-on-steroids 0.9.5 → 1.0.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.
data/Rakefile CHANGED
@@ -2,13 +2,13 @@ require "rake/gempackagetask"
2
2
 
3
3
  spec = Gem::Specification.new do |s|
4
4
  s.name = "lstrip-on-steroids"
5
- s.version = "0.9.5"
6
- s.author = "Caius Durling"
7
- s.email = "dev@caius.name"
5
+ s.version = "1.0.0"
6
+ s.authors = ["Caius Durling", "Ash Moran"]
7
+ s.email = %w[ dev@caius.name ash.moran@patchspace.co.uk ]
8
8
  s.homepage = "http://github.com/caius/lstrip-on-steroids"
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.summary = "Intelligently strips leading whitespace from a multiline string"
11
- s.files = FileList["lib/**/*.rb", "[A-Z]*"].to_a
11
+ s.files = FileList["lib/**/*.rb", "spec/**/*.rb", "[A-Z]*"].to_a
12
12
  s.has_rdoc = false
13
13
  end
14
14
 
@@ -0,0 +1 @@
1
+ require 'lstrip_on_steroids'
@@ -6,17 +6,18 @@ module LStripOnSteroids
6
6
  end
7
7
 
8
8
  def strip
9
- @lines.map {|line| line.sub(/^ {#{whitespace_trim_length}}/, "") }
9
+ @lines.map {|line| line.sub(/^\s*$/, "").sub(/^ {#{whitespace_trim_length}}/, "") }
10
10
  end
11
11
 
12
12
  private
13
13
 
14
14
  def whitespace_trim_length
15
- @whitespace_trim_length ||= @lines.map {|line| indent_size(line) }.min
15
+ @whitespace_trim_length ||=
16
+ @lines.reject { |line| line =~ /^\s*$/ }.map { |line| indent_size(line) }.min
16
17
  end
17
18
 
18
19
  def strip_bare_top_and_bottom
19
- [0, -1].each {|i| @lines.delete_at(i) if bare?(@lines[i]) }
20
+ [0, -1].each { |i| @lines.delete_at(i) if bare?(@lines[i]) }
20
21
  end
21
22
 
22
23
  def indent_size line
@@ -29,7 +30,7 @@ module LStripOnSteroids
29
30
  end
30
31
 
31
32
  def -@
32
- JuicedStripper.new(split("\n")).strip.join("\n")
33
+ JuicedStripper.new(split("\n")).strip.join("\n").sub(/\n*\Z/, "")
33
34
  end
34
35
  end
35
36
 
@@ -0,0 +1,76 @@
1
+ require File.join(File.dirname(__FILE__), "..", "lib", "lstrip_on_steroids")
2
+
3
+ describe String do
4
+ describe "#-@" do
5
+ it "removes whitespace" do
6
+ string = -%{
7
+ foo
8
+ bar
9
+ baz
10
+ }
11
+
12
+ string.should == "foo\n bar\nbaz"
13
+ end
14
+
15
+ it "handles indented first lines" do
16
+ string = -%{
17
+ foo
18
+ bar
19
+ baz
20
+ }
21
+
22
+ string.should == " foo\nbar\n baz"
23
+ end
24
+
25
+ it "handles lines with really long indents" do
26
+ # In case we do the space removal naively
27
+
28
+ string = -%{
29
+ foo
30
+ bar
31
+ baz
32
+ }
33
+
34
+ string.should == "foo\n bar\nbaz"
35
+ end
36
+
37
+ it "handles empty lines in the middle" do
38
+ string = -%{
39
+ foo
40
+
41
+ baz
42
+ }
43
+
44
+ string.should == "foo\n\nbaz"
45
+ end
46
+
47
+ it "handles whitespace-only lines in the middle" do
48
+ original_string = %{
49
+ foo
50
+
51
+ baz
52
+ }.sub("\n\n", "\n \n")
53
+
54
+ (-original_string).should == "foo\n\nbaz"
55
+ end
56
+
57
+ it "removes blank lines from the end" do
58
+ original_string =
59
+ " foo\n" +
60
+ " \n" +
61
+ " \n"
62
+
63
+ (-original_string).should == "foo"
64
+ end
65
+
66
+ it "works with heredoc strings" do
67
+ string = -<<-end
68
+ foo
69
+ bar
70
+ baz
71
+ end
72
+
73
+ string.should == "foo\n bar\nbaz"
74
+ end
75
+ end
76
+ end
metadata CHANGED
@@ -1,68 +1,51 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: lstrip-on-steroids
3
- version: !ruby/object:Gem::Version
4
- hash: 49
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 9
9
- - 5
10
- version: 0.9.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Caius Durling
9
+ - Ash Moran
14
10
  autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2010-08-20 00:00:00 +01:00
19
- default_executable:
13
+ date: 2011-08-27 00:00:00.000000000Z
20
14
  dependencies: []
21
-
22
15
  description:
23
- email: dev@caius.name
16
+ email:
17
+ - dev@caius.name
18
+ - ash.moran@patchspace.co.uk
24
19
  executables: []
25
-
26
20
  extensions: []
27
-
28
21
  extra_rdoc_files: []
29
-
30
- files:
22
+ files:
23
+ - lib/lstrip-on-steroids.rb
31
24
  - lib/lstrip_on_steroids.rb
25
+ - spec/lstrip_on_steroids_spec.rb
32
26
  - Rakefile
33
- has_rdoc: true
34
27
  homepage: http://github.com/caius/lstrip-on-steroids
35
28
  licenses: []
36
-
37
29
  post_install_message:
38
30
  rdoc_options: []
39
-
40
- require_paths:
31
+ require_paths:
41
32
  - lib
42
- required_ruby_version: !ruby/object:Gem::Requirement
33
+ required_ruby_version: !ruby/object:Gem::Requirement
43
34
  none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- hash: 3
48
- segments:
49
- - 0
50
- version: "0"
51
- required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
40
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
60
45
  requirements: []
61
-
62
46
  rubyforge_project:
63
- rubygems_version: 1.3.7
47
+ rubygems_version: 1.8.9
64
48
  signing_key:
65
49
  specification_version: 3
66
50
  summary: Intelligently strips leading whitespace from a multiline string
67
51
  test_files: []
68
-