Advertisement
Guest User

Untitled

a guest
May 20th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. from validator import Validator
  2. from abc import ABCMeta, abstractmethod
  3. from fileProcessor import FileProcessor
  4.  
  5.  
  6. class AbstractBuilder(metaclass=ABCMeta):
  7. def __init__(self):
  8. self.fileProcessor = FileProcessor()
  9. self.result = ""
  10.  
  11. def get_result(self):
  12. return self.result
  13.  
  14. @abstractmethod
  15. def add_class_name(self):
  16. pass
  17.  
  18. @abstractmethod
  19. def add_attributes(self):
  20. pass
  21.  
  22. @abstractmethod
  23. def add_methods(self):
  24. pass
  25.  
  26. @abstractmethod
  27. def add_relationships(self):
  28. pass
  29.  
  30.  
  31. class PythonClassBuilder(AbstractBuilder):
  32. def check_methods(self, listitem):
  33. if Validator.validate_method_name(listitem):
  34. self.result += '\n'
  35. self.result += 'def ' + listitem + '(self):\n # Todo: inco' \
  36. 'mplete\n pass\n'
  37. else:
  38. self.result += "# method name is invalid\n"
  39.  
  40. def add_methods(self, class_item):
  41. for listItem in self.fileProcessor.get_methods(class_item):
  42. self.check_methods(listItem)
  43.  
  44. def add_relationships(self, class_item, result):
  45. for list_item in self.get_relationship(
  46. self.get_class_name(class_item)):
  47. result += list_item
  48. return result
  49.  
  50. def add_attributes(self, class_item, result):
  51. for listItem in self.get_attributes(class_item):
  52. result = self.check_attributes(listItem, result)
  53. if len(self.get_attributes(class_item)) == 0:
  54. result += " pass\n"
  55. return result
  56.  
  57. def check_attributes(self, listitem, result):
  58. try:
  59. if Validator.validate_attribute_name(listitem):
  60. result += ' self.' + \
  61. listitem + ' = ' + listitem + '\n'
  62. else:
  63. raise NameError('Invalid name: ' + listitem)
  64. except NameError as e:
  65. print(e)
  66. return result
  67.  
  68. def add_class_name(self, class_item):
  69. self.class_name_list.append(self.get_class_name(class_item))
  70. result = "class " + \
  71. self.get_class_name(class_item) + ":\n def __init__(self"
  72. for listItem in self.get_attributes(class_item):
  73. result += ', ' + listItem
  74. result += '):\n'
  75. self.check_class_names(class_item)
  76. return result
  77.  
  78. def check_class_names(self, class_item):
  79. if not Validator.validate_class_name(self.get_class_name(class_item)):
  80. print("Invalid class name: " + self.get_class_name(class_item))
  81.  
  82.  
  83. pythonClassBuilder = PythonClassBuilder()
  84. pythonClassBuilder.add_methods([['class Zoo {\n',
  85. ' name : String\n',
  86. ' location : String\n',
  87. ' add_animal()\n',
  88. ' get_animal()\n',
  89. '}\n'],
  90. ['class Animal {\n',
  91. ' name : String\n',
  92. ' number : Integer\n',
  93. ' __str__()\n',
  94. '}\n']], )
  95. print(pythonClassBuilder.get_result())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement