borrower 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,9 +1,20 @@
1
1
  module Borrower
2
+ class Manifest
2
3
 
3
- class << self
4
- def manifest &block
5
- @_manifest ||= Manifest.new
6
- yield @_manifest if block_given?
4
+ attr_reader :files
5
+ attr_reader :directories
6
+
7
+ def initialize
8
+ @files = {}
9
+ @directories = []
10
+ end
11
+
12
+ def file name, path
13
+ @files[name] = path
14
+ end
15
+
16
+ def dir dir
17
+ @directories.push dir
7
18
  end
8
19
 
9
20
  def find file
@@ -21,37 +32,18 @@ module Borrower
21
32
  private
22
33
 
23
34
  def check_for_file_in_manifest_files file
24
- @_manifest.files.fetch(file) { false }
35
+ files.fetch(file) { false }
25
36
  end
26
37
 
27
38
  def check_for_file_in_manifest_directories file
28
39
  matches = []
29
- @_manifest.directories.each do |dir|
40
+ directories.each do |dir|
30
41
  Dir[File.join( dir, '*' )].each do |possibility|
31
42
  matches << possibility if possibility.match( file )
32
43
  end
33
44
  end
34
45
  path = matches.sort { |a,b| a.length <=> b.length }.first
35
46
  end
36
- end
37
-
38
- class Manifest
39
-
40
- attr_reader :files
41
- attr_reader :directories
42
-
43
- def initialize
44
- @files = {}
45
- @directories = []
46
- end
47
-
48
- def file name, path
49
- @files[name] = path
50
- end
51
-
52
- def dir dir
53
- @directories.push dir
54
- end
55
47
 
56
48
  end
57
49
  end
@@ -1,11 +1,6 @@
1
1
  module Borrower
2
- class << self
3
- def merge content, options={}
4
- Merge.new( content, options ).output
5
- end
6
- end
7
-
8
2
  class Merge
3
+
9
4
  def initialize content, options={}
10
5
  @content = content
11
6
  @comment_symbol = options.fetch(:comment) { default_comment_symbol }
@@ -28,7 +23,7 @@ module Borrower
28
23
  end
29
24
 
30
25
  def contents_from_file path
31
- ::Borrower::Path.contents(path)
26
+ Path.contents(path)
32
27
  end
33
28
 
34
29
  end
@@ -0,0 +1,64 @@
1
+ # the public api methods for borrower
2
+ module Borrower
3
+ module PublicAPI
4
+
5
+ # retrieve the contents of a file
6
+ # that is remote or local
7
+ #
8
+ # @param [String] from the path to the file
9
+ # @return [String] contents of the file
10
+ def take from
11
+ Transport.take from
12
+ end
13
+
14
+ # write the content to a destination file
15
+ #
16
+ # @param [String] content content for the file
17
+ # @param [String] to path to write contents to
18
+ # @return [Void]
19
+ def put content, to
20
+ Transport.put content, to
21
+ end
22
+
23
+ # parse through the content and merge
24
+ # matched file contents
25
+ #
26
+ # @param [String] content content to parse
27
+ # @param [Hash] options merging options
28
+ # @option options [String] :comment the comment delimeter to match against
29
+ # @return [String] the merged content
30
+ def merge content, options={}
31
+ Merge.new( content, options ).output
32
+ end
33
+
34
+ # returns the manifest to add lookup
35
+ # directories or named files
36
+ # @example add a file alias and directory
37
+ #
38
+ # manifest do |m|
39
+ # m.file "jquery", "http://code.jquery.com/jquery-1.10.2.min.js"
40
+ # # => adds an alias for jquery
41
+ # m.dir "vendor"
42
+ # # => adds the vendor dir to the lookup paths
43
+ # end
44
+ #
45
+ # @yield [Manifest]
46
+ # @return [Manifest]
47
+ def manifest &block
48
+ @_manifest ||= Manifest.new
49
+ yield @_manifest if block_given?
50
+ return @_manifest
51
+ end
52
+
53
+ # lookup a file or path in the manifest
54
+ #
55
+ # @param [String] file
56
+ # @return [String] path to the file
57
+ def find file
58
+ manifest.find file
59
+ end
60
+
61
+ end
62
+
63
+ extend PublicAPI
64
+ end
@@ -2,8 +2,9 @@ module Borrower
2
2
  module Transport
3
3
 
4
4
  # routes a file from -> to
5
- # @param from [String]
6
- # @param args [Hash]
5
+ # @param [String] from
6
+ # @param [String] to
7
+ # @param [Hash] args
7
8
  def move from, to, args={}
8
9
  content = take(from)
9
10
  content = Borrower.merge(content) if args[:merge]
@@ -11,15 +12,15 @@ module Borrower
11
12
  end
12
13
 
13
14
  # handles taking a file
14
- # @param from [String]
15
+ # @param [String] from
15
16
  # @return [String]
16
17
  def take from
17
18
  Path.contents(from)
18
19
  end
19
20
 
20
21
  # puts a file somewhere
21
- # @param content [String]
22
- # @param to [String]
22
+ # @param [String] content
23
+ # @param [String] to
23
24
  def put content, to
24
25
  FileUtils.mkdir_p( File.dirname(to) )
25
26
  File.open( to, 'w', internal_encoding: content.encoding ) do |file|
@@ -1,3 +1,3 @@
1
1
  module Borrower
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/borrower.rb CHANGED
@@ -10,17 +10,25 @@ require 'borrower/manifest'
10
10
  require 'borrower/merge'
11
11
  require 'borrower/path'
12
12
  require 'borrower/transport'
13
+ require 'borrower/public_api'
13
14
 
14
15
  module Borrower::DSL
15
16
 
16
17
  # borrow a file and put it somewhere
17
- # call syntax:
18
+ # by adding a merge: argument of true borrower will
19
+ # parse the contents for additional borrow statements
20
+ # to merge
21
+ # @example borrow source to destination
22
+ # borrow "source/file", to: "destination/file"
18
23
  #
19
- # Borrower.borrow "path/to/file", to: "place/to/put/file"
20
- #
21
- # @param path [String]
22
- # @param args [Hash] only to: is looked at
24
+ # @example borrow and merge source to destination
25
+ # borrow "source/file", to: "file/destination", merge: true
23
26
  #
27
+ # @param [String] path
28
+ # @param [Hash] args
29
+ # @option args [String] :to the destination path
30
+ # @option args [Boolean] :merge wether to merge or not, defaults to `false`
31
+ # @return [Void]
24
32
  def borrow path, args
25
33
  destination = args.delete(:to) { raise ArgumentError, "missing 'to:' argument" }
26
34
  Borrower::Transport.move path, destination, args
@@ -18,12 +18,12 @@ describe Borrower do
18
18
 
19
19
  it "borrows local files" do
20
20
  borrow local_file, to: file_destination
21
- Borrower::Transport.take( file_destination ).should == "Hi I'm a file"
21
+ Borrower.take( file_destination ).should == "Hi I'm a file"
22
22
  end
23
23
 
24
24
  it "borrows remote files" do
25
25
  borrow remote_file, to: file_destination
26
- Borrower::Transport.take( file_destination ).should == "Hello I'm a file"
26
+ Borrower.take( file_destination ).should == "Hello I'm a file"
27
27
  end
28
28
 
29
29
  it "borrows named local and remote files" do
@@ -34,13 +34,13 @@ describe Borrower do
34
34
  borrow "local", to: file_destination
35
35
  borrow "remote", to: File.join( TMP, "remote.txt" )
36
36
 
37
- Borrower::Transport.take( file_destination ).should == "Hi I'm a file"
38
- Borrower::Transport.take( File.join( TMP, "remote.txt" ) ).should == "Hello I'm a file"
37
+ Borrower.take( file_destination ).should == "Hi I'm a file"
38
+ Borrower.take( File.join( TMP, "remote.txt" ) ).should == "Hello I'm a file"
39
39
  end
40
40
 
41
41
  it "merges files if merge is set to true" do
42
42
  borrow merge_file, to: file_destination, merge: true
43
- Borrower::Transport.take( file_destination ).should == "Hi I'm a file"
43
+ Borrower.take( file_destination ).should == "Hi I'm a file"
44
44
  end
45
45
 
46
46
  it "raises an error if missing arg with key 'to'" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: borrower
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-07 00:00:00.000000000 Z
12
+ date: 2013-07-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: net-ssh
@@ -38,6 +38,7 @@ files:
38
38
  - lib/borrower/manifest.rb
39
39
  - lib/borrower/merge.rb
40
40
  - lib/borrower/path.rb
41
+ - lib/borrower/public_api.rb
41
42
  - lib/borrower/transport.rb
42
43
  - lib/borrower/version.rb
43
44
  - lib/borrower.rb