php-composer 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8241ec13c67744cf1fd4170eb39936928677f4da
4
- data.tar.gz: e24e4001f8e93ec75d30683a86118dc861010a8e
3
+ metadata.gz: bd0828242017fa93167a253e4fbce6bbae871628
4
+ data.tar.gz: 69d2a47754a7c7185470305e96e0a688c2af3c6b
5
5
  SHA512:
6
- metadata.gz: c7e2fde5ee0935285a1a968957a39319bf010910e35c5d51559b7306a2df67314534af2313cf725742b79ab4125093d70f94149d2d346384c226f05540564467
7
- data.tar.gz: 2ffa1805e88423b8385f15e0562b8e183bfe6a0e4796e27359853998131a9731ae62332edd0a410260f2d6a8b4de3e33a00e3880b0c17a872e294e0643da32a8
6
+ metadata.gz: 2ae70ad8be0979752a5dc60cf9443e11cd77be59dfa52f4843df3e885606bd0d54561e0acf4464d30d86f7c81ba2e45beab9b74a22b8ca078a1c599405ff5a67
7
+ data.tar.gz: 66aceb42043d3823308f769835d78a8a5b7df75fb93e3e9b1aa41d4e37665b323e489495204360e45b9bb864cce515cfbe8777136e6e8b72e1d6ce7783c4a13b
data/lib/composer.rb CHANGED
@@ -44,9 +44,11 @@ require 'composer/package/version/version_selector'
44
44
  # Dir[File.join(File.dirname(__FILE__), "composer/package/version/*.rb")].each {|file| require file }
45
45
 
46
46
  # /repository
47
+ require 'composer/repository/base_repository'
47
48
  require 'composer/repository/hash_repository'
48
49
  require 'composer/repository/writeable_hash_repository'
49
50
  require 'composer/repository/filesystem_repository'
51
+ require 'composer/repository/composite_repository'
50
52
 
51
53
  module Composer
52
54
  end
@@ -0,0 +1,48 @@
1
+ #
2
+ # This file was ported to ruby from Composer php source code.
3
+ # Original Source: Composer\Repository\RepositoryInterface.php
4
+ #
5
+ # (c) Nils Adermann <naderman@naderman.de>
6
+ # Jordi Boggiano <j.boggiano@seld.be>
7
+ #
8
+ # For the full copyright and license information, please view the LICENSE
9
+ # file that was distributed with this source code.
10
+ #
11
+
12
+ module Composer
13
+ module Repository
14
+ # Base repository.
15
+ #
16
+ # PHP Authors:
17
+ # Nils Adermann <naderman@naderman.de>
18
+ # Konstantin Kudryashov <ever.zet@gmail.com>
19
+ # Jordi Boggiano <j.boggiano@seld.
20
+ #
21
+ # Ruby Authors:
22
+ # Ioannis Kappas <ikappas@devworks.gr>
23
+ class BaseRepository
24
+ SEARCH_FULLTEXT = 0
25
+ SEARCH_NAME = 1
26
+
27
+ def package?
28
+ # implement inside child
29
+ end
30
+
31
+ def find_package(name, version)
32
+ # implement inside child
33
+ end
34
+
35
+ def find_packages(name, version = nil)
36
+ # implement inside child
37
+ end
38
+
39
+ def packages
40
+ # implement inside child
41
+ end
42
+
43
+ def search(query, mode = 0)
44
+ # implement inside child
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,132 @@
1
+ #
2
+ # This file was ported to ruby from Composer php source code.
3
+ # Original Source: Composer\Repository\CompositeRepository.php
4
+ #
5
+ # (c) Nils Adermann <naderman@naderman.de>
6
+ # Jordi Boggiano <j.boggiano@seld.be>
7
+ #
8
+ # For the full copyright and license information, please view the LICENSE
9
+ # file that was distributed with this source code.
10
+ #
11
+
12
+ module Composer
13
+ module Repository
14
+ # CompositeRepository repository.
15
+ #
16
+ # PHP Authors:
17
+ # Beau Simensen <beau@dflydev.com>
18
+ #
19
+ # Ruby Authors:
20
+ # Ioannis Kappas <ikappas@devworks.gr>
21
+ class CompositeRepository < Composer::Repository::BaseRepository
22
+ # Initializes filesystem repository.
23
+ # @param [Array] An array of reporitories
24
+ def initialize(repositories)
25
+ unless repositories
26
+ raise ArgumentError,
27
+ 'repositories must be specified'
28
+ end
29
+ unless repositories.is_a?(Array)
30
+ raise TypeError,
31
+ 'repositories type must be an \
32
+ Array of Composer::Repository::BaseRepository'
33
+ end
34
+ @repositories = []
35
+ repositories.each do |repository|
36
+ add_repository(repository)
37
+ end
38
+ end
39
+
40
+ def repositories
41
+ @repositories
42
+ end
43
+
44
+ def package?(package)
45
+ @repositories.each do |repo|
46
+ if repo.package?(package)
47
+ return true
48
+ end
49
+ end
50
+ false
51
+ end
52
+
53
+ def find_package(name, version = nil)
54
+ package = nil
55
+ @repositories.each do |repo|
56
+ package = repo.find_package(name, version)
57
+ break unless package.nil?
58
+ end
59
+ package
60
+ end
61
+
62
+ def find_packages(name, version = nil)
63
+ packages = []
64
+ @repositories.each do |repo|
65
+ repo_packages = repo.find_packages(name, version)
66
+ repo_packages.map { |p| packages.push(p) } unless repo_packages.empty?
67
+ end
68
+ packages
69
+ end
70
+
71
+ def search(query, mode = 0)
72
+ matches = []
73
+ @repositories.each do |repo|
74
+ repo_matches = repo.search(query, mode)
75
+ repo_matches.map{ |m| matches.push(m) } unless repo_matches.empty?
76
+ end
77
+ matches
78
+ end
79
+
80
+ # def filter_packages(callback, class_name = 'Composer::Package::Package')
81
+ # @repositories.each do |repo|
82
+ # if (false === repo.filter_packages(callback, class_name))
83
+ # return false
84
+ # end
85
+ # end
86
+ # true
87
+ # end
88
+
89
+ def packages
90
+ packages = []
91
+ @repositories.each do |repo|
92
+ repo_packages = repo.packages
93
+ repo_packages.map { |p| packages.push(p) } unless repo_packages.empty?
94
+ end
95
+ packages
96
+ end
97
+
98
+ def remove_package(package)
99
+ @repositories.each do |repo|
100
+ repo.remove_package(package)
101
+ end
102
+ end
103
+
104
+ def count
105
+ total = 0;
106
+ @repositories.each do |repo|
107
+ total += repo.count
108
+ end
109
+ total
110
+ end
111
+
112
+ def add_repository(repository)
113
+ unless repository
114
+ raise ArgumentError,
115
+ 'repository must be specified'
116
+ end
117
+ unless repository.is_a?(Composer::Repository::BaseRepository)
118
+ raise TypeError,
119
+ 'repository type must be a \
120
+ Composer::Repository::BaseRepository or superclass'
121
+ end
122
+ if repository.instance_of?(Composer::Repository::CompositeRepository)
123
+ repository.repositories.each do |repo|
124
+ add_repository(repo)
125
+ end
126
+ else
127
+ @repositories.push(repository)
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -11,7 +11,7 @@
11
11
 
