stowaway 0.0.6 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  ---
2
2
  :major: 0
3
- :minor: 0
4
- :patch: 6
3
+ :minor: 1
4
+ :patch: 1
5
+ :build:
data/bin/stowaway CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  require 'stowaway/runner'
4
4
  runner = Stowaway::Runner.new(ARGV)
5
- runner.run
5
+ runner.run
@@ -0,0 +1,42 @@
1
+ module Stowaway
2
+ class Matcher
3
+ def match?(line, file)
4
+ return true if attr_ref?(line, file)
5
+ return true if rails_js_ref?(line, file)
6
+ return true if rails_css_ref?(line, file)
7
+ end
8
+
9
+ private
10
+
11
+ def attr_ref?(line, file)
12
+ line =~ /(src|link|href)=(["|'])(#{file.fullpath})(\2)/
13
+ end
14
+
15
+ def rails_js_ref?(line, file)
16
+ return false unless line =~ /=?\s(javascript_include_tag)?\s(["|'])(.+)(\2)/
17
+ params = $3.gsub(/[\s|"]/, "").split(",")
18
+ params.each do |f|
19
+ if f =~ /\.js$/
20
+ return true if "/public/javascripts/#{f}" == file.fullpath
21
+ else
22
+ return true if "/public/javascripts/#{f}.js" == file.fullpath
23
+ end
24
+ end
25
+ false
26
+ end
27
+
28
+ def rails_css_ref?(line, file)
29
+ return false unless line =~ /=?\s(stylesheet_link_tag)?\s(["|'])(.+)(\2)/
30
+ params = $3.gsub(/[\s|"]/, "").split(",")
31
+ params.each do |f|
32
+ if f =~ /\.css$/
33
+ return true if "/public/stylesheets/#{f}" == file.fullpath
34
+ else
35
+ return true if "/public/stylesheets/#{f}.css" == file.fullpath
36
+ end
37
+ end
38
+ false
39
+ end
40
+
41
+ end
42
+ end
@@ -20,6 +20,7 @@ module Stowaway
20
20
  end
21
21
 
22
22
  private
23
+
23
24
  def respond(not_found)
24
25
  if not_found.empty?
25
26
  print "Zero stowaways found. You run a tight ship.\n\n"
@@ -1,5 +1,6 @@
1
1
  require_relative 'fshelpyhelp'
2
2
  require_relative 'status'
3
+ require_relative "matcher"
3
4
 
4
5
  module Stowaway
5
6
  class Sweeper
@@ -9,17 +10,18 @@ module Stowaway
9
10
  @files_to_find = files_to_find
10
11
  @ignore = ext_to_ignore || [/^\.|\.jpg$|\.gif$|.png$/i]
11
12
  @status = status
13
+ @matcher = Matcher.new
12
14
  end
13
-
14
-
15
+
15
16
  def sweep(path)
16
17
  dir = Dir.new(path)
17
-
18
+ @root = path if @root.nil?
19
+
18
20
  dir.each do |f|
19
21
  next if ignore?(f)
20
-
22
+
21
23
  file = File.join(dir.path, f)
22
-
24
+
23
25
  if File.directory?(file)
24
26
  sweep(file)
25
27
  else
@@ -30,6 +32,7 @@ module Stowaway
30
32
  end
31
33
 
32
34
  private
35
+
33
36
  def inspect_file(file)
34
37
  @status.out "Sweeping: #{file}"
35
38
  File.open(file, 'r') do |i|
@@ -41,7 +44,8 @@ module Stowaway
41
44
  end
42
45
 
43
46
  def remove_match(line)
44
- @files_to_find.delete_if { |file| line.include?(file.name) }
47
+ @files_to_find.delete_if { |file| @matcher.match?(line, file) }
45
48
  end
49
+
46
50
  end
47
51
  end
@@ -1,4 +1,8 @@
1
1
  this is a line of test text.
2
- this line has the name of a file: file1.jpg.
3
- this line also has the name of a file (file2.gif) and it is so awesome.
4
- the end.
2
+ this filename on this line should be ignored: file1.js.
3
+ = javascript_include_tag "file.js"
4
+ = javascript_include_tag "jquery.js", "home/index.js"
5
+ = javascript_include_tag "application"
6
+ = stylesheet_link_tag "file.css"
7
+ = stylesheet_link_tag "reset", "common"
8
+ the end.
@@ -1,2 +1,9 @@
1
1
  Hello, I'm test data:
2
- file3.js
2
+
3
+ This is testing files with the same name but different paths
4
+
5
+ <img src="/fake/path1/button.jpg" />
6
+ <img src="/fake/path2/button.jpg" />
7
+ <a href="/fake/path/photo.jpg" />
8
+ <script type="text/javascript" src="/fake/path/file.js" ></script>
9
+
@@ -1,6 +1,6 @@
1
- require 'spec/spec_helper'
2
- require 'lib/stowaway/file'
3
- require 'lib/stowaway/sweeper'
1
+ require "spec/spec_helper"
2
+ require "lib/stowaway/file"
3
+ require "lib/stowaway/sweeper"
4
4
 
5
5
  describe Stowaway::Sweeper do
6
6
 
@@ -10,36 +10,87 @@ describe Stowaway::Sweeper do
10
10
  end
11
11
 
12
12
  before(:each) do
13
- @f1 = Stowaway::FileObj.new('/fake/file1.jpg')
14
- @f2 = Stowaway::FileObj.new('/fake/file2.gif')
15
- @f3 = Stowaway::FileObj.new('/fake/file3.js')
16
- @f4 = Stowaway::FileObj.new('/fake/also/file3.js')
17
- @files = [@f1, @f2, @f3, @f4]
18
- @status_mock = mock('status_mock', :null_object => true)
13
+ @files = []
14
+ @status_mock = mock("status_mock", :null_object => true)
19
15
  end
20
16
 
21
- it "should sweep through directory looking for matches" do
22
- sweeper.sweep('.')
17
+ it "should match images referened in a src attribute" do
18
+ @files << Stowaway::FileObj.new("/fake/path1/button.jpg")
19
+ sweeper.sweep("spec/data")
23
20
  @files.should be_empty
24
21
  end
25
22
 
23
+ it "should match images referened in an href attribute" do
24
+ @files << Stowaway::FileObj.new("/fake/path/photo.jpg")
25
+ sweeper.sweep("spec/data")
26
+ @files.should be_empty
27
+ end
28
+
29
+ it "should match scripts referenced in a src attribute" do
30
+ @files << Stowaway::FileObj.new("/fake/path/file.js")
31
+ sweeper.sweep("spec/data")
32
+ @files.should be_empty
33
+ end
34
+
35
+ it "should match scripts referenced in a rails javascript_include_tag helper" do
36
+ @files << Stowaway::FileObj.new("/public/javascripts/file.js")
37
+ sweeper([/^\.|\.rb$|testfile2/]).sweep("spec/data")
38
+ @files.should be_empty
39
+ end
40
+
41
+ it "should match scripts referenced in a rails javascript_include_tag helper when no extension is given" do
42
+ @files << Stowaway::FileObj.new("/public/javascripts/application.js")
43
+ sweeper([/^\.|\.rb$|testfile2/]).sweep("spec/data")
44
+ @files.should be_empty
45
+ end
46
+
47
+ it "should match multiple scripts referenced in a rails javascript_include_tag helper" do
48
+ @files << Stowaway::FileObj.new("/public/javascripts/jquery.js")
49
+ @files << Stowaway::FileObj.new("/public/javascripts/home/index.js")
50
+ sweeper([/^\.|\.rb$|testfile2/]).sweep("spec/data")
51
+ @files.should be_empty
52
+ end
53
+
54
+ it "should match css files referenced in a rails stylesheet_link_tag helper" do
55
+ @files << Stowaway::FileObj.new("/public/stylesheets/file.css")
56
+ sweeper([/^\.|\.rb$|testfile2/]).sweep("spec/data")
57
+ @files.should be_empty
58
+ end
59
+
60
+ it "should match multiple css files referenced in a rails stylesheet_link_tag helper" do
61
+ @files << Stowaway::FileObj.new("/public/stylesheets/reset.css")
62
+ @files << Stowaway::FileObj.new("/public/stylesheets/common.css")
63
+ sweeper([/^\.|\.rb$|testfile2/]).sweep("spec/data")
64
+ @files.should be_empty
65
+ end
66
+
26
67
  it "should not sweep through ignored file types" do
27
- sweeper([/^\.|\.rb$|testfile1/]).sweep('spec/data').length.should == 2
68
+ @files << Stowaway::FileObj.new("/public/stylesheets/reset.css")
69
+ sweeper([/^\.|\.rb$|testfile1/]).sweep("spec/data").length.should == 1
28
70
  end
29
71
 
30
72
  it "should output a message when sweeping through a file" do
31
73
  @status_mock.should_receive(:out).with("Sweeping: spec/data/testfile1.txt").once
32
- sweeper([/^\.|\.rb$|testfile2/]).sweep('spec/data')
74
+ sweeper([/^\.|\.rb$|testfile2/]).sweep("spec/data")
33
75
  end
34
76
 
35
77
  it "should flush the output after sweeping through a file" do
36
78
  @status_mock.should_receive(:flush).once
37
- sweeper([/^\.|\.rb$|testfile2/]).sweep('spec/data')
79
+ sweeper([/^\.|\.rb$|testfile2/]).sweep("spec/data")
80
+ end
81
+
82
+ it "should find images of the same name but with different paths" do
83
+ @files << Stowaway::FileObj.new("/fake/path1/button.jpg")
84
+ @files << Stowaway::FileObj.new("/fake/path2/button.jpg")
85
+ sweeper([/^\.|\.rb$/]).sweep("spec/data")
86
+ @files.should be_empty
38
87
  end
39
88
 
40
89
  it "should remove matches and leave files that were not found" do
41
- sweeper([/^\.|\.rb$|testfile1/]).sweep('spec/data')
42
- @files.should == [@f1, @f2]
90
+ @files << Stowaway::FileObj.new("/a/stowaway/file.txt")
91
+ sweeper([/^\.|\.rb$/]).sweep("spec/data")
92
+ @files.should_not be_empty
93
+ @files.first.fullpath.should == "/a/stowaway/file.txt"
43
94
  end
44
95
 
45
96
  end
data/stowaway.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{stowaway}
8
- s.version = "0.0.6"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Emilio Cavazos"]
12
- s.date = %q{2009-10-07}
12
+ s.date = %q{2010-02-14}
13
13
  s.default_executable = %q{stowaway}
14
14
  s.email = %q{ejcavazos@gmail.com}
15
15
  s.executables = ["stowaway"]
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "lib/stowaway/file.rb",
29
29
  "lib/stowaway/fshelpyhelp.rb",
30
30
  "lib/stowaway/locator.rb",
31
+ "lib/stowaway/matcher.rb",
31
32
  "lib/stowaway/options.rb",
32
33
  "lib/stowaway/runner.rb",
33
34
  "lib/stowaway/status.rb",
@@ -67,3 +68,4 @@ Gem::Specification.new do |s|
67
68
  else
68
69
  end
69
70
  end
71
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stowaway
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emilio Cavazos
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-07 00:00:00 -07:00
12
+ date: 2010-02-14 00:00:00 -08:00
13
13
  default_executable: stowaway
14
14
  dependencies: []
15
15
 
@@ -33,6 +33,7 @@ files:
33
33
  - lib/stowaway/file.rb
34
34
  - lib/stowaway/fshelpyhelp.rb
35
35
  - lib/stowaway/locator.rb
36
+ - lib/stowaway/matcher.rb
36
37
  - lib/stowaway/options.rb
37
38
  - lib/stowaway/runner.rb
38
39
  - lib/stowaway/status.rb