Skip to content

Commit 0722eec

Browse files
committed
change re.sub from rpartition
Signed-off-by: rpotter12 <rohitpotter12@gmail.com>
1 parent 157a647 commit 0722eec

5 files changed

Lines changed: 32 additions & 315 deletions

File tree

src/packagedcode/rubygems.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -667,23 +667,22 @@ def build_packages_from_gemspec(location):
667667
declared_license=declared_license
668668
)
669669

670-
dependencies = gemspec_data.get('dependencies')
670+
dependencies = gemspec_data.get('dependencies', {}) or {}
671671
package_dependencies = []
672-
if dependencies:
673-
for name, version in dependencies.items():
674-
package_dependencies.append(
675-
models.DependentPackage(
676-
purl=PackageURL(
677-
type='gem',
678-
name=name
679-
).to_string(),
680-
requirement=', '.join(version),
681-
scope='dependencies',
682-
is_runtime=True,
683-
is_optional=False,
684-
is_resolved=False,
685-
)
672+
for name, version in dependencies.items():
673+
package_dependencies.append(
674+
models.DependentPackage(
675+
purl=PackageURL(
676+
type='gem',
677+
name=name
678+
).to_string(),
679+
requirement=', '.join(version),
680+
scope='dependencies',
681+
is_runtime=True,
682+
is_optional=False,
683+
is_resolved=False,
686684
)
685+
)
687686
package.dependencies = package_dependencies
688687

689688
return package

src/packagedcode/spec.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,21 @@ def parse_spec(self, location):
6161

6262
for line in lines:
6363
if '.name' in line:
64-
name = re.sub(r'/*.*name.*?=', '', line)
65-
spec_data['name'] = get_stripped_data(name)
64+
name = line.rpartition('=')
65+
spec_data['name'] = get_stripped_data(name[2])
6666
elif '.version' in line and '.version.' not in line:
67-
version = re.sub(r'/*.*version.*?=', '', line)
68-
spec_data['version'] = get_stripped_data(version)
67+
version = line.rpartition('=')
68+
spec_data['version'] = get_stripped_data(version[2])
6969
elif '.license' in line:
70-
license_type = re.sub(r'/*.*license.*?=', '', line)
71-
spec_data['license'] = get_stripped_data(license_type)
70+
license_type = line.rpartition('=')
71+
spec_data['license'] = get_stripped_data(license_type[2])
7272
elif '.source' in line and '.source_files' not in line:
7373
source = re.sub(r'/*.*source.*?>', '', line)
7474
stripped_source = re.sub(r',.*', '', source)
7575
spec_data['source'] = get_stripped_data(stripped_source)
7676
elif '.email' in line:
77-
emails = re.sub(r'/*.*email.*?=', '', line)
78-
stripped_emails = get_stripped_data(emails)
77+
emails = line.rpartition('=')
78+
stripped_emails = get_stripped_data(emails[2])
7979
stripped_emails = stripped_emails.strip()
8080
stripped_emails = stripped_emails.split(',')
8181
spec_data['email'] = stripped_emails
@@ -87,17 +87,19 @@ def parse_spec(self, location):
8787
stripped_authors = stripped_authors.split(',')
8888
spec_data['author'] = stripped_authors
8989
elif '.summary' in line:
90-
summary = re.sub(r'/*.*summary.*?=', '', line)
91-
spec_data['summary'] = get_stripped_data(summary)
90+
summary = line.rpartition('=')
91+
spec_data['summary'] = get_stripped_data(summary[2])
9292
elif '.description' in line:
9393
if location.endswith('.gemspec'):
94-
desc = re.sub(r'/*.*description.*?=', '', line)
95-
spec_data['description'] = get_stripped_data(desc)
94+
# FIXME: description can be in single or multi-lines
95+
# There are many different ways to write description.
96+
desc = line.rpartition('=')
97+
spec_data['description'] = get_stripped_data(desc[2])
9698
else:
97-
spec_data['description'] = get_description(location)
99+
spec_data['description'] = get_description(line)
98100
elif '.homepage' in line:
99-
homepage_url = re.sub(r'/*.*homepage.*?=', '', line)
100-
spec_data['homepage_url'] = get_stripped_data(homepage_url)
101+
homepage_url = line.rpartition('=')
102+
spec_data['homepage_url'] = get_stripped_data(homepage_url[2])
101103

102104
parser = GemfileParser(location)
103105
deps = parser.parse()
@@ -113,7 +115,7 @@ def parse_spec(self, location):
113115

114116
def get_stripped_data(line):
115117
"""
116-
Return data after removing unnecessary special character and space.
118+
Return line after removing unnecessary special character and space.
117119
"""
118120
if '#' in line:
119121
line = line[:line.index('#')]

tests/packagedcode/data/rubygems/gemspec/cocoapods.gemspec

Lines changed: 0 additions & 62 deletions
This file was deleted.

tests/packagedcode/data/rubygems/gemspec/cocoapods.gemspec.expected.json

Lines changed: 0 additions & 216 deletions
This file was deleted.

tests/packagedcode/test_rubygems.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,6 @@ def test_rubygems_cat_gemspec(self):
7373
packages = rubygems.RubyGem.recognize(test_file)
7474
self.check_packages(packages, expected_loc, regen=False)
7575

76-
def test_rubygems_cocoapods_gemspec(self):
77-
test_file = self.get_test_loc('rubygems/gemspec/cocoapods.gemspec')
78-
expected_loc = self.get_test_loc('rubygems/gemspec/cocoapods.gemspec.expected.json')
79-
packages = rubygems.RubyGem.recognize(test_file)
80-
self.check_packages(packages, expected_loc, regen=False)
81-
8276
def test_rubygems_github_gemspec(self):
8377
test_file = self.get_test_loc('rubygems/gemspec/github.gemspec')
8478
expected_loc = self.get_test_loc('rubygems/gemspec/github.gemspec.expected.json')

0 commit comments

Comments
 (0)