12
12
  module Composer
13
13
  module Repository
14
- class HashRepository
14
+ class HashRepository < Composer::Repository::BaseRepository
15
15
  def initialize(packages = [])
16
16
  packages.each do |package|
17
17
  add_package(package)
@@ -23,17 +23,21 @@ module Composer
23
23
  name = name.downcase
24
24
 
25
25
  # normalize version
26
- if version != nil
26
+ if !version.nil?
27
27
  version_parser = Composer::Package::Version::VersionParser.new
28
28
  version = version_parser.normalize(version)
29
29
  end
30
30
 
31
+ match = nil
31
32
  packages.each do |package|
32
- if package.name === name && (nil === version || version === package.version)
33
- return package
33
+ if package.name === name
34
+ if version.nil? || package.version === version
35
+ match = package
36
+ break
37
+ end
34
38
  end
35
39
  end
36
-
40
+ match
37
41
  end
38
42
 
39
43
  def find_packages(name, version = nil)
@@ -49,40 +53,37 @@ module Composer
49
53
  matches = []
50
54
  packages.each do |package|
51
55
  if package.name === name && (nil === version || version === package.version)
52
- matches << package
56
+ matches.push(package)
53
57
  end
54
58
  end
55
59
  matches
56
60
  end
57
61
 
58
- def search(query, full_search = false)
62
+ def search(query, mode = 0)
59
63
  regex = /(?:#{query.split(/\s+/).join('|')})/i
60
64
  matches = {}
61
65
  packages.each do |package|
62
66
  name = package.name
63
67
 
64
68
  # already matched
65
- next if matches['name']
69
+ next if matches[name]
66
70
 
67
71
  # search
68
- if full_search
69
- next unless (
70
- package.instance_of?(Composer::Package::CompletePackage) &&
71
- regex.match("#{package.keywords.join(' ')} #{package.description}")
72
- )
73
- else
74
- next unless (
75
- full_search == false &&
76
- regex.match(name)
77
- )
72
+ unless regex.match(name)
73
+ unless mode === Composer::Repository::BaseRepository::SEARCH_FULLTEXT &&
74
+ package.instance_of?(Composer::Package::CompletePackage) &&
75
+ regex.match("#{package.keywords ? package.keywords.join(' ') : ''} #{package.description ? package.description : ''}")
76
+ next
77
+ end
78
78
  end
79
79
 
80
80
  matches[name] = {
81
81
  'name' => package.pretty_name,
82
82
  'description' => package.description,
83
83
  }
84
+
84
85
  end
85
- matches
86
+ matches.values
86
87
  end
87
88
 
88
89
  def package?(package)
@@ -25,9 +25,11 @@ module Composer
25
25
  end
26
26
 
27
27
  def write
28
+ # implement inside child
28
29
  end
29
30
 
30
31
  def reload
32
+ # implement inside child
31
33
  end
32
34
 
33
35
  def canonical_packages
@@ -1,3 +1,3 @@
1
1
  module Composer
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: php-composer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ioannis Kappas
@@ -153,6 +153,8 @@ files:
153
153
  - lib/composer/package/root_package.rb
154
154
  - lib/composer/package/version/version_parser.rb
155
155
  - lib/composer/package/version/version_selector.rb
156
+ - lib/composer/repository/base_repository.rb
157
+ - lib/composer/repository/composite_repository.rb
156
158
  - lib/composer/repository/filesystem_repository.rb
157
159
  - lib/composer/repository/hash_repository.rb
158
160
  - lib/composer/repository/writeable_hash_repository.rb