Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. module Recipe
  2. Version = Class.new(Gem::Version)
  3.  
  4. class Definition
  5. attr_reader :options
  6. def initialize(recipe_name, options = {})
  7. @options = options
  8. recipe recipe_name
  9. end
  10.  
  11. def errors
  12. @errors ||= {}
  13. end
  14.  
  15. def recipe(name = nil)
  16. return @recipe if name.nil?
  17. @recipe = name
  18. end
  19.  
  20. def version(version_number = nil)
  21. return @version if version_number.nil?
  22. @version = Version.new(version_number)
  23. rescue => ex
  24. add_error(:version, :format, ex.message)
  25. end
  26.  
  27. private
  28.  
  29. def add_error(field, type, message)
  30. errors[field] ||= {}
  31. errors[field][type] ||= []
  32. errors[field][type] << message
  33. end
  34. end
  35.  
  36. def self.define(name = nil, options = {}, &block)
  37. recipe = Definition.new(name, options)
  38. recipe.instance_exec(&block) if block_given?
  39. loaded_definitions << recipe
  40. recipe
  41. end
  42.  
  43. def self.loaded_definitions
  44. @loaded_definitions ||= []
  45. end
  46. end
  47.  
  48. recipe = Recipe.define "moms spaghetti" do
  49. version "1.3.4"
  50. ingredients do
  51. ingredient "spaghetti" do
  52. grams 100
  53. end
  54. end
  55. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement