Skip to content

Instantly share code, notes, and snippets.

@squeedee
Last active February 21, 2018 15:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save squeedee/62504de635b57f3af028347dde3d70dc to your computer and use it in GitHub Desktop.
Save squeedee/62504de635b57f3af028347dde3d70dc to your computer and use it in GitHub Desktop.
Refactoring with extract method Vs Comments
def pivnet_products(product_pattern=""):
"""
gets all pivnet products that match exactly with the product pattern, or partial matches
when there are no exact matches.
"""
url = 'https://network.pivotal.io/api/v2/products'
all_products = json.load(pivnet_get(url))
products = [p for p in all_products["products"] if product_pattern == p["name"]]
if len(products) == 0:
products = [p for p in all_products["products"] if product_pattern in p["name"]]
return products
def exact_matches(all_products, product_name_filter):
return [p for p in all_products["products"] if product_name_filter == p["name"]]
def fuzzy_matches(all_products, product_name_filter):
return [p for p in all_products["products"] if product_name_filter in p["name"]]
def exact_or_fuzzy_match(all_products, product_name_filter):
matching_products = exact_matches(all_products, product_name_filter)
if len(matching_products) == 0:
matching_products = fuzzy_matches(all_products, product_name_filter)
return matching_products
def pivnet_products(product_name_filter=""):
url = 'https://network.pivotal.io/api/v2/products'
all_products = json.load(pivnet_get(url))
matching_products = exact_or_fuzzy_match(all_products, product_name_filter)
return matching_products
def pivnet_products(product_pattern=""):
url = 'https://network.pivotal.io/api/v2/products'
all_products = json.load(pivnet_get(url))
products = [p for p in all_products["products"] if product_pattern == p["name"]]
if len(products) == 0:
products = [p for p in all_products["products"] if product_pattern in p["name"]]
return products
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment