]> git.bundesbrandschatzamt.de Git - emacsconfig.git/commitdiff
Update org-chef.
authorAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Tue, 22 Jan 2019 15:48:10 +0000 (16:48 +0100)
committerAndreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
Tue, 22 Jan 2019 15:48:10 +0000 (16:48 +0100)
Signed-off-by: Andreas Gerler <baronNOSPAMbundesbrandschatzamt.de>
36 files changed:
elpa/org-chef-20181105.2035/org-chef-all-recipes.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-autoloads.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-budget-bytes.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-chef-koch.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-cultures-for-health.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-genius-kitchen.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-marmiton.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-martha-stewart.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-nytimes.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-pkg.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-reluctant-gourmet.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-serious-eats.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-simply-recipes.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-steamy-kitchen.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-utils.el [deleted file]
elpa/org-chef-20181105.2035/org-chef-wordpress.el [deleted file]
elpa/org-chef-20181105.2035/org-chef.el [deleted file]
elpa/org-chef-20181202.2221/org-chef-all-recipes.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-autoloads.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-budget-bytes.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-chef-koch.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-cultures-for-health.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-genius-kitchen.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-marmiton.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-martha-stewart.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-nytimes.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-pkg.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-reluctant-gourmet.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-saveur.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-serious-eats.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-simply-recipes.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-steamy-kitchen.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-utils.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef-wordpress.el [new file with mode: 0644]
elpa/org-chef-20181202.2221/org-chef.el [new file with mode: 0644]
elpa/org-chef-readme.txt [deleted file]

diff --git a/elpa/org-chef-20181105.2035/org-chef-all-recipes.el b/elpa/org-chef-20181105.2035/org-chef-all-recipes.el
deleted file mode 100644 (file)
index 2556af8..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-;;; org-chef-all-recipes.el --- org-chef allrecipes fetching.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from allrecipes.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-all-recipes-extract-name (dom)
-  "Get the name of a recipe from an allrecipes DOM."
-  (dom-text (car (dom-by-class dom "^recipe-summary__h1$"))))
-
-
-(defun org-chef-all-recipes-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an allrecipes DOM."
-  (mapcar #'(lambda (n) (string-trim (dom-text n))) (dom-elements dom 'itemprop "^recipeIngredient$")))
-
-
-(defun org-chef-all-recipes-extract-servings (dom)
-  "Get the number of servings for a recipe from an allrecipes DOM."
-  (dom-attr (car (dom-by-id dom "metaRecipeServings")) 'content))
-
-
-(defun org-chef-all-recipes-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an allrecipes DOM."
-  (dom-texts (car (dom-elements dom 'itemprop "^prepTime$"))))
-
-
-(defun org-chef-all-recipes-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an allrecipes DOM."
-  (dom-texts (car (dom-elements dom 'itemprop "^cookTime$"))))
-
-
-(defun org-chef-all-recipes-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an allrecipes DOM."
-  (dom-texts (car (dom-elements dom 'itemprop "^totalTime$"))))
-
-
-(defun org-chef-all-recipes-extract-directions (dom)
-  "Get the directions for a recipe from an allrecipes DOM."
-  (org-chef-remove-empty-strings (mapcar #'(lambda (n) (string-trim (dom-text n))) (dom-by-class dom  "^recipe-directions__list--item$"))))
-
-
-(defun org-chef-all-recipes-fetch (url)
-  "Given an allrecipes.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
-
-      `((name . ,(org-chef-all-recipes-extract-name dom))
-        (ingredients . ,(org-chef-all-recipes-extract-ingredients dom))
-        (servings . ,(org-chef-all-recipes-extract-servings dom))
-        (prep-time . ,(org-chef-all-recipes-extract-prep-time dom))
-        (cook-time . ,(org-chef-all-recipes-extract-cook-time dom))
-        (ready-in . ,(org-chef-all-recipes-extract-ready-in dom))
-        (directions . ,(org-chef-all-recipes-extract-directions dom))
-        (source-url . ,url)))))
-
-
-(provide 'org-chef-all-recipes)
-;;; org-chef-all-recipes.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-autoloads.el b/elpa/org-chef-20181105.2035/org-chef-autoloads.el
deleted file mode 100644 (file)
index f3a927b..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-;;; org-chef-autoloads.el --- automatically extracted autoloads
-;;
-;;; Code:
-
-(add-to-list 'load-path (directory-file-name
-                         (or (file-name-directory #$) (car load-path))))
-
-\f
-;;;### (autoloads nil "org-chef" "org-chef.el" (0 0 0 0))
-;;; Generated autoloads from org-chef.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef" '("org-chef-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-all-recipes" "org-chef-all-recipes.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-all-recipes.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-all-recipes" '("org-chef-all-recipes-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-budget-bytes" "org-chef-budget-bytes.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-budget-bytes.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-budget-bytes" '("org-chef-budget-bytes-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-chef-koch" "org-chef-chef-koch.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-chef-koch.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-chef-koch" '("org-chef-chef-koch-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-cultures-for-health" "org-chef-cultures-for-health.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-cultures-for-health.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-cultures-for-health" '("org-chef-cultures-for-health-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-genius-kitchen" "org-chef-genius-kitchen.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-genius-kitchen.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-genius-kitchen" '("org-chef-genius-kitchen-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-marmiton" "org-chef-marmiton.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-marmiton.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-marmiton" '("org-chef-marmiton-" "extract-dom-text" "sanitize")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-martha-stewart" "org-chef-martha-stewart.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-martha-stewart.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-martha-stewart" '("org-chef-martha-stewart-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-nytimes" "org-chef-nytimes.el" (0
-;;;;;;  0 0 0))
-;;; Generated autoloads from org-chef-nytimes.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-nytimes" '("org-chef-nytimes-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-reluctant-gourmet" "org-chef-reluctant-gourmet.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-reluctant-gourmet.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-reluctant-gourmet" '("org-chef-reluctant-gourmet-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-serious-eats" "org-chef-serious-eats.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-serious-eats.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-serious-eats" '("org-chef-serious-eats-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-simply-recipes" "org-chef-simply-recipes.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-simply-recipes.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-simply-recipes" '("org-chef-simply-recipes-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-steamy-kitchen" "org-chef-steamy-kitchen.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-steamy-kitchen.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-steamy-kitchen" '("org-chef-steamy-kitchen-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-utils" "org-chef-utils.el" (0 0 0
-;;;;;;  0))
-;;; Generated autoloads from org-chef-utils.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-utils" '("org-chef-")))
-
-;;;***
-\f
-;;;### (autoloads nil "org-chef-wordpress" "org-chef-wordpress.el"
-;;;;;;  (0 0 0 0))
-;;; Generated autoloads from org-chef-wordpress.el
-
-(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-wordpress" '("org-chef-")))
-
-;;;***
-\f
-;;;### (autoloads nil nil ("org-chef-pkg.el") (0 0 0 0))
-
-;;;***
-\f
-;; Local Variables:
-;; version-control: never
-;; no-byte-compile: t
-;; no-update-autoloads: t
-;; coding: utf-8
-;; End:
-;;; org-chef-autoloads.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-budget-bytes.el b/elpa/org-chef-20181105.2035/org-chef-budget-bytes.el
deleted file mode 100644 (file)
index 07f83c7..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-;;; org-chef-budget-bytes.el --- org-chef budgetbytes fetching.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from budgetbytes.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-budget-bytes-extract-name (dom)
-  "Get the name of a recipe from an budgetbytes DOM."
-  (dom-text (car (dom-by-class dom "^wprm-recipe-name$"))))
-
-
-(defun org-chef-budget-bytes-ingredient-to-string (dom)
-  (let* ((amount (string-trim (dom-text (car (dom-by-class dom "wprm-recipe-ingredient-amount")))))
-         (unit (string-trim (dom-text (car (dom-by-class dom "wprm-recipe-ingredient-unit")))))
-         (name (string-trim (dom-text (car (dom-by-class dom "wprm-recipe-ingredient-name"))))))
-    (format "%s %s %s" amount unit name)))
-
-
-(defun org-chef-budget-bytes-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an budgetbytes DOM."
-  (mapcar #'(lambda (n) (org-chef-budget-bytes-ingredient-to-string n))
-          (dom-by-class dom "^wprm-recipe-ingredient$")))
-
-
-(defun org-chef-budget-bytes-extract-servings (dom)
-  "Get the number of servings for a recipe from an budgetbytes DOM."
-  (dom-text (car (dom-by-class dom "wprm-recipe-servings$"))))
-
-
-(defun org-chef-budget-bytes-time-to-string (dom)
-  (let* ((hours (string-trim (dom-text (car (dom-by-class dom "hours$")))))
-         (minutes (string-trim (dom-text (car (dom-by-class dom "minutes$")))))
-         (hour-string (if (/= (length hours) 0) (format "%s hours " hours) ""))
-         (minute-string (if (/= (length minutes) 0) (format "%s minutes" minutes) "")))
-    (string-trim (concat hour-string minute-string))))
-
-
-(defun org-chef-budget-bytes-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an budgetbytes DOM."
-  (org-chef-budget-bytes-time-to-string (car (dom-by-class dom "wprm-recipe-prep-time-container"))))
-
-
-(defun org-chef-budget-bytes-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an budgetbytes DOM."
-  (org-chef-budget-bytes-time-to-string (car (dom-by-class dom "wprm-recipe-cook-time-container"))))
-
-
-(defun org-chef-budget-bytes-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an budgetbytes DOM."
-  (org-chef-budget-bytes-time-to-string (car (dom-by-class dom "wprm-recipe-total-time-container"))))
-
-
-(defun org-chef-budget-bytes-extract-directions (dom)
-  "Get the directions for a recipe from an budgetbytes DOM."
-  (mapcar #'(lambda (n) (string-trim (dom-texts n)))
-          (dom-by-class dom "wprm-recipe-instruction-text")))
-
-
-(defun org-chef-budget-bytes-fetch (url)
-  "Given an budgetbytes.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
-
-      `((name . ,(org-chef-budget-bytes-extract-name dom))
-        (ingredients . ,(org-chef-budget-bytes-extract-ingredients dom))
-        (servings . ,(org-chef-budget-bytes-extract-servings dom))
-        (prep-time . ,(org-chef-budget-bytes-extract-prep-time dom))
-        (cook-time . ,(org-chef-budget-bytes-extract-cook-time dom))
-        (ready-in . ,(org-chef-budget-bytes-extract-ready-in dom))
-        (directions . ,(org-chef-budget-bytes-extract-directions dom))
-        (source-url . ,url)))))
-
-
-(provide 'org-chef-budget-bytes)
-;;; org-chef-budget-bytes.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-chef-koch.el b/elpa/org-chef-20181105.2035/org-chef-chef-koch.el
deleted file mode 100644 (file)
index 203931c..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-;;; org-chef-chef-koch.el --- Functions for fetching recipes from chefkoch.de.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from chefkoch.de.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-chef-koch-extract-name (dom)
-  "Get the name of a recipe from an chefkoch DOM."
-  (dom-text (car (dom-by-class dom "page-title"))))
-
-
-(defun org-chef-chef-koch-ingredient-to-string (dom)
-  (let ((amount (replace-regexp-in-string " " " " (string-trim (dom-texts (car (dom-by-tag dom 'td))))))
-        (name (string-trim (dom-texts (cadr (dom-by-tag dom 'td))))))
-    (format "%s %s" amount name)))
-
-
-(defun org-chef-chef-koch-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an chefkoch DOM."
-  (mapcar #'org-chef-chef-koch-ingredient-to-string (dom-by-tag (dom-by-class dom "^incredients$") 'tr)))
-
-
-(defun org-chef-chef-koch-extract-servings (dom)
-  "Get the number of servings for a recipe from an chefkoch DOM."
-  (dom-attr (dom-elements dom 'name "^portionen$") 'value))
-
-
-(defun org-chef-chef-koch-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an chefkoch DOM."
-  (let ((str (replace-regexp-in-string "\n" " " (dom-texts (dom-by-id dom "^preparation-info$")))))
-    (string-match "Arbeitszeit:[[:space:]]+ca. \\(?1:[^\.]*\\)\." str)
-    (match-string 1 str)))
-
-
-(defun org-chef-chef-koch-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an chefkoch DOM."
-  (let ((str (replace-regexp-in-string "\n" " " (dom-texts (dom-by-id dom "^preparation-info$")))))
-    (string-match "Koch-/Backzeit:[[:space:]]+ca. \\(?1:[^\.]*\\)\." str)
-    (match-string 1 str)))
-
-
-(defun org-chef-chef-koch-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an chefkoch DOM."
-  "")
-
-
-(defun org-chef-chef-koch-extract-directions (dom)
-  "Get the directions for a recipe from an chefkoch DOM."
-  (with-temp-buffer
-    (insert (string-trim (dom-texts (dom-by-class dom "^instructions"))))
-    (delete-trailing-whitespace)
-    (split-string (buffer-string) "\n")))
-
-
-(defun org-chef-chef-koch-from-dom (dom)
-  "Given a chefkoch.de DOM, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions"
-  (let* ((prep-time (org-chef-chef-koch-extract-prep-time dom))
-         (cook-time (org-chef-chef-koch-extract-cook-time dom))
-         (total-time (org-chef-chef-koch-extract-ready-in dom)))
-
-    `((ingredients . ,(org-chef-chef-koch-extract-ingredients dom))
-      (name . ,(org-chef-chef-koch-extract-name dom))
-      (servings . ,(org-chef-chef-koch-extract-servings dom))
-      (prep-time . ,prep-time)
-      (cook-time . ,cook-time)
-      (ready-in . ,total-time)
-      (directions . ,(org-chef-chef-koch-extract-directions dom)))))
-
-
-(defun org-chef-chef-koch-fetch (url)
-  "Given a chefkoch.de URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
-      (cons `(source-url . ,url) (org-chef-chef-koch-from-dom dom)))))
-
-
-(provide 'org-chef-chef-koch)
-;;; org-chef-chef-koch.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-cultures-for-health.el b/elpa/org-chef-20181105.2035/org-chef-cultures-for-health.el
deleted file mode 100644 (file)
index d43d703..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-;;; org-chef-cultures-for-health.el --- Functions for fetching recipes from culturesforhealth.com.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from culturesforhealth.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-cultures-for-health-extract-name (dom)
-  "Get the name of a recipe from an culturesforhealth DOM."
-  (dom-text (car (dom-elements dom 'itemprop "^name$"))))
-
-
-(defun org-chef-cultures-for-health-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an culturesforhealth DOM."
-  (mapcar 'dom-texts (dom-elements dom 'itemprop "^ingredients$")))
-
-
-(defun org-chef-cultures-for-health-extract-directions (dom)
-  "Get the directions for a recipe from an culturesforhealth DOM."
-  (mapcar #'dom-texts (org-chef-dom-children (cadr (org-chef-dom-children (car (dom-elements dom 'itemprop "^recipeInstructions$")))))))
-
-
-(defun org-chef-cultures-for-health-from-dom (dom)
-  "Given a culturesforhealth.com DOM, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions"
-  `((ingredients . ,(org-chef-cultures-for-health-extract-ingredients dom))
-    (name . ,(org-chef-cultures-for-health-extract-name dom)
-          )
-    (servings . nil)
-    (prep-time . nil)
-    (cook-time . nil)
-    (ready-in . nil)
-    (directions . ,(org-chef-cultures-for-health-extract-directions dom))))
-
-
-(defun org-chef-cultures-for-health-fetch (url)
-  "Given a culturesforhealth.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
-      (cons `(source-url . ,url) (org-chef-cultures-for-health-from-dom dom)))))
-
-
-(provide 'org-chef-cultures-for-health)
-;;; org-chef-cultures-for-health.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-genius-kitchen.el b/elpa/org-chef-20181105.2035/org-chef-genius-kitchen.el
deleted file mode 100644 (file)
index 2c2de7a..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-;;; org-chef-genius-kitchen.el --- Functions for fetching recipes from geniuskitchen.com.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from geniuskitchen.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-genius-kitchen-extract-name (dom)
-  "Get the name of a recipe from an geniuskitchen DOM."
-  (dom-text (caddr
-             (seq-filter (lambda (x) (not (stringp x)))
-                         (dom-children (car (dom-by-class dom "^recipe-header")))))))
-
-
-(defun org-chef-genius-kitchen-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an geniuskitchen DOM."
-  (mapcar #'dom-texts (dom-elements dom 'data-ingredient ".*")))
-
-
-(defun org-chef-genius-kitchen-extract-servings (dom)
-  "Get the number of servings for a recipe from an geniuskitchen DOM."
-  (dom-text (car (dom-by-class (car (dom-by-class dom "^servings$")) "count"))))
-
-
-(defun org-chef-genius-kitchen-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an geniuskitchen DOM."
-  (string-trim (dom-text (car (dom-by-class dom "time")))))
-
-
-(defun org-chef-genius-kitchen-extract-directions (dom)
-  "Get the directions for a recipe from an geniuskitchen DOM."
-  (let ((directions-list (dom-by-tag (car (dom-by-class dom "directions-inner")) 'li)))
-    (org-chef-remove-empty-strings
-     (mapcar #'(lambda (n) (string-trim (dom-text n))) directions-list))))
-
-
-(defun org-chef-genius-kitchen-fetch (url)
-  "Given a geniuskitchen.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
-      `((name . ,(org-chef-genius-kitchen-extract-name dom))
-        (ingredients . ,(org-chef-genius-kitchen-extract-ingredients dom))
-        (servings . ,(org-chef-genius-kitchen-extract-servings dom))
-        (prep-time . nil)
-        (cook-time . nil)
-        (ready-in . ,(org-chef-genius-kitchen-extract-ready-in dom))
-        (directions . ,(org-chef-genius-kitchen-extract-directions dom))
-        (source-url . ,url)))))
-
-
-(provide 'org-chef-genius-kitchen)
-;;; org-chef-genius-kitchen.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-marmiton.el b/elpa/org-chef-20181105.2035/org-chef-marmiton.el
deleted file mode 100644 (file)
index 57dd7e2..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-;;; org-chef-marmiton.el --- Functions for fetching recipes from marmiton.org.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck/Sébastien Le Maguer
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>/Sébastien Le Maguer <seb.lemaguerNOSPAMgmail.com>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck/Sébastien Le Maguer
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from marmiton.org.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun sanitize (str)
-  "Sanitize the STR by removing beginning/trailing spaces extracted from a marmiton dom."
-  (replace-regexp-in-string "^[        \r\n]*\\(.*[^   \r\n]\\)[       \r\n]*$" "\\1" str))
-
-(defun extract-dom-text (dom)
-  "Embedded the operation santize of dom-text from a marmiton DOM."
-  (sanitize (dom-text dom)))
-
-(defun org-chef-marmiton-extract-name (dom)
-  "Get the name of a recipe from a marmiton DOM."
-  (dom-text (car (dom-elements dom 'class "^main-title $"))))
-
-(defun org-chef-marmiton-extract-current-ingredient (dom)
-  "Extract element for the current ingredient from a marmiton DOM."
-  (concat
-   (extract-dom-text (dom-elements dom 'class "^recipe-ingredient-qt$"))
-   " "
-   (extract-dom-text (dom-elements dom 'class "^ingredient$"))))
-
-(defun org-chef-marmiton-extract-ingredients (dom)
-  "Get the ingredients for a recipe from a marmiton DOM."
-  (mapcar 'org-chef-marmiton-extract-current-ingredient (dom-elements dom 'class "^recipe-ingredients__list__item$")))
-
-(defun org-chef-marmiton-extract-directions (dom)
-  "Get the directions for a recipe from a marmiton DOM."
-
-  (mapcar 'extract-dom-text (dom-elements dom 'class "^recipe-preparation__list__item$")))
-
-(defun org-chef-marmiton-extract-prep-time (dom)
-  "Get the preparation time for a recipe from a marmiton DOM."
-  (extract-dom-text
-   (dom-elements (dom-elements dom 'class "recipe-infos__timmings__preparation")
-                'class "^recipe-infos__timmings__value$")))
-
-(defun org-chef-marmiton-extract-cook-time (dom)
-  "Extract the cooking time for a recipe from a marmiton DOM."
-  (extract-dom-text
-   (dom-elements (dom-elements dom 'class "recipe-infos__timmings__cooking")
-                'class "^recipe-infos__timmings__value$")))
-
-
-(defun org-chef-marmiton-extract-servings (dom)
-  (dom-text (car (dom-elements dom 'class "^title-2 recipe-infos__quantity__value$"))))
-
-
-
-(defun org-chef-marmiton-from-dom (dom)
-  "Given a marmiton.org DOM, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions"
-  `((ingredients . ,(org-chef-marmiton-extract-ingredients dom))
-    (name . ,(org-chef-marmiton-extract-name dom))
-    (servings . ,(org-chef-marmiton-extract-servings dom))
-    (prep-time . ,(org-chef-marmiton-extract-prep-time dom))
-    (cook-time . ,(org-chef-marmiton-extract-cook-time dom))
-    (ready-in . nil)
-    (directions . ,(org-chef-marmiton-extract-directions dom))))
-
-
-(defun org-chef-marmiton-fetch (url)
-  "Given a marmiton.org URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
-      (cons `(source-url . ,url) (org-chef-marmiton-from-dom dom)))))
-
-(provide 'org-chef-marmiton)
-;;; org-chef-marmiton.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-martha-stewart.el b/elpa/org-chef-20181105.2035/org-chef-martha-stewart.el
deleted file mode 100644 (file)
index a2ee19c..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-;;; org-chef-martha-stewart.el --- org-chef marthastewart fetching.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from marthastewart.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-martha-stewart-extract-name (dom)
-  "Get the name of a recipe from an marthastewart DOM."
-  (string-trim (dom-text (car (dom-by-class dom "^page-title$")))))
-
-
-(defun org-chef-martha-stewart-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an marthastewart DOM."
-  (mapcar #'(lambda (n) (string-trim (dom-text n)))
-          (dom-by-class dom "^component-text$")))
-
-
-(defun org-chef-martha-stewart-extract-servings (dom)
-  "Get the number of servings for a recipe from an marthastewart DOM."
-  (string-trim (dom-text (car (dom-by-class dom "servings-data$")))))
-
-
-(defun org-chef-martha-stewart-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an marthastewart DOM."
-  (string-trim (dom-text (car (dom-by-class dom "prep-time-data$")))))
-
-
-(defun org-chef-martha-stewart-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an marthastewart DOM."
-  nil)
-
-
-(defun org-chef-martha-stewart-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an marthastewart DOM."
-  (string-trim (dom-text (car (dom-by-class dom "total-time-data$")))))
-
-
-(defun org-chef-martha-stewart-extract-directions (dom)
-  "Get the directions for a recipe from an marthastewart DOM."
-  (mapcar #'(lambda (n) (string-trim (dom-texts (dom-children n))))
-          (dom-by-class dom "^directions-item-text$")))
-
-
-(defun org-chef-martha-stewart-fetch (url)
-  "Given an marthastewart.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
-
-      `((name . ,(org-chef-martha-stewart-extract-name dom))
-        (ingredients . ,(org-chef-martha-stewart-extract-ingredients dom))
-        (servings . ,(org-chef-martha-stewart-extract-servings dom))
-        (prep-time . ,(org-chef-martha-stewart-extract-prep-time dom))
-        (cook-time . ,(org-chef-martha-stewart-extract-cook-time dom))
-        (ready-in . ,(org-chef-martha-stewart-extract-ready-in dom))
-        (directions . ,(org-chef-martha-stewart-extract-directions dom))
-        (source-url . ,url)))))
-
-
-(provide 'org-chef-martha-stewart)
-;;; org-chef-martha-stewart.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-nytimes.el b/elpa/org-chef-20181105.2035/org-chef-nytimes.el
deleted file mode 100644 (file)
index 3712c58..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-;;; org-chef-nytimes.el --- Functions for fetching recipes from nytimes.com.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck/Asilata Bapat
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>/Asilata Bapat <asilataNOSPAMalum.mit.edu>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck/Asilata Bapat
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from nytimes.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-nytimes-extract-name (dom)
-  "Get the name of a recipe from an nytimes DOM."
-  (string-trim (dom-text (car (dom-by-class dom "recipe-title")))))
-
-
-(defun org-chef-nytimes-ingredient-to-string (dom)
-  "Extract string representation of a single ingredient from an nytimes DOM."
-  (replace-regexp-in-string
-   " \\([,\.]\\)" "\\1"
-   (string-join (org-chef-remove-empty-strings (mapcar 'string-trim (dom-strings dom))) " ")))
-
-(defun org-chef-nytimes-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an nytimes DOM."
-  (mapcar 'org-chef-nytimes-ingredient-to-string
-          (dom-elements dom 'itemprop "recipeIngredient")))
-
-
-(defun org-chef-nytimes-extract-servings (dom)
-  "Get the number of servings for a recipe from an nytimes DOM."
-  (replace-regexp-in-string " servings" "" (dom-text (car (dom-elements dom 'itemprop "recipeYield")))))
-
-
-(defun org-chef-nytimes-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an nytimes DOM."
-  "")
-
-
-(defun org-chef-nytimes-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an nytimes DOM."
-  "")
-
-
-(defun org-chef-nytimes-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an nytimes DOM."
-  (dom-texts (dom-by-class (cadr (dom-by-tag (dom-by-class dom "recipe-time-yield") 'li)) "recipe-yield-value")))
-
-
-(defun org-chef-nytimes-extract-directions (dom)
-  "Get the directions for a recipe from an nytimes DOM."
-  (mapcar 'dom-texts (dom-by-tag (dom-elements dom 'itemprop "recipeInstructions") 'li)))
-
-
-(defun org-chef-nytimes-from-dom (dom)
-  "Given an nytimes.com DOM, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions"
-  (let* ((prep-time (org-chef-nytimes-extract-prep-time dom))
-         (cook-time (org-chef-nytimes-extract-cook-time dom))
-         (total-time (org-chef-nytimes-extract-ready-in dom)))
-
-    `((ingredients . ,(org-chef-nytimes-extract-ingredients dom))
-      (name . ,(org-chef-nytimes-extract-name dom))
-      (servings . ,(org-chef-nytimes-extract-servings dom))
-      (prep-time . ,prep-time)
-      (cook-time . ,cook-time)
-      (ready-in . ,total-time)
-      (directions . ,(org-chef-nytimes-extract-directions dom)))))
-
-
-(defun org-chef-nytimes-fetch (url)
-  "Given an nytimes.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
-      (cons `(source-url . ,url) (org-chef-nytimes-from-dom dom)))))
-
-
-(provide 'org-chef-nytimes)
-;;; org-chef-nytimes.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-pkg.el b/elpa/org-chef-20181105.2035/org-chef-pkg.el
deleted file mode 100644 (file)
index 9340d6f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-(define-package "org-chef" "20181105.2035" "Cookbook and recipe management with org-mode."
-  '((org "0")
-    (emacs "24"))
-  :keywords
-  '("convenience" "abbrev" "outlines" "org" "food" "recipes" "cooking")
-  :authors
-  '(("Calvin Beck" . "hobbesNOSPAMualberta.ca"))
-  :maintainer
-  '("Calvin Beck" . "hobbesNOSPAMualberta.ca")
-  :url "https://github.com/Chobbes/org-chef")
-;; Local Variables:
-;; no-byte-compile: t
-;; End:
diff --git a/elpa/org-chef-20181105.2035/org-chef-reluctant-gourmet.el b/elpa/org-chef-20181105.2035/org-chef-reluctant-gourmet.el
deleted file mode 100644 (file)
index 47e75e9..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-;;; org-chef-reluctant-gourmet.el --- Functions for fetching recipes from reluctantgourmet.com.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from reluctantgourmet.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-reluctant-gourmet-extract-name (dom)
-  "Get the name of a recipe from an reluctantgourmet DOM."
-  (dom-text (car (dom-by-id dom "zlrecipe-title"))))
-
-
-(defun org-chef-reluctant-gourmet-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an reluctantgourmet DOM."
-  (mapcar #'(lambda (n) (string-trim (dom-text n))) (dom-by-class dom "^ingredient$")))
-
-
-(defun org-chef-reluctant-gourmet-extract-servings (dom)
-  "Get the number of servings for a recipe from an reluctantgourmet DOM."
-  (dom-texts (car (dom-elements dom 'itemprop "^recipeYield$"))))
-
-
-(defun org-chef-reluctant-gourmet-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an reluctantgourmet DOM."
-  (dom-texts (car (dom-elements dom 'itemprop "^prepTime$"))))
-
-
-(defun org-chef-reluctant-gourmet-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an reluctantgourmet DOM."
-  (dom-texts (car (dom-elements dom 'itemprop "^cookTime$"))))
-
-
-(defun org-chef-reluctant-gourmet-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an reluctantgourmet DOM."
-  (dom-texts (car (dom-elements dom 'itemprop "^totalTime$"))))
-
-
-(defun org-chef-reluctant-gourmet-extract-directions (dom)
-  "Get the directions for a recipe from an reluctantgourmet DOM."
-  (mapcar #'dom-text (seq-filter (lambda (x) (not (stringp x)))
-                                 (dom-elements dom 'itemprop "^recipeInstructions$"))))
-
-
-(defun org-chef-reluctant-gourmet-from-dom (dom)
-  "Given a reluctantgourmet.com DOM, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions"
-  (let* ((prep-time (org-chef-reluctant-gourmet-extract-prep-time dom))
-         (cook-time (org-chef-reluctant-gourmet-extract-cook-time dom))
-         (total-time (org-chef-reluctant-gourmet-extract-ready-in dom)))
-
-    `((ingredients . ,(org-chef-reluctant-gourmet-extract-ingredients dom))
-      (name . ,(org-chef-reluctant-gourmet-extract-name dom))
-      (servings . ,(org-chef-reluctant-gourmet-extract-servings dom))
-      (prep-time . ,prep-time)
-      (cook-time . ,cook-time)
-      (ready-in . ,total-time)
-      (directions . ,(org-chef-reluctant-gourmet-extract-directions dom)))))
-
-
-(defun org-chef-reluctant-gourmet-fetch (url)
-  "Given a reluctantgourmet.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
-      (cons `(source-url . ,url) (org-chef-reluctant-gourmet-from-dom dom)))))
-
-
-(provide 'org-chef-reluctant-gourmet)
-;;; org-chef-reluctant-gourmet.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-serious-eats.el b/elpa/org-chef-20181105.2035/org-chef-serious-eats.el
deleted file mode 100644 (file)
index 0ed4300..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-;;; org-chef-serious-eats.el --- org-chef seriouseats fetching.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from seriouseats.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-serious-eats-extract-name (dom)
-  "Get the name of a recipe from an seriouseats DOM."
-  (dom-text (car (dom-elements dom 'itemprop "^name$"))))
-
-
-(defun org-chef-serious-eats-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an seriouseats DOM."
-  (mapcar 'dom-texts (dom-elements dom 'itemprop "^recipeIngredient$")))
-
-
-(defun org-chef-serious-eats-extract-servings (dom)
-  "Get the number of servings for a recipe from an seriouseats DOM."
-  (dom-text (car (dom-elements dom 'itemprop "^recipeYield$"))))
-
-
-(defun org-chef-serious-eats-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an seriouseats DOM."
-  (dom-text (car (dom-by-class
-                  (cadr
-                   (org-chef-dom-children
-                    (car (dom-by-class dom "^recipe-about$"))))
-                  "info"))))
-
-
-(defun org-chef-serious-eats-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an seriouseats DOM."
-  nil)
-
-
-(defun org-chef-serious-eats-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an seriouseats DOM."
-  (dom-text (car (dom-by-class
-                  (caddr
-                   (org-chef-dom-children
-                    (car (dom-by-class dom "^recipe-about$"))))
-                  "info"))))
-
-
-(defun org-chef-serious-eats-extract-directions (dom)
-  "Get the directions for a recipe from an seriouseats DOM."
-  (mapcar #'(lambda (n) (string-trim (dom-texts (dom-children n))))
-          (dom-by-class dom "^recipe-procedure-text$")))
-
-
-(defun org-chef-serious-eats-fetch (url)
-  "Given an seriouseats.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
-
-      `((name . ,(org-chef-serious-eats-extract-name dom))
-        (ingredients . ,(org-chef-serious-eats-extract-ingredients dom))
-        (servings . ,(org-chef-serious-eats-extract-servings dom))
-        (prep-time . ,(org-chef-serious-eats-extract-prep-time dom))
-        (cook-time . ,(org-chef-serious-eats-extract-cook-time dom))
-        (ready-in . ,(org-chef-serious-eats-extract-ready-in dom))
-        (directions . ,(org-chef-serious-eats-extract-directions dom))
-        (source-url . ,url)))))
-
-
-(provide 'org-chef-serious-eats)
-;;; org-chef-serious-eats.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-simply-recipes.el b/elpa/org-chef-20181105.2035/org-chef-simply-recipes.el
deleted file mode 100644 (file)
index 831e766..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-;;; org-chef-simply-recipes.el --- Functions for fetching recipes from simplyrecipes.com.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from simplyrecipes.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-simply-recipes-extract-name (dom)
-  "Get the name of a recipe from an simplyrecipes DOM."
-  (dom-text (car (dom-by-class dom "entry-title"))))
-
-
-(defun org-chef-simply-recipes-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an simplyrecipes DOM."
-  (mapcar 'dom-text (dom-by-class dom "^ingredient$")))
-
-
-(defun org-chef-simply-recipes-extract-servings (dom)
-  "Get the number of servings for a recipe from an simplyrecipes DOM."
-  (let ((servings (dom-text (car (dom-by-class dom "^yield*")))))
-    (when servings
-      (substring servings 7))))
-
-
-(defun org-chef-simply-recipes-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an simplyrecipes DOM."
-  (dom-text (car (dom-by-class dom "preptime"))))
-
-
-(defun org-chef-simply-recipes-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an simplyrecipes DOM."
-  (let ((cook-time (dom-by-class dom "cooktime"))
-        (other-time (dom-by-class dom "othertime")))
-    (dom-text (car (if (null cook-time) other-time cook-time)))))
-
-
-(defun org-chef-simply-recipes-extract-directions (dom)
-  "Get the directions for a recipe from an simplyrecipes DOM."
-  (mapcar #'dom-text (seq-filter (lambda (x) (not (stringp x)))
-                                 (dom-children (car (dom-elements dom 'itemprop "^recipeInstructions$"))))))
-
-
-(defun org-chef-simply-recipes-from-dom (dom)
-  "Given a simplyrecipes.com DOM, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions"
-  (let* ((prep-time (org-chef-simply-recipes-extract-prep-time dom))
-         (cook-time (org-chef-simply-recipes-extract-cook-time dom)))
-
-    `((ingredients . ,(org-chef-simply-recipes-extract-ingredients dom))
-      (name . ,(org-chef-simply-recipes-extract-name dom)
-            )
-      (servings . ,(org-chef-simply-recipes-extract-servings dom))
-      (prep-time . ,prep-time)
-      (cook-time . ,cook-time)
-      (ready-in . nil)
-      (directions . ,(org-chef-simply-recipes-extract-directions dom)))))
-
-
-(defun org-chef-simply-recipes-fetch (url)
-  "Given a simplyrecipes.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
-      (cons `(source-url . ,url) (org-chef-simply-recipes-from-dom dom)))))
-
-
-(provide 'org-chef-simply-recipes)
-;;; org-chef-simply-recipes.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-steamy-kitchen.el b/elpa/org-chef-20181105.2035/org-chef-steamy-kitchen.el
deleted file mode 100644 (file)
index 6591c0b..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-;;; org-chef-steamy-kitchen.el --- org-chef steamykitchen fetching.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from steamykitchen.com.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-steamy-kitchen-extract-name (dom)
-  "Get the name of a recipe from an steamykitchen DOM."
-  (dom-text (car (dom-elements dom 'itemprop "^name$"))))
-
-
-(defun org-chef-steamy-kitchen-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an steamykitchen DOM."
-  (mapcar 'dom-texts (dom-elements dom 'itemprop "^ingredients$")))
-
-
-(defun org-chef-steamy-kitchen-extract-servings (dom)
-  "Get the number of servings for a recipe from an steamykitchen DOM."
-  (dom-text (car (dom-elements dom 'itemprop "^recipeYield$"))))
-
-
-(defun org-chef-steamy-kitchen-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an steamykitchen DOM."
-  (dom-text (dom-parent dom (car (dom-elements dom 'itemprop "^prepTime$")))))
-
-
-(defun org-chef-steamy-kitchen-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an steamykitchen DOM."
-  (dom-text (dom-parent dom (car (dom-elements dom 'itemprop "^cookTime$")))))
-
-
-(defun org-chef-steamy-kitchen-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an steamykitchen DOM."
-  nil)
-
-
-(defun org-chef-steamy-kitchen-extract-directions (dom)
-  "Get the directions for a recipe from an steamykitchen DOM."
-  (mapcar #'(lambda (n) (string-trim (dom-texts n)))
-          (org-chef-dom-children (car (dom-by-class dom "^instructions$")))))
-
-
-(defun org-chef-steamy-kitchen-fetch (url)
-  "Given an steamykitchen.com URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url"
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
-
-      `((name . ,(org-chef-steamy-kitchen-extract-name dom))
-        (ingredients . ,(org-chef-steamy-kitchen-extract-ingredients dom))
-        (servings . ,(org-chef-steamy-kitchen-extract-servings dom))
-        (prep-time . ,(org-chef-steamy-kitchen-extract-prep-time dom))
-        (cook-time . ,(org-chef-steamy-kitchen-extract-cook-time dom))
-        (ready-in . ,(org-chef-steamy-kitchen-extract-ready-in dom))
-        (directions . ,(org-chef-steamy-kitchen-extract-directions dom))
-        (source-url . ,url)))))
-
-
-(provide 'org-chef-steamy-kitchen)
-;;; org-chef-steamy-kitchen.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-utils.el b/elpa/org-chef-20181105.2035/org-chef-utils.el
deleted file mode 100644 (file)
index 2239825..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-;;; org-chef-utils.el --- Utilities for org-chef.    -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Utility functions for org-chef.
-
-;;; Code:
-
-(require 'cl-macs)
-
-(defun org-chef-remove-empty-strings (lst)
-  "Filter out any empty strings in a list of strings (LST)."
-  (seq-filter (lambda (x) (/= (length x) 0)) lst))
-
-
-(defun org-chef-dom-children (dom)
-  "Get the child nodes of the DOM, remove strings."
-  (seq-filter (lambda (x) (not (stringp x)))
-                                  (dom-children dom)))
-
-
-(defun org-chef-insert-org-list (lst &optional bullet)
-  "Insert LST as an ‘org-mode’ plain list.
-
-The optional argument BULLET specifies which type of bullet point
-should be used."
-  (mapcar (lambda (x) (progn (insert (format "%s" x))
-                             (org-cycle)
-                             (org-ctrl-c-minus)
-                             (if bullet (org-cycle-list-bullet bullet))
-                             (org-return)))
-          lst))
-
-
-(provide 'org-chef-utils)
-;;; org-chef-utils.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef-wordpress.el b/elpa/org-chef-20181105.2035/org-chef-wordpress.el
deleted file mode 100644 (file)
index fe83157..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-;;; org-chef-wordpress.el --- org-chef wordpress fetching.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; Functions for fetching information from wordpress sites.
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'dom)
-
-
-(defun org-chef-wordpress-extract-name (dom)
-  "Get the name of a recipe from an wordpress DOM."
-  (dom-text (car (dom-by-class dom "^wprm-recipe-name"))))
-
-
-(defun org-chef-wordpress-extract-ingredients (dom)
-  "Get the ingredients for a recipe from an wordpress DOM."
-  (mapcar #'(lambda (n) (string-trim (dom-texts n))) (dom-by-class dom "^wprm-recipe-ingredient$")))
-
-
-(defun org-chef-wordpress-extract-servings (dom)
-  "Get the number of servings for a recipe from an wordpress DOM."
-  (dom-texts (car (dom-by-class dom "wprm-recipe-servings$"))))
-
-
-(defun org-chef-wordpress-extract-prep-time (dom)
-  "Get the amount of prep-time for a recipe from an wordpress DOM."
-  (dom-texts (car (dom-by-class dom "^wprm-recipe-time$"))))
-
-
-(defun org-chef-wordpress-extract-cook-time (dom)
-  "Get the amount of cook-time for a recipe from an wordpress DOM."
-  (dom-texts (cadr (dom-by-class dom "^wprm-recipe-time$"))))
-
-
-(defun org-chef-wordpress-extract-ready-in (dom)
-  "Get the total amount of time for a recipe from an wordpress DOM."
-  (dom-texts (caddr (dom-by-class dom "^wprm-recipe-time$"))))
-
-
-(defun org-chef-wordpress-extract-directions (dom)
-  "Get the directions for a recipe from an wordpress DOM."
-  (org-chef-remove-empty-strings (mapcar #'(lambda (n) (string-trim (dom-texts n))) (dom-by-class dom  "^wprm-recipe-instruction$"))))
-
-
-(defun org-chef-is-wordpress-p (dom)
-  "Check if a DOM corresponds to a wordpress website."
-  (dom-by-class dom "^wprm-recipe-container$"))
-
-
-(defun org-chef-wordpress-fetch (url)
-  "Given an wordpress URL, retrieve the recipe information.
-
-This returns an alist with the following keys:
-
-- name
-- ingredients
-- servings
-- prep-time
-- cook-time
-- ready-in
-- directions
-- source-url
-
-If this is not a wordpress site, then return nil."
-  (with-current-buffer (url-retrieve-synchronously url)
-    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
-
-      (if (org-chef-is-wordpress-p dom)
-          `((name . ,(org-chef-wordpress-extract-name dom))
-            (ingredients . ,(org-chef-wordpress-extract-ingredients dom))
-            (servings . ,(org-chef-wordpress-extract-servings dom))
-            (prep-time . ,(org-chef-wordpress-extract-prep-time dom))
-            (cook-time . ,(org-chef-wordpress-extract-cook-time dom))
-            (ready-in . ,(org-chef-wordpress-extract-ready-in dom))
-            (directions . ,(org-chef-wordpress-extract-directions dom))
-            (source-url . ,url))
-        nil))))
-
-
-(provide 'org-chef-wordpress)
-;;; org-chef-wordpress.el ends here
diff --git a/elpa/org-chef-20181105.2035/org-chef.el b/elpa/org-chef-20181105.2035/org-chef.el
deleted file mode 100644 (file)
index 227ebc3..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-;;; org-chef.el --- Cookbook and recipe management with org-mode.  -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2018 Calvin Beck
-
-;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
-;; URL: https://github.com/Chobbes/org-chef
-;; Created: 2018
-;; Version: 0.1.3
-;; Keywords: convenience, abbrev, outlines, org, food, recipes, cooking
-;; Package-Requires: ((org "0") (emacs "24"))
-
-;; Copyright 2018 Calvin Beck
-
-;; Permission is hereby granted, free of charge, to any person
-;; obtaining a copy of this software and associated documentation
-;; files (the "Software"), to deal in the Software without
-;; restriction, including without limitation the rights to use, copy,
-;; modify, merge, publish, distribute, sublicense, and/or sell copies
-;; of the Software, and to permit persons to whom the Software is
-;; furnished to do so, subject to the following conditions:
-
-;; The above copyright notice and this permission notice shall be
-;; included in all copies or substantial portions of the Software.
-
-;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-;; SOFTWARE.
-
-;;; Commentary:
-
-;; org-chef is a package for managing recipes in org-mode.  One of the
-;; main features is that it can automatically extract recipes from
-;; websites like allrecipes.com
-
-;;; Code:
-
-
-(require 'org-chef-utils)
-(require 'org-chef-all-recipes)
-(require 'org-chef-genius-kitchen)
-(require 'org-chef-simply-recipes)
-(require 'org-chef-martha-stewart)
-(require 'org-chef-budget-bytes)
-(require 'org-chef-cultures-for-health)
-(require 'org-chef-marmiton)
-(require 'org-chef-serious-eats)
-(require 'org-chef-reluctant-gourmet)
-(require 'org-chef-chef-koch)
-(require 'org-chef-steamy-kitchen)
-(require 'org-chef-nytimes)
-(require 'org-chef-wordpress)
-
-
-(defun org-chef-recipe-insert-org (recipe)
-  "Insert a RECIPE as an ‘org-mode’ heading."
-  (org-insert-heading)
-  (insert (cdr (assoc 'name recipe)))
-  (org-return)
-  (org-set-property "source-url" (cdr (assoc 'source-url recipe)))
-  (org-set-property "servings" (cdr (assoc 'servings recipe)))
-  (org-set-property "prep-time" (format "%s" (cdr (assoc 'prep-time recipe))))
-  (org-set-property "cook-time" (format "%s" (cdr (assoc 'cook-time recipe))))
-  (org-set-property "ready-in" (format "%s" (cdr (assoc 'ready-in recipe))))
-  (org-insert-subheading t)
-  (insert "Ingredients")
-  (org-return)
-  (org-return)
-  (org-chef-insert-org-list (cdr (assoc 'ingredients recipe)))
-  (org-return)
-  (org-return)
-  (org-insert-heading)
-  (insert "Directions")
-  (org-return)
-  (org-return)
-  (org-chef-insert-org-list (cdr (assoc 'directions recipe)) "1."))
-
-
-(defun org-chef-recipe-org-string (recipe)
-  "Get an ‘org-mode’ heading string for a RECIPE."
-  (with-temp-buffer (org-mode)
-                    (org-chef-recipe-insert-org recipe)
-                    (buffer-string)))
-
-
-(defun org-chef-match-url (BASE URL)
-  "Match URL against a BASE url."
-  (not (null (string-match-p (regexp-quote BASE) URL))))
-
-
-(defun org-chef-fetch-recipe-specific-url (URL)
-  "Look up a recipe based on a specific URL."
-  (cond
-   ((org-chef-match-url "allrecipes.com" URL) (org-chef-all-recipes-fetch URL))
-   ((org-chef-match-url "geniuskitchen.com" URL) (org-chef-genius-kitchen-fetch URL))
-   ((org-chef-match-url "simplyrecipes.com" URL) (org-chef-simply-recipes-fetch URL))
-   ((org-chef-match-url "marthastewart.com" URL) (org-chef-martha-stewart-fetch URL))
-   ((org-chef-match-url "budgetbytes.com" URL) (org-chef-budget-bytes-fetch URL))
-   ((org-chef-match-url "culturesforhealth.com" URL) (org-chef-cultures-for-health-fetch URL))
-   ((org-chef-match-url "marmiton.org" URL) (org-chef-marmiton-fetch URL))
-   ((org-chef-match-url "seriouseats.com" URL) (org-chef-serious-eats-fetch URL))
-   ((org-chef-match-url "reluctantgourmet.com" URL) (org-chef-reluctant-gourmet-fetch URL))
-   ((org-chef-match-url "chefkoch.de" URL) (org-chef-chef-koch-fetch URL))
-   ((org-chef-match-url "steamykitchen.com" URL) (org-chef-steamy-kitchen-fetch URL))
-   ((org-chef-match-url "nytimes.com" URL) (org-chef-nytimes-fetch URL))
-   (t nil)))
-
-
-(defun org-chef-fetch-recipe (URL)
-  "Look up a recipe at a URL."
-  (let ((fetched-recipe (org-chef-fetch-recipe-specific-url URL)))
-    (if fetched-recipe
-        fetched-recipe
-      (org-chef-wordpress-fetch URL))))
-
-
-(defun org-chef-insert-recipe (URL)
-  "Prompt for a recipe URL, and then insert the recipe at point."
-  (interactive "sRecipe URL: ")
-  (org-chef-recipe-insert-org (org-chef-fetch-recipe URL)))
-
-
-(defun org-chef-get-recipe-from-url ()
-  "Prompt for a recipe URL, and return the ‘org-mode’ string."
-  (let ((URL (read-string "Recipe URL: ")))
-    (org-chef-recipe-org-string (org-chef-fetch-recipe URL))))
-
-
-(provide 'org-chef)
-;;; org-chef.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-all-recipes.el b/elpa/org-chef-20181202.2221/org-chef-all-recipes.el
new file mode 100644 (file)
index 0000000..2556af8
--- /dev/null
@@ -0,0 +1,104 @@
+;;; org-chef-all-recipes.el --- org-chef allrecipes fetching.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from allrecipes.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-all-recipes-extract-name (dom)
+  "Get the name of a recipe from an allrecipes DOM."
+  (dom-text (car (dom-by-class dom "^recipe-summary__h1$"))))
+
+
+(defun org-chef-all-recipes-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an allrecipes DOM."
+  (mapcar #'(lambda (n) (string-trim (dom-text n))) (dom-elements dom 'itemprop "^recipeIngredient$")))
+
+
+(defun org-chef-all-recipes-extract-servings (dom)
+  "Get the number of servings for a recipe from an allrecipes DOM."
+  (dom-attr (car (dom-by-id dom "metaRecipeServings")) 'content))
+
+
+(defun org-chef-all-recipes-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an allrecipes DOM."
+  (dom-texts (car (dom-elements dom 'itemprop "^prepTime$"))))
+
+
+(defun org-chef-all-recipes-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an allrecipes DOM."
+  (dom-texts (car (dom-elements dom 'itemprop "^cookTime$"))))
+
+
+(defun org-chef-all-recipes-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an allrecipes DOM."
+  (dom-texts (car (dom-elements dom 'itemprop "^totalTime$"))))
+
+
+(defun org-chef-all-recipes-extract-directions (dom)
+  "Get the directions for a recipe from an allrecipes DOM."
+  (org-chef-remove-empty-strings (mapcar #'(lambda (n) (string-trim (dom-text n))) (dom-by-class dom  "^recipe-directions__list--item$"))))
+
+
+(defun org-chef-all-recipes-fetch (url)
+  "Given an allrecipes.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
+
+      `((name . ,(org-chef-all-recipes-extract-name dom))
+        (ingredients . ,(org-chef-all-recipes-extract-ingredients dom))
+        (servings . ,(org-chef-all-recipes-extract-servings dom))
+        (prep-time . ,(org-chef-all-recipes-extract-prep-time dom))
+        (cook-time . ,(org-chef-all-recipes-extract-cook-time dom))
+        (ready-in . ,(org-chef-all-recipes-extract-ready-in dom))
+        (directions . ,(org-chef-all-recipes-extract-directions dom))
+        (source-url . ,url)))))
+
+
+(provide 'org-chef-all-recipes)
+;;; org-chef-all-recipes.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-autoloads.el b/elpa/org-chef-20181202.2221/org-chef-autoloads.el
new file mode 100644 (file)
index 0000000..9cd8eda
--- /dev/null
@@ -0,0 +1,146 @@
+;;; org-chef-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+
+(add-to-list 'load-path (directory-file-name
+                         (or (file-name-directory #$) (car load-path))))
+
+\f
+;;;### (autoloads nil "org-chef" "org-chef.el" (0 0 0 0))
+;;; Generated autoloads from org-chef.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef" '("org-chef-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-all-recipes" "org-chef-all-recipes.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-all-recipes.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-all-recipes" '("org-chef-all-recipes-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-budget-bytes" "org-chef-budget-bytes.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-budget-bytes.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-budget-bytes" '("org-chef-budget-bytes-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-chef-koch" "org-chef-chef-koch.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-chef-koch.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-chef-koch" '("org-chef-chef-koch-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-cultures-for-health" "org-chef-cultures-for-health.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-cultures-for-health.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-cultures-for-health" '("org-chef-cultures-for-health-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-genius-kitchen" "org-chef-genius-kitchen.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-genius-kitchen.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-genius-kitchen" '("org-chef-genius-kitchen-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-marmiton" "org-chef-marmiton.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-marmiton.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-marmiton" '("org-chef-marmiton-" "extract-dom-text" "sanitize")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-martha-stewart" "org-chef-martha-stewart.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-martha-stewart.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-martha-stewart" '("org-chef-martha-stewart-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-nytimes" "org-chef-nytimes.el" (0
+;;;;;;  0 0 0))
+;;; Generated autoloads from org-chef-nytimes.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-nytimes" '("org-chef-nytimes-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-reluctant-gourmet" "org-chef-reluctant-gourmet.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-reluctant-gourmet.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-reluctant-gourmet" '("org-chef-reluctant-gourmet-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-saveur" "org-chef-saveur.el" (0 0
+;;;;;;  0 0))
+;;; Generated autoloads from org-chef-saveur.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-saveur" '("org-chef-saveur-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-serious-eats" "org-chef-serious-eats.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-serious-eats.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-serious-eats" '("org-chef-serious-eats-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-simply-recipes" "org-chef-simply-recipes.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-simply-recipes.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-simply-recipes" '("org-chef-simply-recipes-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-steamy-kitchen" "org-chef-steamy-kitchen.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-steamy-kitchen.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-steamy-kitchen" '("org-chef-steamy-kitchen-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-utils" "org-chef-utils.el" (0 0 0
+;;;;;;  0))
+;;; Generated autoloads from org-chef-utils.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-utils" '("org-chef-")))
+
+;;;***
+\f
+;;;### (autoloads nil "org-chef-wordpress" "org-chef-wordpress.el"
+;;;;;;  (0 0 0 0))
+;;; Generated autoloads from org-chef-wordpress.el
+
+(if (fboundp 'register-definition-prefixes) (register-definition-prefixes "org-chef-wordpress" '("org-chef-")))
+
+;;;***
+\f
+;;;### (autoloads nil nil ("org-chef-pkg.el") (0 0 0 0))
+
+;;;***
+\f
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; coding: utf-8
+;; End:
+;;; org-chef-autoloads.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-budget-bytes.el b/elpa/org-chef-20181202.2221/org-chef-budget-bytes.el
new file mode 100644 (file)
index 0000000..07f83c7
--- /dev/null
@@ -0,0 +1,121 @@
+;;; org-chef-budget-bytes.el --- org-chef budgetbytes fetching.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from budgetbytes.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-budget-bytes-extract-name (dom)
+  "Get the name of a recipe from an budgetbytes DOM."
+  (dom-text (car (dom-by-class dom "^wprm-recipe-name$"))))
+
+
+(defun org-chef-budget-bytes-ingredient-to-string (dom)
+  (let* ((amount (string-trim (dom-text (car (dom-by-class dom "wprm-recipe-ingredient-amount")))))
+         (unit (string-trim (dom-text (car (dom-by-class dom "wprm-recipe-ingredient-unit")))))
+         (name (string-trim (dom-text (car (dom-by-class dom "wprm-recipe-ingredient-name"))))))
+    (format "%s %s %s" amount unit name)))
+
+
+(defun org-chef-budget-bytes-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an budgetbytes DOM."
+  (mapcar #'(lambda (n) (org-chef-budget-bytes-ingredient-to-string n))
+          (dom-by-class dom "^wprm-recipe-ingredient$")))
+
+
+(defun org-chef-budget-bytes-extract-servings (dom)
+  "Get the number of servings for a recipe from an budgetbytes DOM."
+  (dom-text (car (dom-by-class dom "wprm-recipe-servings$"))))
+
+
+(defun org-chef-budget-bytes-time-to-string (dom)
+  (let* ((hours (string-trim (dom-text (car (dom-by-class dom "hours$")))))
+         (minutes (string-trim (dom-text (car (dom-by-class dom "minutes$")))))
+         (hour-string (if (/= (length hours) 0) (format "%s hours " hours) ""))
+         (minute-string (if (/= (length minutes) 0) (format "%s minutes" minutes) "")))
+    (string-trim (concat hour-string minute-string))))
+
+
+(defun org-chef-budget-bytes-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an budgetbytes DOM."
+  (org-chef-budget-bytes-time-to-string (car (dom-by-class dom "wprm-recipe-prep-time-container"))))
+
+
+(defun org-chef-budget-bytes-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an budgetbytes DOM."
+  (org-chef-budget-bytes-time-to-string (car (dom-by-class dom "wprm-recipe-cook-time-container"))))
+
+
+(defun org-chef-budget-bytes-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an budgetbytes DOM."
+  (org-chef-budget-bytes-time-to-string (car (dom-by-class dom "wprm-recipe-total-time-container"))))
+
+
+(defun org-chef-budget-bytes-extract-directions (dom)
+  "Get the directions for a recipe from an budgetbytes DOM."
+  (mapcar #'(lambda (n) (string-trim (dom-texts n)))
+          (dom-by-class dom "wprm-recipe-instruction-text")))
+
+
+(defun org-chef-budget-bytes-fetch (url)
+  "Given an budgetbytes.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
+
+      `((name . ,(org-chef-budget-bytes-extract-name dom))
+        (ingredients . ,(org-chef-budget-bytes-extract-ingredients dom))
+        (servings . ,(org-chef-budget-bytes-extract-servings dom))
+        (prep-time . ,(org-chef-budget-bytes-extract-prep-time dom))
+        (cook-time . ,(org-chef-budget-bytes-extract-cook-time dom))
+        (ready-in . ,(org-chef-budget-bytes-extract-ready-in dom))
+        (directions . ,(org-chef-budget-bytes-extract-directions dom))
+        (source-url . ,url)))))
+
+
+(provide 'org-chef-budget-bytes)
+;;; org-chef-budget-bytes.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-chef-koch.el b/elpa/org-chef-20181202.2221/org-chef-chef-koch.el
new file mode 100644 (file)
index 0000000..203931c
--- /dev/null
@@ -0,0 +1,134 @@
+;;; org-chef-chef-koch.el --- Functions for fetching recipes from chefkoch.de.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from chefkoch.de.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-chef-koch-extract-name (dom)
+  "Get the name of a recipe from an chefkoch DOM."
+  (dom-text (car (dom-by-class dom "page-title"))))
+
+
+(defun org-chef-chef-koch-ingredient-to-string (dom)
+  (let ((amount (replace-regexp-in-string " " " " (string-trim (dom-texts (car (dom-by-tag dom 'td))))))
+        (name (string-trim (dom-texts (cadr (dom-by-tag dom 'td))))))
+    (format "%s %s" amount name)))
+
+
+(defun org-chef-chef-koch-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an chefkoch DOM."
+  (mapcar #'org-chef-chef-koch-ingredient-to-string (dom-by-tag (dom-by-class dom "^incredients$") 'tr)))
+
+
+(defun org-chef-chef-koch-extract-servings (dom)
+  "Get the number of servings for a recipe from an chefkoch DOM."
+  (dom-attr (dom-elements dom 'name "^portionen$") 'value))
+
+
+(defun org-chef-chef-koch-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an chefkoch DOM."
+  (let ((str (replace-regexp-in-string "\n" " " (dom-texts (dom-by-id dom "^preparation-info$")))))
+    (string-match "Arbeitszeit:[[:space:]]+ca. \\(?1:[^\.]*\\)\." str)
+    (match-string 1 str)))
+
+
+(defun org-chef-chef-koch-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an chefkoch DOM."
+  (let ((str (replace-regexp-in-string "\n" " " (dom-texts (dom-by-id dom "^preparation-info$")))))
+    (string-match "Koch-/Backzeit:[[:space:]]+ca. \\(?1:[^\.]*\\)\." str)
+    (match-string 1 str)))
+
+
+(defun org-chef-chef-koch-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an chefkoch DOM."
+  "")
+
+
+(defun org-chef-chef-koch-extract-directions (dom)
+  "Get the directions for a recipe from an chefkoch DOM."
+  (with-temp-buffer
+    (insert (string-trim (dom-texts (dom-by-class dom "^instructions"))))
+    (delete-trailing-whitespace)
+    (split-string (buffer-string) "\n")))
+
+
+(defun org-chef-chef-koch-from-dom (dom)
+  "Given a chefkoch.de DOM, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions"
+  (let* ((prep-time (org-chef-chef-koch-extract-prep-time dom))
+         (cook-time (org-chef-chef-koch-extract-cook-time dom))
+         (total-time (org-chef-chef-koch-extract-ready-in dom)))
+
+    `((ingredients . ,(org-chef-chef-koch-extract-ingredients dom))
+      (name . ,(org-chef-chef-koch-extract-name dom))
+      (servings . ,(org-chef-chef-koch-extract-servings dom))
+      (prep-time . ,prep-time)
+      (cook-time . ,cook-time)
+      (ready-in . ,total-time)
+      (directions . ,(org-chef-chef-koch-extract-directions dom)))))
+
+
+(defun org-chef-chef-koch-fetch (url)
+  "Given a chefkoch.de URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
+      (cons `(source-url . ,url) (org-chef-chef-koch-from-dom dom)))))
+
+
+(provide 'org-chef-chef-koch)
+;;; org-chef-chef-koch.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-cultures-for-health.el b/elpa/org-chef-20181202.2221/org-chef-cultures-for-health.el
new file mode 100644 (file)
index 0000000..d43d703
--- /dev/null
@@ -0,0 +1,98 @@
+;;; org-chef-cultures-for-health.el --- Functions for fetching recipes from culturesforhealth.com.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from culturesforhealth.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-cultures-for-health-extract-name (dom)
+  "Get the name of a recipe from an culturesforhealth DOM."
+  (dom-text (car (dom-elements dom 'itemprop "^name$"))))
+
+
+(defun org-chef-cultures-for-health-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an culturesforhealth DOM."
+  (mapcar 'dom-texts (dom-elements dom 'itemprop "^ingredients$")))
+
+
+(defun org-chef-cultures-for-health-extract-directions (dom)
+  "Get the directions for a recipe from an culturesforhealth DOM."
+  (mapcar #'dom-texts (org-chef-dom-children (cadr (org-chef-dom-children (car (dom-elements dom 'itemprop "^recipeInstructions$")))))))
+
+
+(defun org-chef-cultures-for-health-from-dom (dom)
+  "Given a culturesforhealth.com DOM, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions"
+  `((ingredients . ,(org-chef-cultures-for-health-extract-ingredients dom))
+    (name . ,(org-chef-cultures-for-health-extract-name dom)
+          )
+    (servings . nil)
+    (prep-time . nil)
+    (cook-time . nil)
+    (ready-in . nil)
+    (directions . ,(org-chef-cultures-for-health-extract-directions dom))))
+
+
+(defun org-chef-cultures-for-health-fetch (url)
+  "Given a culturesforhealth.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
+      (cons `(source-url . ,url) (org-chef-cultures-for-health-from-dom dom)))))
+
+
+(provide 'org-chef-cultures-for-health)
+;;; org-chef-cultures-for-health.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-genius-kitchen.el b/elpa/org-chef-20181202.2221/org-chef-genius-kitchen.el
new file mode 100644 (file)
index 0000000..2c2de7a
--- /dev/null
@@ -0,0 +1,97 @@
+;;; org-chef-genius-kitchen.el --- Functions for fetching recipes from geniuskitchen.com.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from geniuskitchen.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-genius-kitchen-extract-name (dom)
+  "Get the name of a recipe from an geniuskitchen DOM."
+  (dom-text (caddr
+             (seq-filter (lambda (x) (not (stringp x)))
+                         (dom-children (car (dom-by-class dom "^recipe-header")))))))
+
+
+(defun org-chef-genius-kitchen-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an geniuskitchen DOM."
+  (mapcar #'dom-texts (dom-elements dom 'data-ingredient ".*")))
+
+
+(defun org-chef-genius-kitchen-extract-servings (dom)
+  "Get the number of servings for a recipe from an geniuskitchen DOM."
+  (dom-text (car (dom-by-class (car (dom-by-class dom "^servings$")) "count"))))
+
+
+(defun org-chef-genius-kitchen-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an geniuskitchen DOM."
+  (string-trim (dom-text (car (dom-by-class dom "time")))))
+
+
+(defun org-chef-genius-kitchen-extract-directions (dom)
+  "Get the directions for a recipe from an geniuskitchen DOM."
+  (let ((directions-list (dom-by-tag (car (dom-by-class dom "directions-inner")) 'li)))
+    (org-chef-remove-empty-strings
+     (mapcar #'(lambda (n) (string-trim (dom-text n))) directions-list))))
+
+
+(defun org-chef-genius-kitchen-fetch (url)
+  "Given a geniuskitchen.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
+      `((name . ,(org-chef-genius-kitchen-extract-name dom))
+        (ingredients . ,(org-chef-genius-kitchen-extract-ingredients dom))
+        (servings . ,(org-chef-genius-kitchen-extract-servings dom))
+        (prep-time . nil)
+        (cook-time . nil)
+        (ready-in . ,(org-chef-genius-kitchen-extract-ready-in dom))
+        (directions . ,(org-chef-genius-kitchen-extract-directions dom))
+        (source-url . ,url)))))
+
+
+(provide 'org-chef-genius-kitchen)
+;;; org-chef-genius-kitchen.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-marmiton.el b/elpa/org-chef-20181202.2221/org-chef-marmiton.el
new file mode 100644 (file)
index 0000000..57dd7e2
--- /dev/null
@@ -0,0 +1,127 @@
+;;; org-chef-marmiton.el --- Functions for fetching recipes from marmiton.org.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck/Sébastien Le Maguer
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>/Sébastien Le Maguer <seb.lemaguerNOSPAMgmail.com>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck/Sébastien Le Maguer
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from marmiton.org.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun sanitize (str)
+  "Sanitize the STR by removing beginning/trailing spaces extracted from a marmiton dom."
+  (replace-regexp-in-string "^[        \r\n]*\\(.*[^   \r\n]\\)[       \r\n]*$" "\\1" str))
+
+(defun extract-dom-text (dom)
+  "Embedded the operation santize of dom-text from a marmiton DOM."
+  (sanitize (dom-text dom)))
+
+(defun org-chef-marmiton-extract-name (dom)
+  "Get the name of a recipe from a marmiton DOM."
+  (dom-text (car (dom-elements dom 'class "^main-title $"))))
+
+(defun org-chef-marmiton-extract-current-ingredient (dom)
+  "Extract element for the current ingredient from a marmiton DOM."
+  (concat
+   (extract-dom-text (dom-elements dom 'class "^recipe-ingredient-qt$"))
+   " "
+   (extract-dom-text (dom-elements dom 'class "^ingredient$"))))
+
+(defun org-chef-marmiton-extract-ingredients (dom)
+  "Get the ingredients for a recipe from a marmiton DOM."
+  (mapcar 'org-chef-marmiton-extract-current-ingredient (dom-elements dom 'class "^recipe-ingredients__list__item$")))
+
+(defun org-chef-marmiton-extract-directions (dom)
+  "Get the directions for a recipe from a marmiton DOM."
+
+  (mapcar 'extract-dom-text (dom-elements dom 'class "^recipe-preparation__list__item$")))
+
+(defun org-chef-marmiton-extract-prep-time (dom)
+  "Get the preparation time for a recipe from a marmiton DOM."
+  (extract-dom-text
+   (dom-elements (dom-elements dom 'class "recipe-infos__timmings__preparation")
+                'class "^recipe-infos__timmings__value$")))
+
+(defun org-chef-marmiton-extract-cook-time (dom)
+  "Extract the cooking time for a recipe from a marmiton DOM."
+  (extract-dom-text
+   (dom-elements (dom-elements dom 'class "recipe-infos__timmings__cooking")
+                'class "^recipe-infos__timmings__value$")))
+
+
+(defun org-chef-marmiton-extract-servings (dom)
+  (dom-text (car (dom-elements dom 'class "^title-2 recipe-infos__quantity__value$"))))
+
+
+
+(defun org-chef-marmiton-from-dom (dom)
+  "Given a marmiton.org DOM, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions"
+  `((ingredients . ,(org-chef-marmiton-extract-ingredients dom))
+    (name . ,(org-chef-marmiton-extract-name dom))
+    (servings . ,(org-chef-marmiton-extract-servings dom))
+    (prep-time . ,(org-chef-marmiton-extract-prep-time dom))
+    (cook-time . ,(org-chef-marmiton-extract-cook-time dom))
+    (ready-in . nil)
+    (directions . ,(org-chef-marmiton-extract-directions dom))))
+
+
+(defun org-chef-marmiton-fetch (url)
+  "Given a marmiton.org URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
+      (cons `(source-url . ,url) (org-chef-marmiton-from-dom dom)))))
+
+(provide 'org-chef-marmiton)
+;;; org-chef-marmiton.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-martha-stewart.el b/elpa/org-chef-20181202.2221/org-chef-martha-stewart.el
new file mode 100644 (file)
index 0000000..a2ee19c
--- /dev/null
@@ -0,0 +1,106 @@
+;;; org-chef-martha-stewart.el --- org-chef marthastewart fetching.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from marthastewart.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-martha-stewart-extract-name (dom)
+  "Get the name of a recipe from an marthastewart DOM."
+  (string-trim (dom-text (car (dom-by-class dom "^page-title$")))))
+
+
+(defun org-chef-martha-stewart-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an marthastewart DOM."
+  (mapcar #'(lambda (n) (string-trim (dom-text n)))
+          (dom-by-class dom "^component-text$")))
+
+
+(defun org-chef-martha-stewart-extract-servings (dom)
+  "Get the number of servings for a recipe from an marthastewart DOM."
+  (string-trim (dom-text (car (dom-by-class dom "servings-data$")))))
+
+
+(defun org-chef-martha-stewart-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an marthastewart DOM."
+  (string-trim (dom-text (car (dom-by-class dom "prep-time-data$")))))
+
+
+(defun org-chef-martha-stewart-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an marthastewart DOM."
+  nil)
+
+
+(defun org-chef-martha-stewart-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an marthastewart DOM."
+  (string-trim (dom-text (car (dom-by-class dom "total-time-data$")))))
+
+
+(defun org-chef-martha-stewart-extract-directions (dom)
+  "Get the directions for a recipe from an marthastewart DOM."
+  (mapcar #'(lambda (n) (string-trim (dom-texts (dom-children n))))
+          (dom-by-class dom "^directions-item-text$")))
+
+
+(defun org-chef-martha-stewart-fetch (url)
+  "Given an marthastewart.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
+
+      `((name . ,(org-chef-martha-stewart-extract-name dom))
+        (ingredients . ,(org-chef-martha-stewart-extract-ingredients dom))
+        (servings . ,(org-chef-martha-stewart-extract-servings dom))
+        (prep-time . ,(org-chef-martha-stewart-extract-prep-time dom))
+        (cook-time . ,(org-chef-martha-stewart-extract-cook-time dom))
+        (ready-in . ,(org-chef-martha-stewart-extract-ready-in dom))
+        (directions . ,(org-chef-martha-stewart-extract-directions dom))
+        (source-url . ,url)))))
+
+
+(provide 'org-chef-martha-stewart)
+;;; org-chef-martha-stewart.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-nytimes.el b/elpa/org-chef-20181202.2221/org-chef-nytimes.el
new file mode 100644 (file)
index 0000000..3712c58
--- /dev/null
@@ -0,0 +1,128 @@
+;;; org-chef-nytimes.el --- Functions for fetching recipes from nytimes.com.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck/Asilata Bapat
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>/Asilata Bapat <asilataNOSPAMalum.mit.edu>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck/Asilata Bapat
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from nytimes.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-nytimes-extract-name (dom)
+  "Get the name of a recipe from an nytimes DOM."
+  (string-trim (dom-text (car (dom-by-class dom "recipe-title")))))
+
+
+(defun org-chef-nytimes-ingredient-to-string (dom)
+  "Extract string representation of a single ingredient from an nytimes DOM."
+  (replace-regexp-in-string
+   " \\([,\.]\\)" "\\1"
+   (string-join (org-chef-remove-empty-strings (mapcar 'string-trim (dom-strings dom))) " ")))
+
+(defun org-chef-nytimes-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an nytimes DOM."
+  (mapcar 'org-chef-nytimes-ingredient-to-string
+          (dom-elements dom 'itemprop "recipeIngredient")))
+
+
+(defun org-chef-nytimes-extract-servings (dom)
+  "Get the number of servings for a recipe from an nytimes DOM."
+  (replace-regexp-in-string " servings" "" (dom-text (car (dom-elements dom 'itemprop "recipeYield")))))
+
+
+(defun org-chef-nytimes-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an nytimes DOM."
+  "")
+
+
+(defun org-chef-nytimes-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an nytimes DOM."
+  "")
+
+
+(defun org-chef-nytimes-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an nytimes DOM."
+  (dom-texts (dom-by-class (cadr (dom-by-tag (dom-by-class dom "recipe-time-yield") 'li)) "recipe-yield-value")))
+
+
+(defun org-chef-nytimes-extract-directions (dom)
+  "Get the directions for a recipe from an nytimes DOM."
+  (mapcar 'dom-texts (dom-by-tag (dom-elements dom 'itemprop "recipeInstructions") 'li)))
+
+
+(defun org-chef-nytimes-from-dom (dom)
+  "Given an nytimes.com DOM, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions"
+  (let* ((prep-time (org-chef-nytimes-extract-prep-time dom))
+         (cook-time (org-chef-nytimes-extract-cook-time dom))
+         (total-time (org-chef-nytimes-extract-ready-in dom)))
+
+    `((ingredients . ,(org-chef-nytimes-extract-ingredients dom))
+      (name . ,(org-chef-nytimes-extract-name dom))
+      (servings . ,(org-chef-nytimes-extract-servings dom))
+      (prep-time . ,prep-time)
+      (cook-time . ,cook-time)
+      (ready-in . ,total-time)
+      (directions . ,(org-chef-nytimes-extract-directions dom)))))
+
+
+(defun org-chef-nytimes-fetch (url)
+  "Given an nytimes.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
+      (cons `(source-url . ,url) (org-chef-nytimes-from-dom dom)))))
+
+
+(provide 'org-chef-nytimes)
+;;; org-chef-nytimes.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-pkg.el b/elpa/org-chef-20181202.2221/org-chef-pkg.el
new file mode 100644 (file)
index 0000000..70f0384
--- /dev/null
@@ -0,0 +1,13 @@
+(define-package "org-chef" "20181202.2221" "Cookbook and recipe management with org-mode."
+  '((org "0")
+    (emacs "24"))
+  :keywords
+  '("convenience" "abbrev" "outlines" "org" "food" "recipes" "cooking")
+  :authors
+  '(("Calvin Beck" . "hobbesNOSPAMualberta.ca"))
+  :maintainer
+  '("Calvin Beck" . "hobbesNOSPAMualberta.ca")
+  :url "https://github.com/Chobbes/org-chef")
+;; Local Variables:
+;; no-byte-compile: t
+;; End:
diff --git a/elpa/org-chef-20181202.2221/org-chef-reluctant-gourmet.el b/elpa/org-chef-20181202.2221/org-chef-reluctant-gourmet.el
new file mode 100644 (file)
index 0000000..47e75e9
--- /dev/null
@@ -0,0 +1,122 @@
+;;; org-chef-reluctant-gourmet.el --- Functions for fetching recipes from reluctantgourmet.com.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from reluctantgourmet.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-reluctant-gourmet-extract-name (dom)
+  "Get the name of a recipe from an reluctantgourmet DOM."
+  (dom-text (car (dom-by-id dom "zlrecipe-title"))))
+
+
+(defun org-chef-reluctant-gourmet-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an reluctantgourmet DOM."
+  (mapcar #'(lambda (n) (string-trim (dom-text n))) (dom-by-class dom "^ingredient$")))
+
+
+(defun org-chef-reluctant-gourmet-extract-servings (dom)
+  "Get the number of servings for a recipe from an reluctantgourmet DOM."
+  (dom-texts (car (dom-elements dom 'itemprop "^recipeYield$"))))
+
+
+(defun org-chef-reluctant-gourmet-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an reluctantgourmet DOM."
+  (dom-texts (car (dom-elements dom 'itemprop "^prepTime$"))))
+
+
+(defun org-chef-reluctant-gourmet-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an reluctantgourmet DOM."
+  (dom-texts (car (dom-elements dom 'itemprop "^cookTime$"))))
+
+
+(defun org-chef-reluctant-gourmet-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an reluctantgourmet DOM."
+  (dom-texts (car (dom-elements dom 'itemprop "^totalTime$"))))
+
+
+(defun org-chef-reluctant-gourmet-extract-directions (dom)
+  "Get the directions for a recipe from an reluctantgourmet DOM."
+  (mapcar #'dom-text (seq-filter (lambda (x) (not (stringp x)))
+                                 (dom-elements dom 'itemprop "^recipeInstructions$"))))
+
+
+(defun org-chef-reluctant-gourmet-from-dom (dom)
+  "Given a reluctantgourmet.com DOM, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions"
+  (let* ((prep-time (org-chef-reluctant-gourmet-extract-prep-time dom))
+         (cook-time (org-chef-reluctant-gourmet-extract-cook-time dom))
+         (total-time (org-chef-reluctant-gourmet-extract-ready-in dom)))
+
+    `((ingredients . ,(org-chef-reluctant-gourmet-extract-ingredients dom))
+      (name . ,(org-chef-reluctant-gourmet-extract-name dom))
+      (servings . ,(org-chef-reluctant-gourmet-extract-servings dom))
+      (prep-time . ,prep-time)
+      (cook-time . ,cook-time)
+      (ready-in . ,total-time)
+      (directions . ,(org-chef-reluctant-gourmet-extract-directions dom)))))
+
+
+(defun org-chef-reluctant-gourmet-fetch (url)
+  "Given a reluctantgourmet.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
+      (cons `(source-url . ,url) (org-chef-reluctant-gourmet-from-dom dom)))))
+
+
+(provide 'org-chef-reluctant-gourmet)
+;;; org-chef-reluctant-gourmet.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-saveur.el b/elpa/org-chef-20181202.2221/org-chef-saveur.el
new file mode 100644 (file)
index 0000000..e5dfc0e
--- /dev/null
@@ -0,0 +1,139 @@
+;;; org-chef-saveur.el --- Functions for fetching recipes from saveur.com.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck/Derek Ellis
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>/Derek Ellis <derek.ellisNOSPAMgmail.com>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck/Derek Ellis
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from saveur.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+ (defun org-chef-saveur-chomp (str)
+      "Chomp leading and tailing whitespace from STR."
+      (replace-regexp-in-string (rx (or (: bos (* (any " \t\n")))
+                                        (: (* (any " \t\n")) eos)))
+                                ""
+                                str))
+
+
+(defun org-chef-saveur-extract-name (dom)
+  "Get the name of a recipe from an saveur DOM."
+  (string-trim (dom-text (car (dom-by-class dom "page-title")))))
+
+
+(defun org-chef-saveur-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an saveur DOM."
+  (remove ""
+         (mapcar 'org-chef-saveur-chomp
+                 (split-string
+                  (replace-regexp-in-string  " ⁄ " "/"
+                                             (string-join (mapcar #'dom-texts (dom-by-class dom "^ingredients$")))) "\n" ))))
+
+
+(defun org-chef-saveur-extract-servings (dom)
+  "Get the number of servings for a recipe from an saveur DOM."
+  (replace-regexp-in-string "serves " ""
+                           (dom-text (dom-by-tag (dom-by-class dom "yield") 'span))))
+
+
+(defun org-chef-saveur-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an saveur DOM."
+  (org-chef-saveur-chomp
+   (dom-text (dom-by-class dom "^prep-time$"))))
+
+
+(defun org-chef-saveur-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an saveur DOM."
+  (org-chef-saveur-chomp
+   (dom-text (dom-by-class dom "^cook-time$"))))
+
+
+(defun org-chef-saveur-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an saveur DOM."
+  (string-trim (dom-texts (dom-by-class (cadr (dom-by-tag (dom-by-class dom "recipe-time-yield") 'li)) "recipe-yield-value"))))
+
+
+(defun org-chef-saveur-extract-directions (dom)
+  "Get the directions for a recipe from an saveur DOM."
+  (remove ""
+         (mapcar 'org-chef-saveur-chomp
+                 (split-string
+                  (replace-regexp-in-string " ⁄ " "/"
+                                            (dom-texts
+                                             (dom-by-class dom "^instructions "))) "\n           \n  " ))))
+
+(defun org-chef-saveur-from-dom (dom)
+  "Given an saveur.com DOM, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions"
+  (let* ((prep-time (org-chef-saveur-extract-prep-time dom))
+         (cook-time (org-chef-saveur-extract-cook-time dom))
+         (total-time (org-chef-saveur-extract-ready-in dom)))
+
+    `((ingredients . ,(org-chef-saveur-extract-ingredients dom))
+      (name . ,(org-chef-saveur-extract-name dom))
+      (servings . ,(org-chef-saveur-extract-servings dom))
+      (prep-time . ,prep-time)
+      (cook-time . ,cook-time)
+      (ready-in . ,total-time)
+      (directions . ,(org-chef-saveur-extract-directions dom)))))
+
+
+(defun org-chef-saveur-fetch (url)
+  "Given an saveur.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
+      (cons `(source-url . ,url) (org-chef-saveur-from-dom dom)))))
+
+
+(provide 'org-chef-saveur)
+;;; org-chef-saveur.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-serious-eats.el b/elpa/org-chef-20181202.2221/org-chef-serious-eats.el
new file mode 100644 (file)
index 0000000..0ed4300
--- /dev/null
@@ -0,0 +1,113 @@
+;;; org-chef-serious-eats.el --- org-chef seriouseats fetching.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from seriouseats.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-serious-eats-extract-name (dom)
+  "Get the name of a recipe from an seriouseats DOM."
+  (dom-text (car (dom-elements dom 'itemprop "^name$"))))
+
+
+(defun org-chef-serious-eats-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an seriouseats DOM."
+  (mapcar 'dom-texts (dom-elements dom 'itemprop "^recipeIngredient$")))
+
+
+(defun org-chef-serious-eats-extract-servings (dom)
+  "Get the number of servings for a recipe from an seriouseats DOM."
+  (dom-text (car (dom-elements dom 'itemprop "^recipeYield$"))))
+
+
+(defun org-chef-serious-eats-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an seriouseats DOM."
+  (dom-text (car (dom-by-class
+                  (cadr
+                   (org-chef-dom-children
+                    (car (dom-by-class dom "^recipe-about$"))))
+                  "info"))))
+
+
+(defun org-chef-serious-eats-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an seriouseats DOM."
+  nil)
+
+
+(defun org-chef-serious-eats-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an seriouseats DOM."
+  (dom-text (car (dom-by-class
+                  (caddr
+                   (org-chef-dom-children
+                    (car (dom-by-class dom "^recipe-about$"))))
+                  "info"))))
+
+
+(defun org-chef-serious-eats-extract-directions (dom)
+  "Get the directions for a recipe from an seriouseats DOM."
+  (mapcar #'(lambda (n) (string-trim (dom-texts (dom-children n))))
+          (dom-by-class dom "^recipe-procedure-text$")))
+
+
+(defun org-chef-serious-eats-fetch (url)
+  "Given an seriouseats.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
+
+      `((name . ,(org-chef-serious-eats-extract-name dom))
+        (ingredients . ,(org-chef-serious-eats-extract-ingredients dom))
+        (servings . ,(org-chef-serious-eats-extract-servings dom))
+        (prep-time . ,(org-chef-serious-eats-extract-prep-time dom))
+        (cook-time . ,(org-chef-serious-eats-extract-cook-time dom))
+        (ready-in . ,(org-chef-serious-eats-extract-ready-in dom))
+        (directions . ,(org-chef-serious-eats-extract-directions dom))
+        (source-url . ,url)))))
+
+
+(provide 'org-chef-serious-eats)
+;;; org-chef-serious-eats.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-simply-recipes.el b/elpa/org-chef-20181202.2221/org-chef-simply-recipes.el
new file mode 100644 (file)
index 0000000..831e766
--- /dev/null
@@ -0,0 +1,121 @@
+;;; org-chef-simply-recipes.el --- Functions for fetching recipes from simplyrecipes.com.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from simplyrecipes.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-simply-recipes-extract-name (dom)
+  "Get the name of a recipe from an simplyrecipes DOM."
+  (dom-text (car (dom-by-class dom "entry-title"))))
+
+
+(defun org-chef-simply-recipes-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an simplyrecipes DOM."
+  (mapcar 'dom-text (dom-by-class dom "^ingredient$")))
+
+
+(defun org-chef-simply-recipes-extract-servings (dom)
+  "Get the number of servings for a recipe from an simplyrecipes DOM."
+  (let ((servings (dom-text (car (dom-by-class dom "^yield*")))))
+    (when servings
+      (substring servings 7))))
+
+
+(defun org-chef-simply-recipes-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an simplyrecipes DOM."
+  (dom-text (car (dom-by-class dom "preptime"))))
+
+
+(defun org-chef-simply-recipes-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an simplyrecipes DOM."
+  (let ((cook-time (dom-by-class dom "cooktime"))
+        (other-time (dom-by-class dom "othertime")))
+    (dom-text (car (if (null cook-time) other-time cook-time)))))
+
+
+(defun org-chef-simply-recipes-extract-directions (dom)
+  "Get the directions for a recipe from an simplyrecipes DOM."
+  (mapcar #'dom-text (seq-filter (lambda (x) (not (stringp x)))
+                                 (dom-children (car (dom-elements dom 'itemprop "^recipeInstructions$"))))))
+
+
+(defun org-chef-simply-recipes-from-dom (dom)
+  "Given a simplyrecipes.com DOM, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions"
+  (let* ((prep-time (org-chef-simply-recipes-extract-prep-time dom))
+         (cook-time (org-chef-simply-recipes-extract-cook-time dom)))
+
+    `((ingredients . ,(org-chef-simply-recipes-extract-ingredients dom))
+      (name . ,(org-chef-simply-recipes-extract-name dom)
+            )
+      (servings . ,(org-chef-simply-recipes-extract-servings dom))
+      (prep-time . ,prep-time)
+      (cook-time . ,cook-time)
+      (ready-in . nil)
+      (directions . ,(org-chef-simply-recipes-extract-directions dom)))))
+
+
+(defun org-chef-simply-recipes-fetch (url)
+  "Given a simplyrecipes.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let ((dom (libxml-parse-html-region (point-min) (point-max))))
+      (cons `(source-url . ,url) (org-chef-simply-recipes-from-dom dom)))))
+
+
+(provide 'org-chef-simply-recipes)
+;;; org-chef-simply-recipes.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-steamy-kitchen.el b/elpa/org-chef-20181202.2221/org-chef-steamy-kitchen.el
new file mode 100644 (file)
index 0000000..6591c0b
--- /dev/null
@@ -0,0 +1,105 @@
+;;; org-chef-steamy-kitchen.el --- org-chef steamykitchen fetching.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from steamykitchen.com.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-steamy-kitchen-extract-name (dom)
+  "Get the name of a recipe from an steamykitchen DOM."
+  (dom-text (car (dom-elements dom 'itemprop "^name$"))))
+
+
+(defun org-chef-steamy-kitchen-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an steamykitchen DOM."
+  (mapcar 'dom-texts (dom-elements dom 'itemprop "^ingredients$")))
+
+
+(defun org-chef-steamy-kitchen-extract-servings (dom)
+  "Get the number of servings for a recipe from an steamykitchen DOM."
+  (dom-text (car (dom-elements dom 'itemprop "^recipeYield$"))))
+
+
+(defun org-chef-steamy-kitchen-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an steamykitchen DOM."
+  (dom-text (dom-parent dom (car (dom-elements dom 'itemprop "^prepTime$")))))
+
+
+(defun org-chef-steamy-kitchen-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an steamykitchen DOM."
+  (dom-text (dom-parent dom (car (dom-elements dom 'itemprop "^cookTime$")))))
+
+
+(defun org-chef-steamy-kitchen-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an steamykitchen DOM."
+  nil)
+
+
+(defun org-chef-steamy-kitchen-extract-directions (dom)
+  "Get the directions for a recipe from an steamykitchen DOM."
+  (mapcar #'(lambda (n) (string-trim (dom-texts n)))
+          (org-chef-dom-children (car (dom-by-class dom "^instructions$")))))
+
+
+(defun org-chef-steamy-kitchen-fetch (url)
+  "Given an steamykitchen.com URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url"
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
+
+      `((name . ,(org-chef-steamy-kitchen-extract-name dom))
+        (ingredients . ,(org-chef-steamy-kitchen-extract-ingredients dom))
+        (servings . ,(org-chef-steamy-kitchen-extract-servings dom))
+        (prep-time . ,(org-chef-steamy-kitchen-extract-prep-time dom))
+        (cook-time . ,(org-chef-steamy-kitchen-extract-cook-time dom))
+        (ready-in . ,(org-chef-steamy-kitchen-extract-ready-in dom))
+        (directions . ,(org-chef-steamy-kitchen-extract-directions dom))
+        (source-url . ,url)))))
+
+
+(provide 'org-chef-steamy-kitchen)
+;;; org-chef-steamy-kitchen.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-utils.el b/elpa/org-chef-20181202.2221/org-chef-utils.el
new file mode 100644 (file)
index 0000000..a9aadb2
--- /dev/null
@@ -0,0 +1,65 @@
+;;; org-chef-utils.el --- Utilities for org-chef.    -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Utility functions for org-chef.
+
+;;; Code:
+
+(require 'cl-macs)
+
+(defun org-chef-remove-empty-strings (lst)
+  "Filter out any empty strings in a list of strings (LST)."
+  (seq-filter (lambda (x) (/= (length x) 0)) lst))
+
+
+(defun org-chef-dom-children (dom)
+  "Get the child nodes of the DOM, remove strings."
+  (seq-filter (lambda (x) (not (stringp x)))
+                                  (dom-children dom)))
+
+
+(defun org-chef-insert-org-list (lst &optional bullet)
+  "Insert LST as an ‘org-mode’ plain list.
+
+The optional argument BULLET specifies which type of bullet point
+should be used."
+  (mapcar (lambda (x) (progn (insert (format "%s " (string-trim x)))
+                             (org-cycle)
+                             (org-delete-backward-char 1)
+                             (org-ctrl-c-minus)
+                             (if bullet (org-cycle-list-bullet bullet))
+                             (org-return)))
+          lst))
+
+
+(provide 'org-chef-utils)
+;;; org-chef-utils.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef-wordpress.el b/elpa/org-chef-20181202.2221/org-chef-wordpress.el
new file mode 100644 (file)
index 0000000..fe83157
--- /dev/null
@@ -0,0 +1,113 @@
+;;; org-chef-wordpress.el --- org-chef wordpress fetching.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; Functions for fetching information from wordpress sites.
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'dom)
+
+
+(defun org-chef-wordpress-extract-name (dom)
+  "Get the name of a recipe from an wordpress DOM."
+  (dom-text (car (dom-by-class dom "^wprm-recipe-name"))))
+
+
+(defun org-chef-wordpress-extract-ingredients (dom)
+  "Get the ingredients for a recipe from an wordpress DOM."
+  (mapcar #'(lambda (n) (string-trim (dom-texts n))) (dom-by-class dom "^wprm-recipe-ingredient$")))
+
+
+(defun org-chef-wordpress-extract-servings (dom)
+  "Get the number of servings for a recipe from an wordpress DOM."
+  (dom-texts (car (dom-by-class dom "wprm-recipe-servings$"))))
+
+
+(defun org-chef-wordpress-extract-prep-time (dom)
+  "Get the amount of prep-time for a recipe from an wordpress DOM."
+  (dom-texts (car (dom-by-class dom "^wprm-recipe-time$"))))
+
+
+(defun org-chef-wordpress-extract-cook-time (dom)
+  "Get the amount of cook-time for a recipe from an wordpress DOM."
+  (dom-texts (cadr (dom-by-class dom "^wprm-recipe-time$"))))
+
+
+(defun org-chef-wordpress-extract-ready-in (dom)
+  "Get the total amount of time for a recipe from an wordpress DOM."
+  (dom-texts (caddr (dom-by-class dom "^wprm-recipe-time$"))))
+
+
+(defun org-chef-wordpress-extract-directions (dom)
+  "Get the directions for a recipe from an wordpress DOM."
+  (org-chef-remove-empty-strings (mapcar #'(lambda (n) (string-trim (dom-texts n))) (dom-by-class dom  "^wprm-recipe-instruction$"))))
+
+
+(defun org-chef-is-wordpress-p (dom)
+  "Check if a DOM corresponds to a wordpress website."
+  (dom-by-class dom "^wprm-recipe-container$"))
+
+
+(defun org-chef-wordpress-fetch (url)
+  "Given an wordpress URL, retrieve the recipe information.
+
+This returns an alist with the following keys:
+
+- name
+- ingredients
+- servings
+- prep-time
+- cook-time
+- ready-in
+- directions
+- source-url
+
+If this is not a wordpress site, then return nil."
+  (with-current-buffer (url-retrieve-synchronously url)
+    (let  ((dom (libxml-parse-html-region (point-min) (point-max))))
+
+      (if (org-chef-is-wordpress-p dom)
+          `((name . ,(org-chef-wordpress-extract-name dom))
+            (ingredients . ,(org-chef-wordpress-extract-ingredients dom))
+            (servings . ,(org-chef-wordpress-extract-servings dom))
+            (prep-time . ,(org-chef-wordpress-extract-prep-time dom))
+            (cook-time . ,(org-chef-wordpress-extract-cook-time dom))
+            (ready-in . ,(org-chef-wordpress-extract-ready-in dom))
+            (directions . ,(org-chef-wordpress-extract-directions dom))
+            (source-url . ,url))
+        nil))))
+
+
+(provide 'org-chef-wordpress)
+;;; org-chef-wordpress.el ends here
diff --git a/elpa/org-chef-20181202.2221/org-chef.el b/elpa/org-chef-20181202.2221/org-chef.el
new file mode 100644 (file)
index 0000000..90c4ace
--- /dev/null
@@ -0,0 +1,136 @@
+;;; org-chef.el --- Cookbook and recipe management with org-mode.  -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2018 Calvin Beck
+
+;; Author:  Calvin Beck <hobbesNOSPAMualberta.ca>
+;; URL: https://github.com/Chobbes/org-chef
+;; Created: 2018
+;; Version: 0.1.3
+;; Keywords: convenience, abbrev, outlines, org, food, recipes, cooking
+;; Package-Requires: ((org "0") (emacs "24"))
+
+;; Copyright 2018 Calvin Beck
+
+;; Permission is hereby granted, free of charge, to any person
+;; obtaining a copy of this software and associated documentation
+;; files (the "Software"), to deal in the Software without
+;; restriction, including without limitation the rights to use, copy,
+;; modify, merge, publish, distribute, sublicense, and/or sell copies
+;; of the Software, and to permit persons to whom the Software is
+;; furnished to do so, subject to the following conditions:
+
+;; The above copyright notice and this permission notice shall be
+;; included in all copies or substantial portions of the Software.
+
+;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+;; NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+;; BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+;; ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+;; SOFTWARE.
+
+;;; Commentary:
+
+;; org-chef is a package for managing recipes in org-mode.  One of the
+;; main features is that it can automatically extract recipes from
+;; websites like allrecipes.com
+
+;;; Code:
+
+
+(require 'org-chef-utils)
+(require 'org-chef-all-recipes)
+(require 'org-chef-genius-kitchen)
+(require 'org-chef-simply-recipes)
+(require 'org-chef-martha-stewart)
+(require 'org-chef-budget-bytes)
+(require 'org-chef-cultures-for-health)
+(require 'org-chef-marmiton)
+(require 'org-chef-serious-eats)
+(require 'org-chef-reluctant-gourmet)
+(require 'org-chef-chef-koch)
+(require 'org-chef-steamy-kitchen)
+(require 'org-chef-nytimes)
+(require 'org-chef-saveur)
+(require 'org-chef-wordpress)
+
+
+(defun org-chef-recipe-insert-org (recipe)
+  "Insert a RECIPE as an ‘org-mode’ heading."
+  (org-insert-heading)
+  (insert (cdr (assoc 'name recipe)))
+  (org-return)
+  (org-set-property "source-url" (cdr (assoc 'source-url recipe)))
+  (org-set-property "servings" (cdr (assoc 'servings recipe)))
+  (org-set-property "prep-time" (format "%s" (cdr (assoc 'prep-time recipe))))
+  (org-set-property "cook-time" (format "%s" (cdr (assoc 'cook-time recipe))))
+  (org-set-property "ready-in" (format "%s" (cdr (assoc 'ready-in recipe))))
+  (org-insert-subheading t)
+  (insert "Ingredients")
+  (org-return)
+  (org-return)
+  (org-chef-insert-org-list (cdr (assoc 'ingredients recipe)))
+  (org-return)
+  (org-return)
+  (org-insert-heading)
+  (insert "Directions")
+  (org-return)
+  (org-return)
+  (org-chef-insert-org-list (cdr (assoc 'directions recipe)) "1."))
+
+
+(defun org-chef-recipe-org-string (recipe)
+  "Get an ‘org-mode’ heading string for a RECIPE."
+  (with-temp-buffer (org-mode)
+                    (org-chef-recipe-insert-org recipe)
+                    (buffer-string)))
+
+
+(defun org-chef-match-url (BASE URL)
+  "Match URL against a BASE url."
+  (not (null (string-match-p (regexp-quote BASE) URL))))
+
+
+(defun org-chef-fetch-recipe-specific-url (URL)
+  "Look up a recipe based on a specific URL."
+  (cond
+   ((org-chef-match-url "allrecipes.com" URL) (org-chef-all-recipes-fetch URL))
+   ((org-chef-match-url "geniuskitchen.com" URL) (org-chef-genius-kitchen-fetch URL))
+   ((org-chef-match-url "simplyrecipes.com" URL) (org-chef-simply-recipes-fetch URL))
+   ((org-chef-match-url "marthastewart.com" URL) (org-chef-martha-stewart-fetch URL))
+   ((org-chef-match-url "budgetbytes.com" URL) (org-chef-budget-bytes-fetch URL))
+   ((org-chef-match-url "culturesforhealth.com" URL) (org-chef-cultures-for-health-fetch URL))
+   ((org-chef-match-url "marmiton.org" URL) (org-chef-marmiton-fetch URL))
+   ((org-chef-match-url "seriouseats.com" URL) (org-chef-serious-eats-fetch URL))
+   ((org-chef-match-url "reluctantgourmet.com" URL) (org-chef-reluctant-gourmet-fetch URL))
+   ((org-chef-match-url "chefkoch.de" URL) (org-chef-chef-koch-fetch URL))
+   ((org-chef-match-url "steamykitchen.com" URL) (org-chef-steamy-kitchen-fetch URL))
+   ((org-chef-match-url "nytimes.com" URL) (org-chef-nytimes-fetch URL))
+   ((org-chef-match-url "saveur.com" URL) (org-chef-saveur-fetch URL))
+   (t nil)))
+
+
+(defun org-chef-fetch-recipe (URL)
+  "Look up a recipe at a URL."
+  (let ((fetched-recipe (org-chef-fetch-recipe-specific-url URL)))
+    (if fetched-recipe
+        fetched-recipe
+      (org-chef-wordpress-fetch URL))))
+
+
+(defun org-chef-insert-recipe (URL)
+  "Prompt for a recipe URL, and then insert the recipe at point."
+  (interactive "sRecipe URL: ")
+  (org-chef-recipe-insert-org (org-chef-fetch-recipe URL)))
+
+
+(defun org-chef-get-recipe-from-url ()
+  "Prompt for a recipe URL, and return the ‘org-mode’ string."
+  (let ((URL (read-string "Recipe URL: ")))
+    (org-chef-recipe-org-string (org-chef-fetch-recipe URL))))
+
+
+(provide 'org-chef)
+;;; org-chef.el ends here
diff --git a/elpa/org-chef-readme.txt b/elpa/org-chef-readme.txt
deleted file mode 100644 (file)
index b59d21f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-org-chef is a package for managing recipes in org-mode.  One of the
-main features is that it can automatically extract recipes from
-websites like allrecipes.com