php-composer 0.2.0 → 0.3.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.
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